Fonction VLookup Vba

  • Initiateur de la discussion Initiateur de la discussion Paulson
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Paulson

XLDnaute Nouveau
Bonjour à tous. Ceci est mon premier message.

Je vous explique mon problème :

J'ai un tableau dans lequel je dois calculer une performance composée de deux produits.
Grâce à une fonction Vlookup je vais chercher les données dont j'ai besoin. Je souhaiterais ensuite pouvoir programmer dans vba une fonction qui récupère les valeurs trouvées par Vlookup et effectuer l'opération que moi je souhaite.

Voici mon code :

Sub test()

Récupère la valeur

R1 = Evaluate(VLookup(A7, Range("A1:Z256"), 4, False))
R2 = Evaluate(VLookup(A7, Range("A1:Z256"), 7, False))
R3 = Evaluate(VLookup(A8, Range("A1:Z256"), 4, False))
R4 = Evaluate(VLookup(A8, Range("A1:Z256"), 7, False))
R5 = Evaluate(VLookup(A3, Range("A1:Z256"), 7, False))

Ceci est l'opération qui doit être effectuée. J'aimerais que celle ci s'affiche dans une cellule par exemple.
(R1 - R2) / R5 + (R3 - R4) / R5


End Sub

Dernier point, je souhaiterais que les valeurs A7, A8 etc soient fixés par l'utilisateur. En gros que au début de la macro une fenêtre s'ouvre et que l'utilisateur puisse cliquer sur la cellule qu'il souhaite (ces cellules correspondent aux produits).

J'espère être clair dans l'explication de mon problème. Je sais que cela fait beaucoup de chose mais je début sur VB. Je vous remercie grandement pour votre aide.
 
Re : Fonction VLookup Vba

Re

C'est plus facile effectivement de faire des tests sur un fichier exemple créé par le demandeur.

Tu ne pas peux récréer un fichier exemple simplifié ?

Comme tu as lu la charte, voici un tit cado 😉
Code:
Sub test()
Dim r As Range, R1, R2, R3, R4, OPE
 Set r = Range("A1:Z256"): r.Name = "BASE"
'Récupère la valeur
R1 = Application.VLookup([A7], [BASE], 4, False)
R2 = Application.VLookup([A7], [BASE], 7, False)
R3 = Application.VLookup([A8], [BASE], 4, False)
R4 = Application.VLookup([A8], [BASE], 7, False)
R5 = Application.VLookup([A3], [BASE], 7, False)
'Ceci est l'opération qui doit être effectuée. J'aimerais que celle ci s'affiche dans une cellule par exemple.
OPE = (R1 - R2) / R5 + (R3 - R4) / R5
MsgBox OPE
End Sub
 
Dernière édition:
Re : Fonction VLookup Vba

Grandement merci, je vais essayer dès Lundi.

J'ai crée un fichier exemple. J'explique l'idée :

L'utilisateur sélectionne ses produits 1, 2 et/ou 3. Tous les paramètres ne sont pas intéressant mais sont quand même sur la feuille.

Grâce à la fonction VLookup l'outils sélectionne les cases "Paramètre 1 Jour J" et "Paramètre 1 Jour J-1" pour le ou les produits sélectionnés par l'utilisateur. Puis le calcul effectue ceci :

(B4-E4)/B3 + (B5-E5)/B3 et ainsi de-suite.

Le code de Staple1600 semble vraiment super. Je reviens vers vous dès lundi pour essayer de compléter un peu cet outils.

Encore un grand merci. Bon weekend.
 

Pièces jointes

Re : Fonction VLookup Vba

C'est super, la petite macro tourne très bien.
Néanmoins, est-ce qu'il est possible que les paramètres en A7, A8 et A3 puissent être rentrés de manière manuelle. C'est à dire que l'utilisateur choisirait ses lignes lui même.Enfin, est-il possible d'avoir un nombre de paramètres varaibles pour les lignes ?
 
Dernière édition:
Re : Fonction VLookup Vba

J'ai un peu avancé mais je me retrouve bloqué à cette étape.

L'utilisateur rentre manuellement les paramètres sw1 / sw2 et fd vie un usf et un RefEdit.
Néanmoins je n'arrive pas à coller les valeurs du refedit dans le calcul de R1 , R2 etc.

Code:
Sub test()
Dim r As Range, R1, R2, R3, R4, OPE
 Set r = Range("A1:Z256"): r.Name = "BASE"
 
sw1 = UserForm1.RefEdit1.Value
sw2 = UserForm1.RefEdit2.Value
fd = UserForm1.RefEdit3.Value


R1 = Application.VLookup(sw1, [BASE], 4, False)
R2 = Application.VLookup(sw1, [BASE], 7, False)
R3 = Application.VLookup(sw2, [BASE], 4, False)
R4 = Application.VLookup(sw2, [BASE], 7, False)
R5 = Application.VLookup(fd, [BASE], 7, False)

OPE = ((R1 - R2) / R5 + (R3 - R4) / R5) * 100
MsgBox OPE

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
833
Réponses
12
Affichages
555
Réponses
7
Affichages
626
Retour