Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de Call (proceduremodule)

4 réponses
Avatar
ManBas
Bonjour à tous,
Je ne connais pas la difference entre procedure et module, ce qui me conduit
à l'échec suivant.
J'ai écris des macros (d'une longueur certaine), qui fonctionnent trés bien,
dans des modules. Elles sont elles-mêmes imbriquées les unes aux autres par
des fonctions Call.
Pour contraindre l'utilisateur à passer par ces codes, je voulais les mettre
sur un bouton "quitter" d'un formulaire "sans croix", avec la fonction Call.
Et là (bien sûr pour vous qui me lisez) ça ne marche pas: erreur de
compilation, variable ou procédure attendue et non un module.
Si je recopie mes macros directement dans le bouton (sans Call) je pense
que ça va marcher. Mais je souhaitais "aérer" le code car il s'agit d'un
userform avec un multipage (donc longueur de code ++++).
Ai-je une autre solution?
Merci de votre aide.

4 réponses

Avatar
Ange Ounis
Je ne connais pas la difference entre procedure et module


Sub essai()
MsgBox "salut"
End Sub

Ces 3 lignes constituent une procédure (procédure, macro, routine c'est la même
chose). Tu les écris dans un module (ordinaire si je lis bien ta question).

Si ton bouton Quitter est un CommandButton posé sur un Userform, dans le module
de code de cet Userform tu peux exécuter cette procédure avec ce genre de code :

Private Sub CommandButton1_Click()
essai
End Sub

Ces 3 lignes constituent également une procédure, dite événementielle : elle est
exécutée en réponse à un événement. C'est par leur intermédiaire que le
programmeur contrôle le comportement d'Excel (les fonctions personnalisées VBA
le permettent également).

----------
Ange Ounis
----------

Bonjour à tous,
Je ne connais pas la difference entre procedure et module, ce qui me conduit
à l'échec suivant.
J'ai écris des macros (d'une longueur certaine), qui fonctionnent trés bien,
dans des modules. Elles sont elles-mêmes imbriquées les unes aux autres par
des fonctions Call.
Pour contraindre l'utilisateur à passer par ces codes, je voulais les mettre
sur un bouton "quitter" d'un formulaire "sans croix", avec la fonction Call.
Et là (bien sûr pour vous qui me lisez) ça ne marche pas: erreur de
compilation, variable ou procédure attendue et non un module.
Si je recopie mes macros directement dans le bouton (sans Call) je pense
que ça va marcher. Mais je souhaitais "aérer" le code car il s'agit d'un
userform avec un multipage (donc longueur de code ++++).
Ai-je une autre solution?
Merci de votre aide.




Avatar
ManBas
Bonjour Ange Ounis,
Merci de ta réponse.

Sub essai()
Msgbox "salut"
Call Macro1
end sub

...plante sur Call Macro1.
Macro1 est un module constitué par exemple avec:

Sub Macro1()
msgbox "hello"
Call Macro2
end sub

Macro1 et Macro2 sont des modules qui fonctionnent bien.


"Ange Ounis" a écrit dans le message de news:

Je ne connais pas la difference entre procedure et module


Sub essai()
MsgBox "salut"
End Sub

Ces 3 lignes constituent une procédure (procédure, macro, routine c'est la
même chose). Tu les écris dans un module (ordinaire si je lis bien ta
question).

Si ton bouton Quitter est un CommandButton posé sur un Userform, dans le
module de code de cet Userform tu peux exécuter cette procédure avec ce
genre de code :

Private Sub CommandButton1_Click()
essai
End Sub

Ces 3 lignes constituent également une procédure, dite événementielle :
elle est exécutée en réponse à un événement. C'est par leur intermédiaire
que le programmeur contrôle le comportement d'Excel (les fonctions
personnalisées VBA le permettent également).

----------
Ange Ounis
----------

