VBA - Fonction rechercheV à appliquer

Résolu
Ecam39 Messages postés 314 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    MERCI

    De rien....

    Adieu, Ecam, je ne t’oublierai pas
    1
  2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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