Recherchev + Nom du fichier en variable

Bonjour,

Je souhaiterais faire un recherchev sur différents classeur fermé.

Le nom du fichier se trouve dans ma colonne P. Mon code ci-dessous fonctionne bien sauf que P2 reste toujours P2 sur n'importe quelle ligne alors que A2 devient A3 sur la 3ème ligne, A4 sur la 4ème ligne, etc.

Comment faire pour que P2 s'incrémente automatiquement ?

Sub rech()
Dim CheminComplet As String, NomClasseur As String, Plage As String, NomFeuil As String, Chemin As String

Plage = "A:U" '<-- plage de recherche
NomFeuil = "fusion'!" '<-- nom de la feuille, ne pas oublier la simple cote avant le !
Chemin = "'T:\COMMUN UG41\ETUDE TECHNIQUE FONTENAY\tableau suivi des affaires\NEW\atc\" '<-- emplacement sur le disque dur, ne pas oublier la simple cote avant la lettre de la partition

Range("S2").FormulaLocal = "=RECHERCHEV(A2;" & Chemin & "[" & [P2] & ".xlsm]" & NomFeuil & Plage & ";19;FAUX)"

End Sub
50thibaut-ex.xlsm (60.54 Ko)

Bonjour,

Je n'ai pas testé mais je pense que la solution simple serait d'utiliser une boucle comme ceci :

For i = 2 to 10
Range("S2").FormulaLocal = "=RECHERCHEV(A2;" & Chemin & "[" & Range("P"&i) & ".xlsm]" & NomFeuil & Plage & ";19;FAUX)"
Next i

Il suffit de remplacer le 10 par le nombre de fichiers concernés.

Bonjour,

Merci pour votre réponse.

Je viens d'essayer mais j'ai un problème. Le fichier reste toujours le même et ne prend celui de la ligne.

Voici votre code que j'ai adapté.

Sub rech()
Dim CheminComplet As String, NomClasseur As String, Plage As String, NomFeuil As String, Chemin As String
Dim i As Integer
Dim DernLigne As Long
DernLigne = Range("P" & Rows.Count).End(xlUp).Row
Plage = "A:U" '<-- plage de recherche
NomFeuil = "fusion'!" '<-- nom de la feuille, ne pas oublier la simple cote avant le !
NomClasseur = Range("P2") & ".xlsm" '<-- nom du classeur contenu dans la cellule P2
Chemin = "'T:\COMMUN UG41\ETUDE TECHNIQUE FONTENAY\tableau suivi des affaires\NEW\atc\" '<-- emplacement sur le disque dur, ne pas oublier la simple cote avant la lettre de la partition

CheminComplet = Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage
For i = 2 To DernLigne
Range("S2").FormulaLocal = "=RECHERCHEV(A2;" & Chemin & "[" & Range("P" & i) & ".xlsm]" & NomFeuil & Plage & ";19;FAUX)"
Next i

End Sub

Bonjour.

Quand on regarde le code complet, je pense que le problème réside dans la variable NomClasseur qui dépend de la boucle et donc de la boucle qui devrait prendre en compte cette variable.

Sub rech()
Dim CheminComplet As String, NomClasseur As String, Plage As String, NomFeuil As String, Chemin As String
Dim i As Integer, DernLigne As Long

DernLigne = Range("P" & Rows.Count).End(xlUp).Row
Plage = "A:U" '<-- plage de recherche
NomFeuil = "fusion'!" '<-- nom de la feuille, ne pas oublier la simple cote avant le !

For i = 2 to DernLigne
NomClasseur = Range("P & i") & ".xlsm" '<-- nom du classeur contenu dans la cellule P2
Chemin = "'T:\COMMUN UG41\ETUDE TECHNIQUE FONTENAY\tableau suivi des affaires\NEW\atc\" '<-- emplacement sur le disque dur, ne pas oublier la simple cote avant la lettre de la partition

CheminComplet = Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage

Range("S2").FormulaLocal = "=RECHERCHEV(A2;" & Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage & ";19;FAUX)"
Next i

End Sub 

A tester.

Bonjour,

Je viens de trouver la solution.

Par contre sauriez-vous comme supprimer les #NA, j'ai essayé avec SIERREUR devant mais ca ne fonctionne pas.

Sub rech()
Dim CheminComplet As String, NomClasseur As String, Txt As String, Plage As String, NomFeuil As String, Chemin As String
Dim i As Integer, DernLigne As Long

DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Plage = "A:U" '<-- plage de recherche
NomFeuil = "fusion'!" '<-- nom de la feuille, ne pas oublier la simple cote avant le !

For i = 2 To DernLigne   ' DernLigne
NomClasseur = Range("P" & i) & ".xlsm" '<-- nom du classeur contenu dans la cellule P2
Chemin = "'T:\COMMUN UG41\ETUDE TECHNIQUE FONTENAY\tableau suivi des affaires\NEW\atc\" '<-- emplacement sur le disque dur, ne pas oublier la simple cote avant la lettre de la partition
CheminComplet = Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage

Txt = Dir("T:\COMMUN UG41\ETUDE TECHNIQUE FONTENAY\tableau suivi des affaires\NEW\atc\" & NomClasseur)
If Txt = "" Then

Else
Range("S" & i).FormulaLocal = "=RECHERCHEV(A" & i & ";" & Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage & ";19;FAUX)"
Range("T" & i).FormulaLocal = "=RECHERCHEV(A" & i & ";" & Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage & ";20;FAUX)"
Range("U" & i).FormulaLocal = "=RECHERCHEV(A" & i & ";" & Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage & ";21;FAUX)"
End If

'Range("S" & i).FormulaLocal = "=RECHERCHEV(A" & i & ";" & Chemin & "[" & NomClasseur & "]" & NomFeuil & Plage & ";19;FAUX)"
Next i
MsgBox "RechercheV terminée"
End Sub

Bonjour,

Malheureusement sans fichier joint je ne saurai pas pourquoi #NA apparaît.

Serait-il possible d'en joindre un afin que je regarde précisément ?

Rechercher des sujets similaires à "recherchev nom fichier variable"