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
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
A voir également:
- Automatisation d'une Recherchev
- Recherchev ou ✓ - Forum Bureautique
- Recherchev si contient - Forum Excel
- Vba recherchev dans une autre feuille - Forum VB / VBA
- Si recherchev #n/a alors 0 - Forum Bureautique
- Recherchev renvoie 0 ✓ - Forum Excel
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
18 juil. 2018 à 12:42
Bonjour,
Peux-tu me transmettre ton fichier afin que je réalise une macro sur celui-ci.
Peux-tu me transmettre ton fichier afin que je réalise une macro sur celui-ci.
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
18 juil. 2018 à 14:12
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
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
Modifié le 19 juil. 2018 à 06:37
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 ;)
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
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...
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
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
25 juil. 2018 à 13:41
Merci infiniment
j'ai résolu le problème
Cordialement
j'ai résolu le problème
Cordialement