Automatisation d'une Recherchev
Résolu
iliassTr
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
iliassTr Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
iliassTr Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Automatisation d'une Recherchev
- Recherchev texte ✓ - Forum Excel
- Logiciel automatisation mac - Guide
- Si recherchev ✓ - Forum Excel
- Recherchev et rechercheh combiné ✓ - Forum Excel
- Recherchev contient - Forum Excel
5 réponses
Bonjour le fil, bonjour le forum,
Peut-être comme ça :
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
Tu peux aussi étendre la formule avec vba:
DerLigne = Range("A1048576").End(xlUp).Row
Mais tu as aussi vite fait d'étendre ta formule, c'est juste à faire une fois ;)
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 ;)
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question