Recherche sur plusieurs feuilles

Résolu
BBdebutant Messages postés 10 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 20 juin 2016 - 19 juin 2016 à 19:47
ucfoutu Messages postés 18038 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

4 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
Modifié par ucfoutu le 19/06/2016 à 23:28
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.
0
BBdebutant Messages postés 10 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 20 juin 2016
19 juin 2016 à 23:29
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
0
BBdebutant Messages postés 10 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 20 juin 2016
20 juin 2016 à 00:16
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 juin 2016 à 06:40
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.
0
Rejoignez-nous