cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 févr. 2008 à 20:57
Comme Pile_Poil le suggère, appelle ta macro avec seulement son nom, si cette macro est dans un Module et n'est pas délarée Private.
Exemple:
Tu mets un bouton sur ton UserForm et dans le code Click de ce bouton, tu écris
Private Sub CommandButton1_Click()
Macro1
Macro2
Macro3
End sub
Ça exécutera les 3 macros une après l'autre
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 3 févr. 2008 à 10:10
lol!
un check box quand tu cliques dessus c'est un "sub checkbox_click() "
et la tu commence à tester la valeur de ce check box anvant de lancer ta macro si la valeur est la bonne
tu as un moyen simple de savoir la syntaxe d'un sub pour un objet
quand en creation tu double cliques sur l'objet cela ouvre la page de code dans la procédure sub par défaut pour cet objet
donc tu n'aurais jamais du avoir un "Sub CheckBox1()" qui ne veut rien dire
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 3 févr. 2008 à 10:57
lol c'est donc bien dans l'évenement clic du bouton exécuter qu'il faut mettre ta commande de macro
sous la forme
If checkbox.value = True Then mamacro1 else mamacro2
ainsi tu as une macro exécuté si c'est vrai et une autre si c'est faux
maintenant si tu n'envisage pas de faire quoi que ce soit tu suprime le "Else" et tout ce qui suit
si tu as plusieurs actions soumises à la condition cela s'écrirait
If checkbox.value = True Then
mamacro1
action1
action2
else
mamacro2
action3
etc...
end if
genre le truc sur lequel je suis en train de bosser ou je cascade à loisir des test conditionels à l'intérieurs de boucles
pour remplir un tableau d'infos contenues dans un dessin
For Each ACADobj In toto 'liste les appareils existants dans le dessin
If StrComp(ACADobj.EntityName, "AcDbBlockReference", 1) = 0 Then
If ACADobj.Name = "appareil" Then
ObjData = ACADobj.GetAttributes
For I = 0 To UBound(ObjData)
ExistTab(I, UBound(ExistTab, 2)) = ObjData(I).TextString
Next I
ReDim Preserve ExistTab(10, UBound(ExistTab, 2) + 1)
End If
End If
Next
ReDim Preserve ExistTab(10, UBound(ExistTab, 2) - 1)
important : quand tu as des action imbriquées comme dans mon exemple n'oublie pas de te servir de la touche tab comme je l'ai fait sinon tu vas vite ne plus rien comprendre à ce que tu écris
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 2 févr. 2008 à 15:20
si dans module1 ta macro s'apelle: sub mamacro( )
il te suffit dans ton userform d'écrire: mamacro
par contre si c'est l'iverse il faut ecrire userform.mamacro
tu peux aussi utiliser l'instruction call mais va regarder dans l'aide la syntaxe exacte !
Vous n’avez pas trouvé la réponse que vous recherchez ?
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 2 févr. 2008 à 16:15
PCPT
en l'occurence que ce soit du VBA ou du VB6 le fonctionnement est exactement le meme
par contre si il veut piloter du VBA depuis du VB6 il faut un peut plus d'infos pour connaitre la méthode à utiliser car là ça devient de l'automation
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 2 févr. 2008 à 17:01
precises ce qui du VB6 et du VBA sinon tu ne t'en sortira jamais
car pour le moment tu nous à dit j'ai un animal qui ne veut pas manger la soupe
sans nous dire quel genre d'animal ni quel genre de soupe !
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 2 févr. 2008 à 21:07
MPi c'est clair que c'est sa solution si il est bien dans du VBA mais je crains qu'il soit dans du VBA pour une partie et du VB6 pour l'autre
a propos à mon probleme de vitesse j'ai trouvé la solution !!!!
plus qu'une seule ligne et du coup ça fonce !!!!
feuille.Range(feuille.Cells(1, 1), feuille.Cells(UBound(extrtab2, 1) + 1, UBound(extrtab2, 2) + 1)) = extrtab2()
cette ligne à la place de ma double boucle ça faint moins de ligne et plus de vitesse
JLR59
Messages postés21Date d'inscriptionsamedi 2 février 2008StatutMembreDernière intervention 2 avril 2009 3 févr. 2008 à 09:28
Yes!!!
Merci beaucoup MPi, Pile-Poil et les autres...
ça marche.
J'ai fait exactement ce que tu as décris plus haut,
Private Sub CommandButton1_Click()
Macro1
Macro2
Macro3
End sub
Et tout à fonctionné
A +
JLR59
Messages postés21Date d'inscriptionsamedi 2 février 2008StatutMembreDernière intervention 2 avril 2009 3 févr. 2008 à 10:04
Mais si je veux faire démarrer ma macro à partir d'un "CheckBox" faisant partie d'une série de choix sur mon"UserForm"?
Ce qui suit ne fonctionne pas....?
Sub CheckBox1()
If Macro1 = True Then
Macro2
End If
End Sub
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 3 févr. 2008 à 10:17
par contre je te déconseille de transformer un checkbox qui est un objet de selection d'option en un organe de commande pour lancer ta macro ce n'est pas logique
JLR59
Messages postés21Date d'inscriptionsamedi 2 février 2008StatutMembreDernière intervention 2 avril 2009 3 févr. 2008 à 10:39
Finallement ce n'est pas encore ça.
Je ne veux justement pas que le checkbox commande la macro mais que suivant la condition "True Ten" du checkbox lorsque je clic sur un bouton "Executer" la macro se lance.
JLR59
Messages postés21Date d'inscriptionsamedi 2 février 2008StatutMembreDernière intervention 2 avril 2009 3 févr. 2008 à 10:53
J'ai essayé un truc comme ça mais ça ne va pas.
Mon userform contient un bouton Execute_Click pour l'opération suivante.
Sub Execute_Click ()
If mamacro1 = True Then (chois de mon checkbox)
Mamacro2
End If
End Sub
J-Louis
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 3 févr. 2008 à 11:11
quand tu as un doute sur la façon d'écrire une ligne de code cliques sur le mot et fait F1 l'aide s'ouvrira à la page qui va bien si tu as cliqué sur un mot clé connu et te donneras des exemples !