Recherche sur plusieurs feuilles [Résolu]

Messages postés
10
Date d'inscription
mercredi 8 juin 2016
Dernière intervention
20 juin 2016
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 20 juin 2016 à 06:40
Bonjour,
Dans ma macro ci-dessous, je fais une recherche d'une date puis je la remplace par une autre.
Cette macro fonctionne parfaitement a part que pour moi, j'aimerais que la recherche ne se fasse que sur les feuilles "janvier" "février"... jusqu'au mois de décembre

Sub changer_annee()
'rechercher une date dans les feuilles du classeur et la remplacer par une autre

Dim feuil As Worksheet
Dim Mot As Variant
Dim Replace As Variant

Mot = InputBox("Quelle année recherchez-vous ?", Title:="Recherche année")
Replace = InputBox("Par quelle année voulez vous remplacer ?", Title:="Remplacer l'année")
If Mot = "" Then Exit Sub

For Each feuil In ThisWorkbook.Worksheets
feuil.Cells.Replace what:=Mot, Replacement:=Replace
Next

End Sub
Merci d'avance de votre aide
Afficher la suite 

Votre réponse

4 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
mets donc les feuilles que tu veux traiter dans un array et parcours cet array.
Exemple :
Dim feuilles_a_traiter
feuilles_a_traiter = Array(Feuil1, Feuil3)
For i = 0 To UBound(feuilles_a_traiter)
MsgBox feuilles_a_traiter(i).Name ' ici tes instruction au lieu de ce msgbox.
Next

ne parcourra que les feuilles "Feuil1" et "Feuil3"

EDIT et évite de nommer par Replace une variable. Replace est un mot réservé de VBA !

EDIT 2 : existe également une autre solution (qui utilise MonthName). Elle est toutefois à éviter pour deux raisons :
- 1) elle implique que tes noms de mois ne souffrent aucune faute d'orthographe
- 2) elle est assez risquée si ton classeur doit être distribué et éventuellement utilisé avec une version non française

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
10
Date d'inscription
mercredi 8 juin 2016
Dernière intervention
20 juin 2016
0
Merci
Merci pour ta réponse, mais je n'arrive pas a faire chercher puis remplacer une valeur dans les feuilles sélectionnées.

Je suis vraiment un débutant et je ne sais pas comment m'y prendre.

Merci de me venir en aide
Commenter la réponse de BBdebutant
Messages postés
10
Date d'inscription
mercredi 8 juin 2016
Dernière intervention
20 juin 2016
0
Merci
pour commencer merci de ton aide.

avec la macro ci-dessous maintenant j'arrive a faire l'opération.

mais je dois faire 12 fois l'opération rechercher et remplacer ne pourrait-on pas le faire en 1 seule fois.

Sub Macro1()
'
' Macro1 Macro
Dim feuilles_a_traiter
feuilles_a_traiter = Array(Feuil4, Feuil6, Feuil7, Feuil8, Feuil9, Feuil10, Feuil11, Feuil12, Feuil13, Feuil14, Feuil15, Feuil16)
For i = 0 To UBound(feuilles_a_traiter)
Dim Mot As Variant
Dim Trouve As Variant

Mot = InputBox("Quelle année recherchez-vous ?", Title:="Recherche année")
Trouve = InputBox("Par quelle année voulez vous remplacer ?", Title:="Remplacer l'année")
If Mot = "" Then Exit Sub
For Each feuil In feuilles_a_traiter
feuil.Cells.Replace what:=Mot, Replacement:=Trouve
'MsgBox feuilles_a_traiter(i).Name ' ici tes instruction au lieu de ce msgbox.
Next
Next

End Sub

Encore merci de ton aide
Commenter la réponse de BBdebutant
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Là, vois-tu, débutant ou non, tu as surtout besoin de te réveiller !
1) Tu as écrit dans ton 1er message :
Cette macro fonctionne parfaitement a part que pour moi, j'aimerais que la recherche ne se fasse que sur les feuilles "janvier" "février"... jusqu'au mois de décembre

ce qui veut dire que tu n'avais aucun problème de remplacement, mais que celui-ci se faisait sur toutes les feuilles et non uniquement celles des mois ...
2) ton code de remplacement se faisait dans la boucle :
For Each feuil In ThisWorkbook.Worksheets 

et je t'ai dit par quoi remplacer cette boucle, non ?

Tu voudras bien te réveiller, car là, ce n'est pas un problème de débutant, que tu as, mais un problème assez sérieux de logique.
Et si tu continues avec un problème de cette nature, tu devras continuer sans moi, je le crains.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.