Macro RechercheV
Bonjour à tous,
Je vous demande de l'aide au sujet d'une macro RechercheV qui m'affiche une donnée "#NOM?".
Quand je rentre dans la cellule ou la macro est faite, j'appui sur ma touche entrée et elle m'affiche le résultat dans cette même cellule.
Comment pourrai-je automatiser cette étape ?
Je vous donne mon code ci-dessous :
Sub AppliquerFormuleRechercheV()
Dim FeuilleCourante As Worksheet
Dim FeuillePrecedente As Worksheet
Dim DerniereLigne As Long
' Récupérer les références aux feuilles "J" et "J-1"
Set FeuilleCourante = ThisWorkbook.Worksheets("J")
Set FeuillePrecedente = ThisWorkbook.Worksheets("J-1")
' Récupérer le numéro de la dernière ligne contenant des données dans la colonne 1 de la feuille courante
DerniereLigne = FeuilleCourante.Cells(Rows.Count, 1).End(xlUp).Row
' Appliquer la formule RECHERCHEV avec les paramètres indiqués
FeuilleCourante.Range("X2:X" & DerniereLigne).Formula = "=RECHERCHEV(B2,'" & FeuillePrecedente.Name & "'!$B$2:$X$500,23,false)"
End Sub
J'ai essayé de vous donner un maximum d'infos, je reste dispo si vous avez besoin d'infos complémentaires.
Merci à vous !
Bonjour ArthurT,
Si la colonne "Commentaire" fait partie d'une plage de données en forme de tableau, transforme cette plage en tableau structuré (menu "Insertion" / "Tableau" et en cochant "mon tableau comporte des en-têtes"). Une fois le tableau créé, écris ta formule sur la 1ère ligne de donnée de la colonne "Commentaire" et elle se répercutera sur toutes les lignes et sera également insérée lorsque tu ajoutes une ligne (pas besoin de VBA dans ce cas
Si tu dois le faire en VBA, il faut utiliser le nom Anglais des fonctions, RECHERCHEV => VLOOKUP. Sur le net, tu trouveras facilement les équivalences des noms des fonctions Excel en français / anglais.
Bonjour Cylfo, merci pour ta réponse,
Merci d'avoir proposé cette solution de tableau mais je dois faire passer cette action en macro car elle sera répétée chaque jour (cette partie du code n'est qu'une petite partie du code réaliser en amont, mais il n'y a que cette partie qui ne fonctionne pas).
FeuilleCourante.Range("X2:X" & DerniereLigne).Formula = "=RECHERCHEV(B2,'" & FeuillePrecedente.Name & "'!$B$2:$X$500,23,false)"
En changeant le "RECHERCHEV" de cette partie du code en "VLOOKUP", dois-je aussi changer la syntaxe du code écris ci-dessus ? Par exemple, Ne pas commencer par FeuilleCourante.Range mais par autre chose ?
La syntaxe FeuilleCourante.Range("X2:X" & DerniereLigne).Formula = "=VLOOKUP(B2,'" & FeuillePrecedente.Name & "'!$B$2:$X$500,23,false)" est bonne, par contre tu vas copier la même formule dans toute la plage couverte par X2:X & DerniereLigne, donc à toutes les lignes tu rechercheras B2 ...
Il faudrait que tu fasses une boucle et que tu copies la formule ligne par ligne en incrémentant la référence de la ligne. Si dans ta boucle, ton indice de ligne est NumLigne, cela donne :
'Dim NumLigne as Long
For NumLigne = 2 to DerniereLigne
FeuilleCourante.Range("X" & NumLigne).Formula = "=RECHERCHEV(B" & NumLigne &",'" & FeuillePrecedente.Name & "'!$B$2:$X$500,23,false)"
NextLe code que tu m'as passé est fonctionnel je t'en remercie je l'ai incrémenter dans mon code.
En revanche pour résoudre mon problème qui était que la macro ne s'exécutait pas malgré qu'elle soit mise comme elle devrait dans la colonne que je lui demandais.
J'ai uniquement changé le ""=RECHERCHEV(B" & NumLigne &",'" & FeuillePrecedente.Name & "'!$B$2:$X$500,23,false)"" en "VLOOKUP" et ca a fonctionné.
Je te remercie pour le temps que tu m'as accordé ! à la prochaine.
Impec ArthurT, merci pour le retour et mes excuses pour l'erreur !