Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Est-il possible d'affecter une procédure à un objet (bouton, combo, etc...) que l'on vient de créer par programmation ?

21 views
Skip to first unread message

Olivier POUZIN

unread,
Oct 24, 2002, 5:32:32 PM10/24/02
to
Exemple : je génére une fenêtre puis un bouton par programme et j'affecte à
ce dernier une procédure déjà existante dans mon code.

D'avance merci.


Clément Marcotte (MVP)

unread,
Oct 24, 2002, 7:26:31 PM10/24/02
to
Esdt-il possible de faire des titres assez courts pour qu'ils puissent
être lus sans qu'il soit nécessaire d'afficher les propriétés.

--
L'urgent est déjà parti, l'impossible est en train de se faire; pour
les miracles nous demandons 24 heures de plus.

"Olivier POUZIN" <opo...@club-internet.fr> a écrit dans le message de
news: ap9on8$l3i$1...@news-reader10.wanadoo.fr...

Olivier Pouzin

unread,
Oct 25, 2002, 6:25:24 AM10/25/02
to
En fait, je souhaite réaliser cette opération par programmation, sans
opération manuelle. C-a-d :

1 - Je créé un bouton dans une fenêtre vierge par programmation
2 - le bouton ayant été créé et nommé, je lui 'affecte' une procédure
existant dans mon code

Est-ce possible ?

D'avance merci

"Thierry BERTHOLOM" <thierry....@wanadoo.fr> a écrit dans le message
de news: #$fLbVAfCHA.2436@tkmsftngp10...
> Bonjour
>
> un double clic sur le bouton ou autre ouvre la procedure de ce bouton .
>
> il suffit de donner le nom de la procedure existante pour executer celle
ci
>
> Thierry


>
> "Olivier POUZIN" <opo...@club-internet.fr> a écrit dans le message de
news:
> ap9on8$l3i$1...@news-reader10.wanadoo.fr...

Monique Brunel

unread,
Oct 25, 2002, 6:44:31 AM10/25/02
to
Bonjour Thierry,
bienvenue sur mpfe :-)

Alors que tu participes à l'esprit d'entraide de mpfe, tu risques
quelques remontrances...
c'est dommage ;-(
En effet, les fichiers joints ne sont pas souhaités sur le forum. Quand
tu auras lu la charte, tu comprendras pourquoi.

J'espère que les sites proposés dans ce message d'accueil
t'intéresseront? Tu y découvriras des macros, des trucs et astuces, des
classeurs à télécharger...

Pour connaître les habitudes de mpfe (et les erreurs à éviter, comme les
fichiers joints...), tu peux lire ces messages publiés régulièrement
ici, avec l'un de ces intitulés
- FAQ MPFE http://dj.joss.free.fr/netiquet.htm (nétiquette, conseils...)
- [Charte] du forum MPFE http://minilien.com/?ZjmTyyAgbZ
et consulter cette page
http://disciplus.simplex.free.fr/mpfe/connection.htm
(connexion,conseils...), à consulter absolument si tu suis le forum
depuis une page web (la solution la moins efficace et la moins
confortable) ou avec le serveur de Wanadoo (très peu performant quant au
délai d'affichage et au nombre de messages publiés).
Le serveur à utiliser : news.microsoft.com - ou cliquer directement sur
news:microsoft.public.fr.excel

Pour les débutants, voilà 5 bons trucs pour apprendre vite :
- utiliser souvent l'enregistreur de macro et analyser le code obtenu
- utiliser la touche F1 pour appeler l'aide (à propos du mot-clef, en
VBA, sur lequel se trouve le curseur)
- tester et essayer de comprendre des réponses faites à d'autres
- consulter souvent les sites renseignés
- ne jamais hésiter à poser des questions sur le forum

