Transformer index+equiv en VBA

  • Initiateur de la discussion Initiateur de la discussion doclefou
  • 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 !

D

doclefou

Guest
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
 
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
 
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
 
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))
 
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

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).
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
530
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
819
D
Réponses
2
Affichages
948
D
B
  • Question Question
Réponses
3
Affichages
1 K
  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
750
Z
Réponses
0
Affichages
558
Z
L
Réponses
9
Affichages
1 K
Retour