Appel d'une macro "permanente"
Résolu/Fermé
geo3701
Messages postés
58
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
8 août 2017
-
23 avril 2013 à 16:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 24 avril 2013 à 17:17
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 24 avril 2013 à 17:17
A voir également:
- Appel d'une macro "permanente"
- Appel anonyme - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro recorder - Télécharger - Confidentialité
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
Modifié par pijaku le 23/04/2013 à 17:11
Modifié par pijaku le 23/04/2013 à 17:11
Bonjour,
Question préalable : à quoi peut bien servir de stocker les feuilles dans une collection alors qu'elles le sont déjà par définition ?
Extrait de l'aide VBA :
L'objet Worksheet appartient à la collection Worksheets. La collection Worksheets contient tous les objets Worksheet d'un classeur.
L'objet Worksheet appartient également à la collection Sheets. La collection Sheets contient toutes les feuilles du classeur (aussi bien les feuilles de graphique que les feuilles de calcul).
Cordialement,
Franck P
Question préalable : à quoi peut bien servir de stocker les feuilles dans une collection alors qu'elles le sont déjà par définition ?
Extrait de l'aide VBA :
L'objet Worksheet appartient à la collection Worksheets. La collection Worksheets contient tous les objets Worksheet d'un classeur.
L'objet Worksheet appartient également à la collection Sheets. La collection Sheets contient toutes les feuilles du classeur (aussi bien les feuilles de graphique que les feuilles de calcul).
Cordialement,
Franck P
geo3701
Messages postés
58
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
8 août 2017
1
23 avril 2013 à 17:21
23 avril 2013 à 17:21
En fait chaque feuille a un nom spécifique. Chaque collection regroupe certaines de ces feuilles (pas toutes...).
Concrètement j'ai 9 onglets, dans ces neuf onglets, 5 appartiennent a une collection, et d'ailleurs, 3 onglets de cette collection sont dans une deuxieme collection..
Concrètement j'ai 9 onglets, dans ces neuf onglets, 5 appartiennent a une collection, et d'ailleurs, 3 onglets de cette collection sont dans une deuxieme collection..
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
23 avril 2013 à 17:22
23 avril 2013 à 17:22
Question complémentaire : Tu te sert de ces collections pour quoi?
En fait, selon l'utilité d'une collection ou non, nous saurons t'orienter vers une solution.
En fait, selon l'utilité d'une collection ou non, nous saurons t'orienter vers une solution.
geo3701
Messages postés
58
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
8 août 2017
1
24 avril 2013 à 13:38
24 avril 2013 à 13:38
je m'en sers pour faire du for each.
for each sh in on_tous
.
.
next sh
for each sh in on_tous
.
.
next sh
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
23 avril 2013 à 17:29
23 avril 2013 à 17:29
La réponse généraliste à ta question est :
1- tu places ton code récurrent dans un module standard
ex :
2- tu appeles cette macro de ou tu veux
ex :
1- tu places ton code récurrent dans un module standard
ex :
Sub RempliColl() ong_tous.Add Sheets("feuil1") ong_tous.Add Sheets("feuil2") ong_tous.Add Sheets("feuil3") ong_tous.Add Sheets("feuil4") ong_tous.Add Sheets("feuil5") ong_tech.Add Sheets("feuil3") ong_tech.Add Sheets("feuil4") ong_tech.Add Sheets("feuil5") End Sub
2- tu appeles cette macro de ou tu veux
ex :
Sub Workbook_open() Call RempliColl End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
Modifié par pijaku le 24/04/2013 à 13:54
Modifié par pijaku le 24/04/2013 à 13:54
Bonjour,
J'ai compris alors.
Plutôt que d'utiliser des Objets Collection, je te recommande d'utiliser des petites fonctions qui vont considérablement alléger ton code.
Par exemple, pour ne s'occuper que des feuilles paires ou que des feuilles impaires :
Fonctions à placer dans un module standard (pas un module de feuille, ni module ThisWorkbook, ni module de classe!)
Et donc, ensuite, pour "appeler" uniquement les feuilles qui t'intéressent, dans une Sub, dans un événement (Workbook_Open, UserForm_Initialize, etc...) :
Cordialement,
Franck P
J'ai compris alors.
Plutôt que d'utiliser des Objets Collection, je te recommande d'utiliser des petites fonctions qui vont considérablement alléger ton code.
Par exemple, pour ne s'occuper que des feuilles paires ou que des feuilles impaires :
Fonctions à placer dans un module standard (pas un module de feuille, ni module ThisWorkbook, ni module de classe!)
Function TabFeuillesPaires() As Variant TabFeuillesPaires = Array("Feuil2", "Feuil4", "Feuil6", "Feuil8", "Feuil10", "Feuil12", "Feuil14") End Function
Function TabFeuillesImpaires() As Variant TabFeuillesImpaires = Array("Feuil1", "Feuil3", "Feuil5", "Feuil7", "Feuil9", "Feuil11", "Feuil13") End Function
Et donc, ensuite, pour "appeler" uniquement les feuilles qui t'intéressent, dans une Sub, dans un événement (Workbook_Open, UserForm_Initialize, etc...) :
Sub Test() Dim Wsh As Worksheet For Each Wsh In ThisWorkbook.Worksheets(TabFeuillesPaires) Debug.Print Wsh.Name Next End Sub
Cordialement,
Franck P
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
geo3701
Messages postés
58
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
8 août 2017
1
24 avril 2013 à 15:39
24 avril 2013 à 15:39
"un module standard ,pas un module de feuille, ni module ThisWorkbook, ni module de classe!"
Quelle est la différence entre chaque ? (désolé mais je débute...)
Quelle est la différence entre chaque ? (désolé mais je débute...)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
24 avril 2013 à 15:53
24 avril 2013 à 15:53
Un module de feuille : fait référence à une feuille spécifiquement. Tu y accèdes :
- sous VBE en double cliquant sur "Feuil1" (par exemple) dans la fenêtre VBA-Project (en haut à gauche de ta fenêtre VBE)
- depuis ta feuille en cliquant droit sur l'onglet / visualiser le code.
C'est dans ce type de module que tu fais intervenir les événements de ta feuille : Selection_Change(), Change() etc...
Le module ThisWorkbook. Tu y accèdes, sous VBE en double cliquant sur ThisWorkbook dans la fenêtre VBA-Project (en haut à gauche de ta fenêtre VBE)
Ce module te donne accès aux événements liés au classeur :
WorkBooks_Open() : lors de l'ouverture du classeur
Before_Close : avant la fermeture
Tu peux donc déclencher automatiquement, grâce à ces événements, des codes.
Par exemple : enregistrer systématiquement avant la fermeture.
Les modules de classe, c'est un poil plus compliqué. Ils servent à créer des classes. Un peu de lecture à ce sujet.
Sinon, la macro fonctionne????
- sous VBE en double cliquant sur "Feuil1" (par exemple) dans la fenêtre VBA-Project (en haut à gauche de ta fenêtre VBE)
- depuis ta feuille en cliquant droit sur l'onglet / visualiser le code.
C'est dans ce type de module que tu fais intervenir les événements de ta feuille : Selection_Change(), Change() etc...
Le module ThisWorkbook. Tu y accèdes, sous VBE en double cliquant sur ThisWorkbook dans la fenêtre VBA-Project (en haut à gauche de ta fenêtre VBE)
Ce module te donne accès aux événements liés au classeur :
WorkBooks_Open() : lors de l'ouverture du classeur
Before_Close : avant la fermeture
Tu peux donc déclencher automatiquement, grâce à ces événements, des codes.
Par exemple : enregistrer systématiquement avant la fermeture.
Les modules de classe, c'est un poil plus compliqué. Ils servent à créer des classes. Un peu de lecture à ce sujet.
Sinon, la macro fonctionne????
geo3701
Messages postés
58
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
8 août 2017
1
24 avril 2013 à 16:54
24 avril 2013 à 16:54
J'ai mis ma fonction dans le module où j'ai toutes mes macros et c'est PARFAIT!
Merci beaucoup de ton aide
Merci beaucoup de ton aide
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
24 avril 2013 à 17:17
24 avril 2013 à 17:17
de rien!
A+
A+