Creation de couples sur vba

Résolu
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017 - Modifié par ametudiante le 29/12/2016 à 13:50
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017 - 29 déc. 2016 à 21:44
Bonjour,
je veux afficher par uncode vba dans un tableau d une feuille excel des couples (voir IMAGE) si je lui fixe le nombre de ligne par exemple 3 et je veux qu il fait la difference entre (i,j) et (j,i)

3 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
29 déc. 2016 à 13:33
Bonjour,

Merci de nous aporter plus de précisions sur ce que tu souhaites faire....

Par exemple :
si je lui fixe le nombre de ligne par exemple 3

Tu lui "fixe" où ça ?

je veux qu il fait la difference entre (i,j) et (j,i)

Tu veux qu'il fasse la différence ...ok... mais il l'affiche où ça ?

Pourrais tu compléter ton tableau pour nous montrer le résultat attendu ??


PS : Ici tu es sur un forum de développeurs .... nous ne ferons pas tout le code à ta place. N'oublie pas de nous montrer ce que tu as commencé à coder !

1
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017
Modifié par ametudiante le 29/12/2016 à 13:51
je suis entrain de créer un programme vba sur excel qui me permet de créer des couple de cells :
je m'explique :
je demande auX utilisateurS d'entrer un nombre de ligne ,puis je dois afficher dans une feuille excel toutes les possiblites de couples
si par exemple l'utilisateur entre la valeur 3 (de ligne) les possibilités seront : (1,2) (1,3)
puis (2,1) (2,3)
et enfin (3,1) et (3,2) donc l affichage sera comme celui deja montré sur l image
pour moi je veux afficher EST le couple (1,2) EST le couple (2,1) car ils ne representent pas la meme chose pour mon objectif apres

ce que j'ai deja fait c'est faux car il me donne la meme chose dans toutes les cellules!
 For i = 1 To ligne

For j = 2 To (ligne * (ligne - 1)) + 1


Feuil5.Cells(j + 1, 2).Value = "(" & i & "," & i + 1 & ")"
Next j
Next i
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
29 déc. 2016 à 15:11
En gros...
ce que tu cherches c'est ça :
Sub combi()
Dim nbLignes As Long
Dim res()
nbLignes = 3

ReDim Preserve res(1 To nbLignes)
For i = 1 To nbLignes
 res(i) = recurscombi(i, nbLignes)
Next


nbRes = UBound(res)
For a = 1 To nbLignes
 toto = res(a)
 For x = 1 To UBound(toto, 2)
  Debug.Print toto(1, x) & ";" & toto(2, x)
 Next
Next

End Sub

Function recurscombi(j, k)
Dim tbl()
ReDim Preserve tbl(2, 1 To k)
For i = 1 To k
  tbl(1, i) = j
  tbl(2, i) = i
Next
recurscombi = tbl
End Function



Bien sûr .. à la place du debug.print .. toi tu vas le mettre dans ta colonne B ...


1
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017
29 déc. 2016 à 15:37
merci d avoir repondu..
mais deja pour l 'afficher dans ma colonne j ai pas compris comment le faire!! au lieu de debug.print je fais koi ??
puis j ai fait un msg box et il m a affiché meme les couples (i,i) or moi je veux les (i,j) tq i different de j
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344 > ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017
29 déc. 2016 à 15:49

l m a affiché meme les couples (i,i) or moi je veux les (i,j) tq i different de j

Ben tu ajoutes un IF dans le code pour les exclure tout simplement ...


mais deja pour l 'afficher dans ma colonne j ai pas compris comment le faire!! au lieu de debug.print je fais koi ??

Tu ne sais pas écrire dans des cellules Excel en VBA ???

Tu ne veux pas que je fasses tout le boulot à ta place quand même ...


Je vais quand même t'aider ... voici le code dans les couples i;i
Function recurscombi(j, k)
Dim tbl()
ReDim Preserve tbl(2, 1 To k)
For i = 1 To k
  If i <> j Then
    tbl(1, i) = j
    tbl(2, i) = i
  End If
Next
recurscombi = tbl
End Function
0
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017 > jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024
29 déc. 2016 à 15:52
bon pour la difference j ai pu la regler :)..
mais pour debug.print c est que c est la 1 ere fois que je l utilise donc j ai pas pu comprendre votre remarque ou inclure au juste ma colonne :) c est ça ma question :)
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344 > ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017
29 déc. 2016 à 16:01
cette portion de code :
nbRes = UBound(res)
For a = 1 To nbLignes
 toto = res(a)
 For x = 1 To UBound(toto, 2)
  Debug.Print toto(1, x) & ";" & toto(2, x)
 Next
Next

parcours le résultats (stockés dans un array) et (via la debug.print) les affiche dans la fenêtre d'exécution de VBA.
Donc à la place du debug.print tu mets le code qui va bien pour écrire dans tes cellules excel.

Au passage ... lorsque quelqu'un te donne du code et que tu ne sais pas à quoi servent les instructions... il existe un truc super pratique : L'aide (via la touche F1 ) ou au pire .. internet !

Bref...
Tu modifies le code
 For x = 1 To UBound(toto, 2)
  Debug.Print toto(1, x) & ";" & toto(2, x)
 Next

par un truc du genre :
 For x = 1 To UBound(toto, 2)
  sheets(1).cells(ligne,colonne).value =   toto(1, x) & ";" & toto(2, x)
 Next

bien entendu .. la variable colonne ( correspond à la colonne B dans ton exemple) et la variable ligne est à incrémenter au fur et à mesure que tu inscrits les valeurs dans la feuille.(tu devrais y arriver je pense...)
0
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017 > jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024
29 déc. 2016 à 21:44
c est bon c est reglé :) merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 déc. 2016 à 19:24
Bonjour,
Dans le simple but de clarifier l'esprit :
si par exemple l'utilisateur entre la valeur 3 (de ligne) les possibilités seront : (1,2) (1,3)
puis (2,1) (2,3)
et enfin (3,1) et (3,2)

en quoi (entre autres) le "couple" (1,2) est-il différent du couple (2,1) ???
Nous n'avons décidément pas la même définition du mot "couple".
Pour moi : un "couple est composé de deux éléments, quel que puisse être leur ordre. Et déterminer les "couples" possibles parmi x éléments, revient à déterminer le nombre des combinaisons de deux éléments choisis parmi x éléments.

1
ametudiante Messages postés 16 Date d'inscription jeudi 22 décembre 2016 Statut Membre Dernière intervention 2 janvier 2017
29 déc. 2016 à 21:17
c est pas la definition mathématique d'un couple ! mais juste les combinaisons possibles :) car je veux comparer apres les positions (i,j) et (j,i) a partir d une autre matrice or ces deux n ont pas la meme valeurs :)
0
Rejoignez-nous