Voici la liste des sites dédiés à Excel, réalisés par des mpfie(ne)s et
que nous devons tous avoir dans nos favoris.
Débutant ou utilisateur confirmé, tu y trouveras de quoi apprendre,
progresser et résoudre bien des problèmes.
(la date d'une mise à jour est signalée par ** ** )
http://dj.joss.free.fr/faq.htm ** 10/10/02 **
la FAQ du forum, mise en oeuvre par Daniel et à lire absolument par tout
nouveau sur mpfe : la bonne manière de participer au forum (charte,
souriettes, abréviations...), liens, bibliographie, les réponses aux
questions le plus souvent posées, des trucs et astuces, un moteur de
recherche interne et externe (Yahoo), une page débutants
http://disciplus.simplex.free.fr/ ** 20/10/02 **
le site humoro-ludique de Misange : une importante rubrique "Trucs et
astuces", des classeurs à télécharger, un glossaire, une page débutants,
des jeux en VBA... et un méta-moteur de recherche sur 6 sites de cette
liste...
mais aussi tout ce qui fait "l'esprit mpfe", les perles, les gifs...
et,sur http://fotoflo.free.fr/ les photos des soupers/dîners de mpfe
http://longre.free.fr/
le site de Laurent, notre Grand Chef à Quatre Plumes : de très nombreux
liens commentés, les macros pointues de Laurent... (techniques de
programmation, calculs de dates et d'heures, Api...)
http://jacxl.free.fr/mpfe/ ** 20/10/02 **
le site de J@C : les graphiques, la bourse, le Web, un cours VBA, un
moteur de recherche à la page Aide... et le trombinoscope des
mpfien(ne)s
http://ericrenaud.free.fr/index.html ** 01/08/02 **
le site d'Eric : particulièrement destiné aux débutants (UserForm...)
http://perso.wanadoo.fr/frederic.sigonneau ** 26/08/01**
le site de Frédéric : gestions de temps, VBA pour Excel... une mine d'or
de macros
http://xlbysteph.free.fr/aideinformatique/web.htm ** 09/07/02 **
le site de Stéphane : cours VBA, Excel 4 (ou 5) et Excel 97/2000...
http://perso.club-internet.fr/bdafonse
le site de Bruno : formules, classeurs à télécharger...
http://cherbe.free.fr/ ** 21/01/02 **
le site de Christian : initiation à Excel, initiation à VBA, Excel
avancé sans VBA... (cours à télécharger)
http://www.ilyapa.net/excel/ ** 22/05/02 **
le site de Pascal : procédures VBA, composants par
l'exemple,calendriers, jeux
http://intendant.free.fr/ ** 13/03/02 **
le site de Thierry : cours VBA (début et perfectionnement), graphique,
Excel en bureautique...
http://www.polykromy.com/ ** 19/10/02 **
le site de Gaëtan : cours sur Excel sans VBA, les couleurs, des astuces
animées...
http://www.excel-downloads.com ** 13/10/02 **
le site de David, des programmes Excel à télécharger
http://mapage.noos.fr/pnoss/excel.html ** 23/08/02 **
le site de Philippe, trucs et astuces, Exoutils (barre d'outils pour
Excel à télécharger)...
http://www.anthony-penel.fr.st
le site d'Anthony : des macros appliquées à la finance
http://www.fundp.ac.be/~jmlamber/
le site de Jean-Marie : initiation VBA, TCD, listes, solveur...
http://www.ibelgique.com/OfficeAssistant ** 08/08/01 **
le site de Bureauticien : nombreux exemples résolus par VBA,fonctions...
http://www.cathyastuce.com/index.htm ** 15/12/01 **
le site de Cathy : cours Excel avec ou sans VBA...
http://perso.wanadoo.fr/jean.duprat
le site de Papy Jean : fiches Excel pour débutants...
http://www.ifrance.com/fleguen/excel.html
le site de Konga : des classeurs d'exercices (fonctions, macros)

Pour une collection très fouillée d'adresses (avec commentaires) :
le classeur de Clément M, à télécharger sur disciplus
Favoris.xls
Et un lien à y ajouter, la liste des constantes intrinsèques de VBA avec
leur valeur numérique (par versions d'Excel) :
http://support.microsoft.com/support/kb/articles/Q112/6/71.ASP
(télécharger: wc0993.exe)

Pour le passage de Excel 4 à Excel 97, un lien proposé par Geo
http://www.microsoft.com/FRANCE/officedev/infotech/info.asp?mar=/FRANCE/
officedev/infotech/MacroXLtoVBA.html
(le lien tient sur plusieurs lignes, il se termine par html)
ou http://minilien.com/?5vyhNUG62R

Enfin, pour retrouver d'anciens messages, tu peux aller sur
http://groups.google.com/advanced_group_search
avec les conseils de Clément M pour obtenir les meilleurs résultats :
--- Là, il y a un écran "bilingue" qui permet de faire une recherche
plus ou moins pointue, selon les informations dont l'on dispose.
Une fois que l'on a repéré un message, il est possible de récupérer
l'ensemble de la ficelle, en cliquant sur "Voyez Fil de Discussion (x
articles)".
Je me suis aperçu que Google fonctionnait très mal quand on fait une
recherche avec un nom qui contient des accents. Il semble donc
préférable d'utiliser l'adresse électronique comme nom d'auteur.
Auteur clement....@sympatico.ca => 3.450 messages
Auteur Clément Marcotte => 1 message
Auteur Clément_Marcotte => 0 message ---

Bonne lecture et à bientôt sur mpfe.

--
Amicalement,
au nom des mpfiens et mpfiennes,
Monique (la Wallonne)
http://users.skynet.be/osga , pour les amateurs d'athlétisme

Dans le message de news: #$fLbVAfCHA.2436@tkmsftngp10,
Thierry BERTHOLOM <thierry....@wanadoo.fr> nous disait :

| Bonjour
|
| un double clic sur le bouton ou autre ouvre la procedure de ce bouton
| .
|
| il suffit de donner le nom de la procedure existante pour executer
| celle ci
|
| Thierry
|
| "Olivier POUZIN" <opo...@club-internet.fr> a écrit dans le message
| de news: ap9on8$l3i$1...@news-reader10.wanadoo.fr...

Monique Brunel

unread,
Oct 25, 2002, 6:37:34 AM10/25/02
to
Bonjour Olivier,
bienvenue sur mpfe :-)

Sur les sites proposés dans ce message d'accueil, tu découvriras des
cours (avec ou sans VBA), des classeurs d'exemples à télécharger, des
macros, des trucs et astuces...
Par exemple, la manipulation que tu veux faire est expliquée là
http://dj.joss.free.fr/vbanul.htm

Dans le message de news: ap9on8$l3i$1...@news-reader10.wanadoo.fr,
Olivier POUZIN <opo...@club-internet.fr> nous disait :

Monique Brunel

unread,
Oct 25, 2002, 6:49:05 AM10/25/02
to
Il suffisait de le dire Olivier...
Va voir là
http://disciplus.simplex.free.fr/xl/barres.htm#macroboutonvba
Est-ce ce que tu veux ?

--
Amicalement,
Monique (la Wallonne)
http://users.skynet.be/osga , pour les amateurs d'athlétisme...
votre site dans l'annuaire de l'athlétisme ?


Dans le message de news: OAVWmCBfCHA.2496@tkmsftngp11,
Olivier Pouzin <olivier...@ifrance.com> nous disait :

Olivier Pouzin

unread,
Oct 28, 2002, 6:18:36 AM10/28/02
to
Merci de votre réponse, le site est trés intéressant :-)

