Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007
-
29 avril 2007 à 19:15
Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007
-
29 avril 2007 à 22:07
Bonjour,
C'est certainement une question bête mais j'aimerais savoir comment éxecuter plusieurs procèdures sub à la suite et les associer à un bouton.
En fait, j'ai déjà fait un bidouillage qui marche mais je pense qu'on peut faire plus propre...
Ma méthode est la suivante : je mets plusieurs procèdures sub à la suite l'une de l'autre, je retire les sub et les end sub et je les remplace par un commentaire (sinon je suis complétement perdue évidemment), et je donne un nom de procèdure à l'ensemble.
Puis j'associe cette procèdure à un CommandButton.
Je pense qu'il y a mieux. Pouvez-vous m'aide ?
Merci
Stephi83
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 avril 2007 à 19:27
Ta solution n'est valable que si l'ensemble des sub ainsi traitées seront systématiquement toutes appelées les unes après les autres et dans le même ordre
Dans un cas contraire, il te suffit de mettre dans ton bouton les appels aux sub, les uns après les autres
Private Sub Command1_Click()
Call toto1
Call toto2
Call toto3
If MsgBox("Coucou, déjà 3 sub d'appelées, on continu ?", vbQuestion + vbYesNo, "Tout de suite, la suite") = vbYes Then
Call toto4
Call toto5
Call toto6
Call toto7
End If
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]
Dans cet exemple, toto1 à toto7 étant les différentes sub à appeler
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 29 avril 2007 à 20:50
Bonsoir,
Il sera prudent, afin d'éviter une très longue discussion
1) que tu nous fasses ici l'inventaire (nomp et emplacement) des procédures que tu appelles
2) que tu nous montre le code d'appel (depuis le début de l'événement jisqu'à sa fin).
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 avril 2007 à 21:03
Il est évident aussi que mon code n'est qu'un exemple d'illustration. LEs procédures Totox indiquées ne sont valable que pour ce code d'exemple. Il va sans dire (enfin non apparement il faut le dire puisque c'est ce que je suis entrain de faire) que dans ton code perso tu dois remplacer toto1 à toto7 par le nom de tes propres procédures.
Et t'en que j'y suis, le test et l'affachage de la messagebox est un petiot clin d'oeil pour mon exemple. Si tu n'en a pas besoin il ne faut pas la mettre.
Maintenant si le problème est ailleurs, seul ton code pourra nous éclairer.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 avril 2007 à 21:05
Salut,
sur l'exemple de Casy, soit les Sub toto sont en Private, et se trouve dans le Module de ta Form / UserForm (là où se trouve ton bouton), soit elles doivent être dans un module normal, et de type Public
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007 29 avril 2007 à 21:13
J'ai un classeur à 3 feuilles et j'ai écrit plusieurs petites procèdures dans la page code de chacune de ces feuilles (les données traitées sont prises dans la feuille concernée) et il y a interaction entre les feuilles.
Je fais mon appel de procèdure dans ThisWorkbook et je regroupe par feuille concernée:
Stephi83
Messages postés19Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention29 avril 2007 29 avril 2007 à 21:49
Si j'ai bien compris, les procèdures doivent être dans un module
et c'est dans ce module qu'on les appelle.
ca a l'air de marcher.
par contre, est-ce qu'on est obligé d'avoir un module par feuille ? si je mélange les procèdures de plusieurs feuilles, ca bug.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 avril 2007 à 21:56
Oui, c'est obligé.
Dans le Module d'une feuille tu as un tas d'évènements (SelectionChange, Change, Activate, etc..), elles ne concernent que ta feuille.
Pour travailler avec les toutes feuilles différentes, il faut reproduire le code dans chaque Module de tes feuilles. Suivant les cas, il y a aussi le Module ThisWorkbook, et des évènements communs pour toutes tes feuilles avec l'objet WorkBook.
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 29 avril 2007 à 22:01
Tu n'as besoin que d'un module standard (.bas) pour y stocker toutes tes procédures. Tu pourrais en avoir plusieurs, mais un seul est nécessaire.
Par contre, dans le code de chacune de tes procédures, tu devras être prudente avec les Range, Cells, Activesheet,... Assure-toi que le nom des feuilles est bien inscrit si nécessaire pour éviter de lire ou écrire des données des mauvaises feuilles.