[VBA] RechercheV autre classeur + variable nom table matrice
Bonjour tout le monde,
Après des jours de recherche sur mon blocage, je décide de me tourner vers la communauté. Je suis novice en VBA et j'ai toujours réussi à m'en sortir mais là je sèche. Je ne pense pas que mon problème soit bien compliqué mais quelque chose m'échappe.
Pour résumer j'ai 2 fichiers :
Un fichier A qui récupère des datas dans un fichier B via une rechercheV.
Le fichier B possède 12 onglets (1 par mois) dont les noms sont PROR70 1, PROR70 2, etc.
Dans le fichier A, la rechercheV est calculée dans une plage C5:N5 où chaque cellule de la plage correspond à la donnée d'un mois (C2 = donnée en PROR70 1, D2 = donnée en PROR70 2, etc).
Voici donc mon code :
Sub testvlookup()
Dim i As Integer
Dim Plg As Range
Dim Macell As Range
Set Plg = Range("c5:n5")
i = Cells.Column
For Each Macell In Plg
Macell.FormulaR1C1 = "= VLookup(""TRAVAUX CONDIT. HORS NOMENCLATURE"", 'M:\Clôtures Périodiques\Stocks et prod\2021\PROD\Heures Cdt\[PROR70 2021.xlsm]PROR70 " & i & "'!R1C1:R42C2, 2, False)"
Next Macell
End SubIci ce que j'essaie de faire c'est que i prenne automatiquement le numéro de la colonne de la cellule en cours de calcul pour aller récupérer la donnée dans l'onglet correspondant dans mon fichier B. Sauf que la boucle ne fonctionne pas. Le i reste sur 1 et la formule me ramène donc la même valeur sur toutes les cellules de ma plage C5:N5. J'ai essayé tout un tas de "bidouilles" (avec ce que j'ai pu trouver sur internet) mais rien y fait.
Dans un second temps j'avais pensé à une autre solution qui serait de créer un onglet RECAP dans mon fichier B qui irait récupérer dans une plage disons B2:M2 les données de chaque onglet PROR70. Et dans mon fichier A que ma plage C5:N5 = Fichier B onglet RECAP plage B2:C2. Mais je n'y arrive pas non plus
Je tiens à préciser qu'il faut que je passe par VBA pour 2 raisons :
- Pour simplifier l'exemple, mon chemin est en dur mais en vrai il est variable
- Il faut que je puisse récupérer les données dans les fichiers fermés
Je remercie par avance tous ceux qui m'auront lu et qui prendront de leur temps pour m'aider en m'aiguillant sur les 2 solutions que je souhaiterais mettre en place.
Bonjour à la communauté,
Mon post a suscité peu d'intérêt mais j'ai finalement réussi à résoudre le problème. Si ça peut aider ou intéresser certaines personnes, je poste ci-dessous les 2 codes relatifs aux 2 solutions envisagées plus haut :
Solution 1 : Récupérer la donnée sur chaque onglet mensuel PROR70 du classeur PROR70 2021
Sub SOLUTION1()
Dim i As Integer 'Décla variable
Dim j As String 'Décla variable
For i = 1 To 12 'le mois de l'onglet sur lequel pointer
j = Chr(i + 66) 'lettre de la cellule de la plage sur laquelle on fait le vlookup
Range(j & "5").FormulaR1C1 = "=VLookup(""TRAVAUX CONDIT. HORS NOMENCLATURE"", 'M:\Clôtures Périodiques\Stocks et prod\2021\PROD\Heures Cdt\[PROR70 2021.xlsm]PROR70 " & i & "'!R1C1:R42C2, 2, False)"
Next
End SubSolution 2 : Récupérer la donnée sur un onglet RECAP (recap de chaque onglet mensuel PROR70) du classeur PROR70 2021
Sub SOLUTION2()
Dim i As Integer 'decla variable
Dim j As String 'decla variable
For i = 2 To 14 ' numéro de la colonne sur laquelle pointer
j = Chr(i + 65) 'lettre de la cellule de la plage sur laquelle on fait le vlookup
Range(j & "5").FormulaR1C1 = "=VLookup(""TRAVAUX CONDIT. HORS NOMENCLATURE"", 'M:\Clôtures Périodiques\Stocks et prod\2021\PROD\Heures Cdt\[PROR70 2021.xlsm]RECAP'!R1C1:R42C13," & i & ", False)"
Next
End SubJe mets le sujet en résolu mais si des personnes ne comprennent pas bien et veulent s'inspirer de ce code pour les aider, elles peuvent continuer à alimenter le fil. Je suis le premier à aimer recevoir de l'aide donc n'hésitez pas