Toutefois, quelque chose continue à m'échapper :

Sub test()
Dim tabl(10) As Object
Dim hop, hip As String
Dim nb As Long
Set tabl(1) = UserForm1.Controls.Add("Forms.CheckBox.1", "CB1", True)
tabl(1).Caption = "Ajout CheckBox 1"
For f = 2 To 3
hop = "Forms.CheckBox." & CStr(f)
hip = "CB" & CStr(f + 1)
Set tabl(f) = UserForm1.Controls.Add("Forms.CheckBox.1", hip, True)
tabl(f).Left = 40
tabl(f).Top = 40
tabl(f).Caption = "Ajout CheckBox" & CStr(f + 1)
tabl(f).OnAction = "test3"
Next
UserForm1.Show
nb = UserForm1.Controls.Count
End Sub

Excel bute sur :
tabl(f).OnAction = "test3"
erreur 438 propriété ou méthode non gérée

Comment faire pour affecter une procédure à la CheckBox ??

D'avance merci

Olivier POUZIN

"Monique Brunel" <fa29...@skynet.be> a écrit dans le message de news:
OGHfQLBfCHA.1992@tkmsftngp11...

Monique Brunel

unread,
Oct 28, 2002, 2:02:41 PM10/28/02
to
Désolée Olivier, mais je suis obligée de passer la main.


Ooh, les pros... vous êtes là ?

--
Amicalement,
Monique (la Wallonne)
http://users.skynet.be/osga , pour les amateurs d'athlétisme...
votre site dans l'annuaire de l'athlétisme ?