Bonjour à tous,
Je ne connais pas la difference entre procedure et module, ce qui me
conduit à l'échec suivant.
J'ai écris des macros (d'une longueur certaine), qui fonctionnent trés
bien, dans des modules. Elles sont elles-mêmes imbriquées les unes aux
autres par des fonctions Call.
Pour contraindre l'utilisateur à passer par ces codes, je voulais les
mettre sur un bouton "quitter" d'un formulaire "sans croix", avec la
fonction Call.
Et là (bien sûr pour vous qui me lisez) ça ne marche pas: erreur de
compilation, variable ou procédure attendue et non un module.
Si je recopie mes macros directement dans le bouton (sans Call) je pense
que ça va marcher. Mais je souhaitais "aérer" le code car il s'agit d'un
userform avec un multipage (donc longueur de code ++++).
Ai-je une autre solution?
Merci de votre aide.




Avatar
jps
bonjour ManBas
ceci marche très bien chez moi

Sub Macro1()
Range("A1") = "tutu"
Call Macro2
End Sub

Sub Macro2()
MsgBox "hello"
Range("B1").Select
ActiveCell.FormulaR1C1 = "tata"

End Sub
Sub essai()
MsgBox "salut"
Call Macro1
End Sub

pas chez toi?
jps

"ManBas" a écrit dans le message de news:

Bonjour Ange Ounis,
Merci de ta réponse.

Sub essai()
Msgbox "salut"
Call Macro1
end sub

...plante sur Call Macro1.
Macro1 est un module constitué par exemple avec:

Sub Macro1()
msgbox "hello"
Call Macro2
end sub

Macro1 et Macro2 sont des modules qui fonctionnent bien.


"Ange Ounis" a écrit dans le message de news:

Je ne connais pas la difference entre procedure et module


Sub essai()
MsgBox "salut"
End Sub

Ces 3 lignes constituent une procédure (procédure, macro, routine c'est
la même chose). Tu les écris dans un module (ordinaire si je lis bien ta
question).

Si ton bouton Quitter est un CommandButton posé sur un Userform, dans le
module de code de cet Userform tu peux exécuter cette procédure avec ce
genre de code :

Private Sub CommandButton1_Click()
essai
End Sub

Ces 3 lignes constituent également une procédure, dite événementielle :
elle est exécutée en réponse à un événement. C'est par leur intermédiaire
que le programmeur contrôle le comportement d'Excel (les fonctions
personnalisées VBA le permettent également).

----------
Ange Ounis
----------

Bonjour à tous,
Je ne connais pas la difference entre procedure et module, ce qui me
conduit à l'échec suivant.
J'ai écris des macros (d'une longueur certaine), qui fonctionnent trés
bien, dans des modules. Elles sont elles-mêmes imbriquées les unes aux
autres par des fonctions Call.
Pour contraindre l'utilisateur à passer par ces codes, je voulais les
mettre sur un bouton "quitter" d'un formulaire "sans croix", avec la
fonction Call.
Et là (bien sûr pour vous qui me lisez) ça ne marche pas: erreur de
compilation, variable ou procédure attendue et non un module.
Si je recopie mes macros directement dans le bouton (sans Call) je
pense que ça va marcher. Mais je souhaitais "aérer" le code car il
s'agit d'un userform avec un multipage (donc longueur de code ++++).
Ai-je une autre solution?
Merci de votre aide.








Avatar
Eric
Bonjour,

Apparemment les modules portent les même noms que les procédures, ce qui
me semble être à l'origine du plantage.
Renommer les modules par ex comme modMacro1,... et ça devrait marcher.



Sub essai()
Msgbox "salut"
Call Macro1
end sub

...plante sur Call Macro1.
Macro1 est un module constitué par exemple avec:

Sub Macro1()
msgbox "hello"
Call Macro2
end sub

Macro1 et Macro2 sont des modules qui fonctionnent bien.



--
A+
Eric
http://www.mpfa.info/