Re : macro de recherche en multifeuilles
Merci pour ton aide.
J'ai essayé ton code par contre je me rends compte que ma macro s'arrête à la première page car elle ne trouve pas de résultats.
Pour plus de compréhension, je vous mets mon code avec des commentaires.
Merci d'avance.
________________________________________________________________________
Sub recherche_prix()
'
' essai recherche_prix
'
Dim code_recherche As Variant 'est la référence sur laquelle on fait une recherche
Dim nouveau_prix As Variant 'chiffre récupérer suite à la recherche
Dim compteurfeuille As Variant 'pour essai de boucle sur les feuilles
Dim fichier_excel As Variant 'indique dans quel fichier faire la recherche
compteurfeuille = 1 'initialisation variable
fichier_excel = Range("G2").Value
DEPART: 'servira pour revenir(voir plus bas)
For compteur = 1 To 2000 '2000 cycles de traitement, soit 2000 lignes
'
ActiveCell.Offset(1, 0).Activate 'passage à la ligne suivante
'
'
code_recherche = ActiveCell.Offset(0, -5).Value 'le code recherche est situé 5 colonnes à gauche de la cellule active
Windows(fichier_excel).Activate 'maintenant que l'on sait quelle référence on cherche on change de fichier pour la trouver
On Error GoTo Erreur 'si le code n'existe pas la recherche ci-dessous renvoie une erreur
Worksheets(compteurfeuille).Activate
'A MON AVIS IL Y A MOYEN DE SIMPLIFIER LE CODE POUR LA RECHERCHE CI-DESSOUS
'CETTE RECHERCHE RENVOI UNE ERREUR 91 SI IL N'Y A PAS DE RESULTAT
Cells.Find(What:=code_recherche, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
nouveau_prix = ActiveCell.Offset(0, 3).Value 'mémorisation du prix qui correspond à la référence que l'on viens de trouver (3 colonnes à droite)
Windows("ContrôleTAM.xls").Activate 'retour sur le fichier initial
ActiveCell.Value = nouveau_prix 'mise en place du nouveau prix
Erreur:
If Err.Number = 91 Then 'si la recherche renvoi une erreur
compteurfeuille = compteurfeuille + 1 'alors passer à la feuille suivante'
GoTo DEPART 'et on recommence
End If 'Ca marche une fois mais pas deux !!! En gros on passe de feuille 1 à 2 mais pas à 3,4...
If Err.Number = 9 Then 'ici le but est d'arrêter la recherche lorsque la feuille appelé n'existe pas
Call MsgBox("Pas de colis correspondant !", vbExclamation, "Traitement impossible") 'et l'indiquer à l'utilisateur
Application.DisplayAlerts = False
End If
Next
End Sub