Dans le message de news: OiOwTOnfCHA.2556@tkmsftngp09,


Olivier Pouzin <olivier...@ifrance.com> nous disait :

| Merci de votre réponse, le site est trés intéressant :-)

Frédéric Sigonneau

unread,
Oct 28, 2002, 4:35:26 PM10/28/02
to
Bonsoir,

Je pense que tu ne peux pas affecter à une checkbox autre chose qu'un événement,
qui lui-même pourrait lancer la procédure de ton choix.
Tu devrais pouvoir écrire en VBA un ou des événement(s) CheckBox(x)_Change, par
exemple, dans le module de code de ton Userform. Je n'ai pas de code directement
lié à ce cas de figure sous la main, mais ci-dessous 3 procédures qui pourraient
te donner un coup de main pour démarrer.

FS
--
Frédéric Sigonneau [né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau

'======================= 1
'ajoute un commandbutton à un userform existant
'(avec le code de son événement Click)

Sub AddBouton()
Dim Usf As Object, btn As Object
Set Usf = ThisWorkbook.VBProject.VBComponents("Userform1")
Set btn = Usf.Designer.Controls.Add("forms.commandbutton.1")
With btn
.Caption = "Cliquer ici !..."
.Left = 60: .Top = 50
End With
With Usf.CodeModule
X = .CountOfLines
.insertlines X + 1, "Sub CommandButton1_Click()"
.insertlines X + 2, " MsgBox ""coucou"""
.insertlines X + 3, " unload Me"
.insertlines X + 4, "End Sub"
End With
VBA.UserForms.Add (Usf.Name)
UserForms(UserForms.Count - 1).Show
End Sub 'fs
'=======================

'====================== 2
'créer ou modifier avec VBA le code de procédures événementielles
'(feuille de calcul ou classeur)

Sub AddEventToModule()
'D'après Jim Rech, mpep
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim S As String

'dans un module de feuille de calcul

'le texte du code de l'événement
S = S & "Range(""A1"").Value=40" & vbLf
S = S & "Msgbox ""Terminé"""

With ActiveWorkbook.VBProject.VBComponents("Feuil1").CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("Activate", "WorkSheet")
'insérer le texte du code
.InsertLines DebutCode + 1, S
'modifier la 2ème ligne du texte du code
.ReplaceLine DebutCode + 2, "Msgbox ""Coucou"""
End With
S = ""

'dans le module ThisWorkbook

'le texte du code de l'événement
S = S & "If Range(""A1"").Value=40 Then" & vbLf
S = S & "Msgbox ""40 an A1 !""" & vbLf
S = S & "End If"

With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
'nom de l'événement, type de module concerné ("Worksheet")
'n° ligne du début de la proc
DebutCode = .CreateEventProc("SheetChange", "Workbook")
'insérer le texte du code
.InsertLines DebutCode + 1, S
End With

End Sub
'========================

'======================= 3
'Cet exemple consiste à ajouter une nouvelle feuille, un bouton
'de commande sur cette feuille et le code de l'événement Click
'du bouton.
'Denis Michon, mpfe

Sub Ajouter_Feuille_Bouton()
Dim NouvelleFeuille As Worksheet, NouveauBouton As OLEObject
Dim Code$, NextLine&

' Ajoute une Nouvelle feuille
Set NouvelleFeuille = Sheets.Add

' Ajoute un bouton de Commande
Set NouveauBouton = NouvelleFeuille.OLEObjects.Add _
("Forms.CommandButton.1")
With NouveauBouton
.Left = 4
.Top = 4
.Width = 100
.Height = 30
.Object.Caption = "Retour feuille 1..."
End With

' Comment ajouter le code se rapportant au bouton...
Code = "Sub CommandButton1_Click()" & vbCrLf
Code = Code & " On Error Resume Next" & vbCrLf
Code = Code & " Sheets(""Feuil1"").Activate" & vbCrLf
Code = Code & " If Err <> 0 Then" & vbCrLf
Code = Code & " MsgBox ""Impossible d'activer la feuille1.""" & vbCrLf
Code = Code & " End If" & vbCrLf
Code = Code & "End Sub"

' Ecriture du code dans le module de la feuille (fs)
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
NextLine = .CountOfLines + 1
.InsertLines NextLine, Code
End With

End Sub
'========================

Olivier Pouzin a écrit :

0 new messages