VBA - Fonction rechercheV à appliquer

Résolu/Fermé
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 - Modifié le 18 sept. 2019 à 22:35
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 sept. 2019 à 08:25
Bonsoir,
Après quelques recherches, forcé de constater que je n'arrive pas à comprendre comment appliquer la recherche V en vba dans mon cas :

J'ai un tableau (à nombre de ligne variable) dont en dernière colonne, je souhaite ajouter une valeur se trouvant dans un autre onglet.

J'ai essayé d'utiliser cette méthode =>
Sub recherchev()

Dim f As Long

'N° de ligne où démarre la boucle
f = 1

'Finir la boucle jusqu'à la 1ere cellule vide
Do Until Sheets("import").Cells(f, 1) = ""
f = f + 1


Sheets("import").Cells(f, 2) = Application.WorksheetFunction.VLookup(Sheets("import").Cells(f, 1), Sheets("fam").Range("a2:b10"), 2, False)

Loop

End Sub


Tout bêtement je bloque sur la case de départ. Sur excel on tape la formule dans le case où l'on veut afficher la valeur et on étire. sur la vba je ne sais pas la traduire, même avec une boucle.

Merci pour votre aide

Configuration: Windows / Chrome 76.0.3809.132

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
27 sept. 2019 à 08:25
MERCI

De rien....

Adieu, Ecam, je ne t’oublierai pas
1
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
18 sept. 2019 à 23:14
Bonsoir

Au lieu de Do until tu peux détecter la dernière cellule remplie et faire une boucle For Next depuis la ligne de ton choix jusqu'à la dernière
Exemple à adapter
https://mon-partage.fr/f/O7gZVGjz/

Cdlmnt
Via
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 19 sept. 2019 à 09:52
Bonjour Ecam, Via

Tu déclares F as long --> F>65236 , das ce cas il faudrait utiliser un autre type de macro.

d'autre part il faut tester si la cellule cells(f,x) existe bien dans la colonne A feuile fam

proposition à adapter sans utilisation de rechercheV( non nécessaire dans ce cas en VBa)
https://mon-partage.fr/f/ODnIUA2Z/

le code:
Option Explicit
'------------------------------------------------------------
Sub Ecam_ccm()
Dim Lig As Byte, Ligvid As Byte, Nom As String
    
    'fige le défilement de l'écran (confort des yeux, rapidité)
    Application.ScreenUpdating = False
       
    With Sheets("Feuil1")
         'trouve la 1° ligne vide dans colA
        Ligvid = .Columns("A").Find("", .Range("A1"), xlValues).Row
        'Boucle de recherche dans feuil2
        For Lig = 1 To Ligvid
            Nom = .Cells(Lig, "A")
            'teste la présence de "nom" dans la feuil2 col A
            On Error Resume Next
                .Cells(Lig, "B") = Sheets("Feuil2").Columns("A").Find(Nom).Offset(0, 1)
       Next
    End With
End Sub




0