Automatisation d'une Recherchev

Résolu/Fermé
iliassTr Messages postés 3 Date d'inscription mercredi 18 juillet 2018 Statut Membre Dernière intervention 27 juillet 2018 - 18 juil. 2018 à 11:26
iliassTr Messages postés 3 Date d'inscription mercredi 18 juillet 2018 Statut Membre Dernière intervention 27 juillet 2018 - 25 juil. 2018 à 13:41
Bonjour,
Je suis un debutant en VBA j'aimerai creer un bouton qui prend le nom d'une article de la colonne A de la feuille 1("Carnet") et récupére le prix de cette article depuis la feuille 2 ("gamme") colonne D.
je peux faire ça avec une recherchev la formule est :
=RECHERCHEV(A2;Gamme!A2:G712;4)

mon problème c'est que j'ai plus que 100000 articles et je veux automatiser ce travail par une bouton ?
Merci de m'aider SVP,


5 réponses

Hutg Messages postés 8 Date d'inscription mercredi 11 juillet 2018 Statut Membre Dernière intervention 20 juillet 2018
18 juil. 2018 à 12:42
Bonjour,

Peux-tu me transmettre ton fichier afin que je réalise une macro sur celui-ci.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
18 juil. 2018 à 14:12
Bonjour le fil, bonjour le forum,

Peut-être comme ça :
Sub Macro1()
Dim OC As Worksheet 'déclare la variable OC (Onglet Carnet)
Dim OG As Worksheet 'déclare la variable OG (Onglet Gamme)
Dim DLC As Long 'déclare la variable DLC (Dernière Ligne Carnet)
Dim DLG As Long 'déclare la variable DLG (Dernière Ligne Gamme)
Dim TVC As Variant 'déclare la variable TVC (Tableau des Valeurs Carnet)
Dim TVG As Variant 'déclare la variable TVG (Tableau des Valeurs Gamme)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)
Dim TP() As Variant 'déclare la variable TP (Tableau des Prix)

Set OC = Worksheets("Carnet") 'définit l'onglet OC
DLC = OC.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLC de la colonne A de l'onglet OC
TVC = OC.Range("A1:A" & DLC) 'définit le tableau des valeurs TVC de l'onglet OC
Set OG = Worksheets("gamme") 'définit l'onglet OC
DLG = OG.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLG de la colonne A de l'onglet OG
TVG = OG.Range("A1:OG" & DLG) 'définit le tableau des valeurs TVG de l'onglet OG
ReDim TP(1 To DLC) 'redimensionne le tableau des prix TP
For I = 2 To DLC 'boucle 1 : sur toutes les ligne I du tableau des valeurs TVC (en partant de la seconde)
    For J = 2 To DLG 'boucle 2 : sur toutes les ligne J du tableau des valeurs TVG (en partant de la seconde)
        'si les données des deux boucles sont identique, alimente le tableau TP avec la donnée en ligne j colonne 4 du tableau TVG, va l'étiquette "suite"
        If TVC(I, 1) = TVG(J, 1) Then TP(I - 1) = TVG(J, 4): GoTo suite
    Next J 'prochaine ligne de la boucle 2
    TP(I - 1) = "" 'ici l'occurrence n'est pas trouvée, alimente le tableau TP avec du vide
suite: 'étiquette
Next I 'prochaine ligne de la boucle 1
OC.Range("B2").Resize(DLC, 1).Value = Application.Transpose(TP) 'renvoie dans B2 redimensionnée le tableau TP transposé
End Sub

0
rafaledu43 Messages postés 160 Date d'inscription samedi 29 octobre 2011 Statut Membre Dernière intervention 8 août 2018 5
Modifié le 19 juil. 2018 à 06:37
Tu peux aussi étendre la formule avec vba:

DerLigne = Range("A1048576").End(xlUp).Row

For i = 2 to DerLigne
Cells(i,2) ..FormulaLocal = "=RECHERCHEV(A" & i & ";Gamme!A2:G712;4)" ' Pour mettre la formule dans la colonne B
Next i


Mais tu as aussi vite fait d'étendre ta formule, c'est juste à faire une fois ;)

0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
19 juil. 2018 à 09:58
Re,

En fait j'ai testé les deux options VBA sur une 100 lignes. Injecter la formule ou passer par des tableaux. La seconde option était un tout petit peu plus rapide... C'est pourquoi je l'ai retenue même si le code était plus long...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iliassTr Messages postés 3 Date d'inscription mercredi 18 juillet 2018 Statut Membre Dernière intervention 27 juillet 2018
25 juil. 2018 à 13:41
Merci infiniment
j'ai résolu le problème
Cordialement
0