Exécuter plusieurs procèdures Sub à la suite via un CommandButton [Résolu]

Signaler
Messages postés
19
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
29 avril 2007
-
Messages postés
19
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
29 avril 2007
-
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

11 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
"la page code de chacune de ces feuilles"



>> place tes codes citées au dessus dans un Module

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
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 #
Messages postés
19
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
29 avril 2007

J'ai un message qui me dit que ma procèdure est non définie.
Où doit être écrit l'appel de procèdure, dans le module, dans une feuille ?
Merci
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
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 #
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
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~
  
Messages postés
19
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
29 avril 2007

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:


Sub Inventaire_SophisADEE()


    Call Inventaire_ADEE


    Call Fonds_ValoADEE


    Call Couleur_Fonds_manquantsADEE


    Call Copie_Fonds_manquantsADEE


End Sub


Sub CopieInventaire_SophisADEE()
    
       Call Defusionne_CaceisADEE


       Call poidsADEE
   


       Call CopieValo_SophisADEE


       Call CopieCours_SophisADEE


       Call CopieQté_SophisADEE


       Call Ecart_CoursADEE


       Call PoidsEcart_CoursADEE


       Call Ecart_QtéADEE


       Call Ecart_ADEE


       Call PoidsEcart_TotalADEE




End Sub

 Sub Ordres_SophisADEE()

         Call Ordres_ADEE


         Call Trier_OrdresADEE


         Call Insérer_LigneADEE


         Call Centrer_OrdresADEE


      Call Copie_OrdresADEE




End Sub




 


 


 
Messages postés
19
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
29 avril 2007

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.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
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~
  
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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.

MPi
Messages postés
19
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
29 avril 2007

C'est vraiment sympa de donner toutes ces précisions, encore merci
Stephi83