Transformer index+equiv en VBA

doclefou

XLDnaute Nouveau
Bonjour à tous et bonne année,

Dans un ficher LAKERS, j'ai une feuille nommée "notes" dans les cellules "F2" à "F13", j'utilise l'ensemble de formule ci-dessous, en incrémentant de 1 à 12 la fonction grande.valeur
Code:
INDEX(Stats_LAKERS!$B$2:$B$13;EQUIV(GRANDE.VALEUR(Stats_LAKERS!$C$2:$C$13+LIGNE(Stats_LAKERS!$C$2:$C$13)/100;1);Stats_LAKERS!$C$2:$C$13+LIGNE(Stats_LAKERS!$C$2:$C$13)/100;0)))

Je répète cet ensemble jusqu'aux colonnes "O". J'avoue que c'est très lourd.

Dans un USF, j'utilise une boucle for 1 à 12 pour alimenter des combobox nommées Zone_3pts1 à Zone_3pts12
Code:
Me.Controls("Zone_3pts" & I).Value = Worksheets("notes").Range("F" & I + 1).Value & " : " & WorksheetFunction.VLookup(Worksheets("notes").Range("F" & I + 1).Value, Worksheets("Stats_" & NomEquipe).Range("B2:N13"), 3, False)
NomEquipe est une variable string récupérée par
Code:
NomEquipe = Worksheets("base").Range("B2").Value

Si je laisse tout ça, cela fonctionne bien, le problème est la portabilité de mon code. Je n'ai pas envie de modifier l'ensemble index+equiv+grande.valeur si je créé un fichier BULLS.

Donc ma demande est de compiler :
Code:
Me.Controls("Zone_3pts" & I).Value = INDEX(Stats_LAKERS!$B$2:$B$13;EQUIV(GRANDE.VALEUR(Stats_LAKERS!$C$2:$C$13+LIGNE(Stats_LAKERS!$C$2:$C$13)/100;I);Stats_LAKERS!$C$2:$C$13+LIGNE(Stats_LAKERS!$C$2:$C$13)/100;0)))

Par avance, merci de votre aide
 

Nairolf

XLDnaute Accro
Re : Transformer index+equiv en VBA

Salut doclefou,

Pour intégrer les fonctions du tableur en vba, tu trouveras ci-dessous le correspondances:
INDEX() : WorksheetFunction.Index()
EQUIV() : WorksheetFunction.Match()
GRANDE.VALEUR() : WorksheetFunction.Large()
LIGNE() : Range().Row
 

doclefou

XLDnaute Nouveau
Re : Transformer index+equiv en VBA

Bonjour Nairolf & le forum,

Merci pour ta réponse, j'ai modifié mon code avec ce que tu m'as donné, donc cela donne ceci :
Code:
Me.Controls("Zone_MVP" & I).Value = WorksheetFunction.Index(Worksheets("Stats_" & NomEquipe).Range("B2:B13"), WorksheetFunction.Match(WorksheetFunction.Large(Worksheets("Stats_" & NomEquipe).Range("K2:K13") + Range("K2:K13").Row / 100, I), Worksheets("Stats_" & NomEquipe).Range("K2:K13") + Range("K2:K13").Row / 100, 0))

Lorsque j'exécute, j'obtiens une erreur 13, incompatibilité de type

Je ne vois pas où je peux corriger cette erreur
 

Nairolf

XLDnaute Accro
Re : Transformer index+equiv en VBA

Salut,

J'essaierais avec ceci:

Me.Controls("Zone_MVP" & I).Value = WorksheetFunction.Index(Worksheets("Stats_" & NomEquipe).Range("B2:B13"), WorksheetFunction.Match(WorksheetFunction.Large(Worksheets("Stats_" & NomEquipe).Range("K2:K13") + Worksheets("Stats_" & NomEquipe).Range("K2:K13").Row / 100, I), Worksheets("Stats_" & NomEquipe).Range("K2:K13") + Worksheets("Stats_" & NomEquipe).Range("K2:K13").Row / 100, 0))
 

doclefou

XLDnaute Nouveau
Re : Transformer index+equiv en VBA

Merci Nairolf,

J'ai fait la modification mais rien ne change, j'ai toujours la même erreur.

Je joins mon fichier. Le formulaire en question se nomme Form_Stats

PS : Dans ce fichier, j'utilise des images qui son sur mon ordinateur, donc il va y avoir des erreurs dès l'ouverture du fichier.

Merci
 

Pièces jointes

  • LAKERS.xlsm
    698 KB · Affichages: 82

Nairolf

XLDnaute Accro
Re : Transformer index+equiv en VBA

Salut doclefou,

J'ai trouvé le problème, en fait, tu ne peux pas faire de calcul matriciel direct en vba (seules les possibilités directes de la fonction sont permises).

Dans ce cas précis, dans le tableur tu additionnes 2 plages de cellules pour faire un calcul grande.valeur() alors qu'en vba tu ne le peux pas.
Donc soit tu passes par un calcul intermédiaire dans la partie tableur soit tu passes par du calcul de matrice dans vba (c'est-à-dire que tu dois donner chaque valeur à chaque éléments d'une matrice, si tu as un vecteur colonne de 5 valeurs, tu dois donner la valeur que tu souhaite à chacune d'entre elle via une boucle par exemple).
 

doclefou

XLDnaute Nouveau
Re : Transformer index+equiv en VBA

Bonjour Nairolf,

Merci pour ta réponse.

Arf bon tant pis.

J'ai relu plusieurs fois ton message mais je n'arrive pas à visualiser l'écriture de mon code VBA.
Pourrais-tu m'aider s'il te plaît ?
Je décide de passer par le VBA car je peux l'utiliser dans tous mes futurs fichiers, alors que les formules, il faut toutes les reprendre et comme pour ce que je veux faire, il y en a trop, autant le faire de façon automatique.
A moins que tu saches comment faire ?

Bonne journée
 

Statistiques des forums

Discussions
312 493
Messages
2 088 952
Membres
103 989
dernier inscrit
jralonso