Fonction VLookup Vba

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.
 

Staple1600

XLDnaute Barbatruc
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:

Paulson

XLDnaute Nouveau
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

  • Exemple 1.xlsx
    32.8 KB · Affichages: 84
  • Exemple 1.xlsx
    32.8 KB · Affichages: 87
  • Exemple 1.xlsx
    32.8 KB · Affichages: 90

Paulson

XLDnaute Nouveau
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:

Paulson

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
12
Affichages
247

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87