Aide pour formule complexe VBA

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 !

alex39b

XLDnaute Nouveau
Bonjour à tous,

Je me permets de venir à vous, car après avoir beaucoup consulté votre forum, j'ai trouvé de très bons conseils et de supers experts !!! Alors j'en appel à vos talents 😉

Voici ma problématique :

J'ai sur une feuille 1, un tableau à 2 colonnes, avec des chiffres allant de 1 à 4, horizontal (x) et vertical (y). A chacun des couples, un scoring leur est associé.

x 1 2 3 4
1 x 6 4 5
2 x x 2 3
3 x x x 5
4 x x x x

Pour le couple 1;2 (cellule C2), j'ai donc un scoring de 6, pour le couple 3;4 (cellule E4) j'ai un socring de 5.

Sur la feuille 2 de mon tableur excel, j'ai, grâce à une formule VBA, établi la liste de toutes les combinaisons possibles à 3 chiffres, avec les chiffres 1,2,3 et 4, sans répétition possible, ce qui me donne es combinaisons suivantes dans une seule colonne :

1 2 3
1 2 4
1 3 4
2 3 4

Sur la colonne d'à côté, et c'est là où cela devient complexe pour moi... je souhaiterais mettre en place une formule qui me permettrait d'obtenir la somme des scoring des couples de chacune de ces combinaisons.
Je m'explique... pour la combinaison 1 2 3, il y a 3 couples possibles : 1;2 (C2) / 1;3 (D2) et 2;3 (D3). Chacun de ces couples a un scoring (voir feuille 1), et dans ce cas on obtient : 6 + 4 + 2 = 12.

Je souhaiterais donc au final obtenir ceci :

1 2 3 12
1 2 4 ...
1 3 4 ...
2 3 4 ...

Je n'arrive pas à créer de relation avec la feuille 1
Je n'arrive pas à établir une formule me permettant de dissocier chacun des 3 couples dans chacune des combinaisons.
Je n'arrive pas à automatiser la somme des 3 scoring de chacun des 3 couples dans la colonne à côté de leur combinaison respective...
Je n'arrive pas à automatiser la duplication du résultat de la somme à chaque combinaison.

Merci beaucoup par avance pour votre expertise, j'espère avoir été le plus clair possible 😉
 
Dernière modification par un modérateur:
Re : Aide pour formule complexe VBA

Bonjour,

J'ai ce fichier excel en pièce jointe, et cette formule VBA pour obtenir le résultat de la feuille 2 !

Sub Macro1()
lin = 1
col = 1
For m = 1 To 4
For n = m + 1 To 4
For o = n + 1 To 4
Cells(lin, col) = m & " " & n & " " & " " & o & " "
lin = lin + 1
If lin > 65536 Then
col = col + 3
lin = 1
End If
Next o
Next n
Next m
End Sub
 

Pièces jointes

Re : Aide pour formule complexe VBA

Bonjouralex39b, st007.

Par formule, en attendant plus simple, à tester en B1 de Feuil2 :
=INDEX(Feuil1!$B$2:$E$5;EQUIV(--STXT(A1;1;1);Feuil1!$A$2:$A$5;0);EQUIV(--STXT(A1;3;1);Feuil1!$B$1:$E$1;0))+INDEX(Feuil1!$B$2:$E$5;EQUIV(--STXT(A1;1;1);Feuil1!$A$2:$A$5;0);EQUIV(--STXT(A1;6;1);Feuil1!$B$1:$E$1;0))+INDEX(Feuil1!$B$2:$E$5;EQUIV(--STXT(A1;3;1);Feuil1!$A$2:$A$5;0);EQUIV(--STXT(A1;6;1);Feuil1!$B$1:$E$1;0))
 
Re : Aide pour formule complexe VBA

Re,

[...]J'ai testé sur mon fichier, cela fonctionne bien pour la première combinaison, mais pas pour les autres, elle n'est pas duplicable malheureusement.

En êtes-vous sûr ?
Voir pj
Quelles autres valeurs désirez-vous voir apparaître ?
 

Pièces jointes

Re : Aide pour formule complexe VBA

Oula en effet, autant pour moi ça fonctionne bien, j'ai fait une erreur en la transposant à mon fichier dans la cellule.
Et si je souhaite augmenter à 5 le nombre de chiffre dans cette combinaison, quel en serait la modification de la formule ? car je ne saisit pas la fonction STXT.
Voir pj avec 5 chiffres.
Encore merci pour votre aide.
 

Pièces jointes

Re : Aide pour formule complexe VBA

Re,

--STXT(A1;1;1) renvoie le premier caractère de la chaîne en A1, et la transforme en nombre.
--STXT(A1;3;1) renvoie le premier caractère de la chaîne en A1, en partant du 3° et la transforme en nombre.

=INDEX(Feuil1!$B$2:$E$5;EQUIV(--STXT(A1;1;1);Feuil1!$A$2:$A$5;0);EQUIV(--STXT(A1;3;1);Feuil1!$B$1:$E$1;0))
renvoie l'équivalence pour les deux premiers caractères de la chaine en A1
Nb : les espaces entre les différents numéros de votre chaine ne simplifient rien, mais vous devriez pouvoir adapter cette formule avec votre (vos) nouvelle(s) exigence(s).
 
Re : Aide pour formule complexe VBA

Encore merci pour votre réponse.
Pour être honnête je ne l'ai pas comprise. Pour exemple, en suivant votre explication sur STXT(A1;1;1) et STXT(A1;3;1) je ne vois pas à quoi cela correspond : STXT(A1;6;1), étant donné que la combinaison en A1 comportait précédemment 3 chiffres seulement, et non 6.
Pourriez-vous m'indiquer la formule qu'il faudrait adapter pour 5 chiffres s'il vous plait ? Afin que je puisse comparer les 2 et comprendre la différence apportée ?

Je souhaite aller jusqu'à 19 chiffres de cette façon, et j'aimerais pouvoir y arriver tout seul après, alors il m'est important pour moi de bien comprendre votre démarche. C'est un peu du chinois pour moi STXT, EQUIV, (x;y;z), INDEX... j'essai de comprendre, mais compliqué !

En tout cas merci pour votre patience.😱
 
Re : Aide pour formule complexe VBA

Re,

[...] je ne vois pas à quoi cela correspond : STXT(A1;6;1), étant donné que la combinaison en A1 comportait précédemment 3 chiffres seulement, et non 6.
Chacun des espaces entre vos chiffres compte, lui aussi, pour un caractère, d'où le nota bene de mon précédent post. Le 6° caractère correspond ici au 3° chiffre de la chaîne

[...]Je souhaite aller jusqu'à 19 chiffres de cette façon, et j'aimerais pouvoir y arriver tout seul
Il va falloir, à mon avis, vous mettre au VBA, car une formule pour 19 chiffres me semble relever de la douce rêverie 🙂
 
- 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
7
Affichages
184
  • Question Question
Réponses
7
Affichages
324
  • Question Question
Microsoft 365 Graphique à bulles
Réponses
6
Affichages
203
Réponses
6
Affichages
230
Réponses
5
Affichages
116
Retour