Exécuter plusieurs procèdures Sub à la suite via un CommandButton

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

11 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 avril 2007 à 21:15
"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~
  
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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 #
0
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007
29 avril 2007 à 20:40
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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 #
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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~
  
0
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 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:


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




 


 


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

MPi
0
Stephi83 Messages postés 19 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 29 avril 2007
29 avril 2007 à 22:07
C'est vraiment sympa de donner toutes ces précisions, encore merci
Stephi83
0
Rejoignez-nous