Bonsoir à tous, salut Albert.
Ton fichier n'est pas simple à comprendre, car tes colonnes sont recopiées pleins de fois, mais décalées.
Reprenons ta macro ligne par ligne:
Sub Modèle()
Dim Feuille As Worksheet
For i = 2 To Range("P7").End(xlDown).Row
Date_Rech = Cells(i, 1).Value
Ta boucle porte ici sur les données de la colonne A de la feuille Bouygues qui dans ton exemple contient
109 données
With Worksheets("Indice").Range("P7110")
'à partir de P va chercher dans U pour envoyer dans V
Indice = .Find(What:=Date_Rech).Offset(0, 5).Value
End With
'valeurs de l'indice recopiées dans colonne V
'colonne Y reproduit la colonne U de la feuille indice
La suite de ta macro va chercher les indices à partir de la colonne P de la feuille "indice" qui elle ne contient que
104 données.
Il est donc normal que quand i vaut 105, Date_Rech vaut alors 77062 qui n'existe pas dans la colonne P de la feuille Indice. Et donc la méthode Find ne trouvant rien entraîne le Bogue.
Soit tu complète auparavant tes données de la feuille Indice pour qu'elles soient toutes présentes, soit tu rajoutes un test pour vérifier que Find trouve bien quelque chose:
If Not .Find(What:=Date_Rech) Is Nothing Then
Indice = .Find(What:=Date_Rech).Offset(0, 5).Value
else
Indice=""
end if
Sinon, pour le problème de décalage:
'... problématique : recopier en V7 et non en V2 dans "BOUYGUES"
Cells(i, 22).Value = Indice
tu peux simplement mettre:
Cells(i+5, 22).Value = Indice
Mais globalement, je ne comprend pas pourquoi tu passes par des colonnes P, Q et U qui reprennent en les décalant de 5 lignes tes colonnes A et B de ta feuille indice. En fait, ta colonne Y de ta feuille Bouygue est tout simplement ta colonne B de ta feuille Indice +5.
Ainsi, pour moi, si tu mets en V7 la formule suivante
=Indice!B2+5 que tu étires sur toute la colonne V, tu as le même résultat.
Mais tu dois sans doute avoir une bonne raison.
En espérant t'avoir un tant soit peu aiguillé.
Bonne nuit, Laurent.