Appliquer ma macro a toutes les feuilles de mon classeur (actif)

remibeginner - 4 janv. 2013 à 10:18
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 4 janv. 2013 à 19:31
Bonjour à tous,

Je suis un débutant extrème en VBA et j'en appelle à votre aide.

J'ai créé une macro qui me permet de supprimer les lignes en fonction du résultat trouvé dans ma colonne A.

Code de ma macro :

Sub supp()
For i = [A65000].End(xlUp).Row To 1 Step -1
If Cells(i, 1) = 1 Then Cells(i, 1).EntireRow.Delete
Next i
Next
End Sub

Je souhaiterais que cette macro s'applique à TOUTES les feuilles de mon classeur actif et ne pas avoir à relancer la macro à chaue fois pour chacune de mes feuilles.


Pouvez-vous me dire ce que je dois taper EXACTEMENT et surtout, à quel endroit. Pour le moment, ma macro est entré sur la feuille concernée dans Microsoft Excel Objects.




Merci de votre aide, je cherche déja depuis longtemps mais il me marque des erreurs.



Dans l'attente de vos réponses, bonne journée.


Rémi

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 janv. 2013 à 10:24
Bonjour,
Deux possibilités, selon ce que tu veux :
1) possibilité 1 : mettre cette macro dans l'évènement Workbook_SheetActivate
2) possibilité 2) parcourir toutes les feuilles du classeur et, pour chaque feuille trouvée, lancer cette macro, mise en public dans un module standard.
En te rappelant que les feuilles constituent la collection WorkSheets.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 janv. 2013 à 10:35
Une question, toutefois (car a son importance) : comment, en fonction de quoi et à quel moment les "1" ont-ils été écrits en colonne A ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonjour et merci pour ta réponse.
Je ne comprends pas pour la solution 1 : comment mettre ma macro dans un évèenement ? Qu'est-ce qu'un évènement ?
Peux-tu me dire que dois-je écrire (le code entier avec ma macro intégrée) et ou exactement ?
Je t'avoue que je ne connais absolument rien du VBA.


Merci de ton aide.

Pour répondre à ta question :
les 1 ont été écrits dans la colonne A en fonction d'une recherchev. Il s'agit d'un plan de stocks. les articles déréférencés verront leur ligne entièrement et automatiquement supprimées.


Je t'enverrai bien le fichier mais il est confidentiel.

Merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 janv. 2013 à 14:51
Dim Feuille as worksheet
For each Feuille in Worksheets 'parcoures toutes les feuilles
   Feuille.activate
   Call supp
Next


S'il y a une ou des feuilles qui ne doivent pas passer dans la macro, tu peux aussi créer un Array avec les noms des feuilles que tu veux traiter.
À ce moment-là, tu boucles les noms du tableau (Array) plutôt que les feuilles de la collection Worksheets

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 janv. 2013 à 15:52
les 1 ont été écrits dans la colonne A en fonction d'une recherchev. Il s'agit d'un plan de stocks. les articles déréférencés verront leur ligne entièrement et automatiquement supprimées

plutôt alors que d'agir ainsi, à savoir :
1) recherchev
et
2) une boucle sur la colonne A ===>>
on ne fait qu'une seule boucle dans laquelle on recense les lignes concernées ===>> on en constitue la plage (par la méthode Union) et on détruit ainsi, d'un seul coup
soit plage la plage ===>> Plage.entirerow.delete

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 janv. 2013 à 19:31
On pourrait aussi faire un filtre sur les "1", effacer les données trouvées et retrier après avoir enlevé le filtre...


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous