Appliquer ma macro a toutes les feuilles de mon classeur (actif)
remibeginner
-
4 janv. 2013 à 10:18
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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
A voir également:
Appliquer ma macro a toutes les feuilles de mon classeur (actif)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.