ametudiante | bonjour,svp, dans un code vba si on demande à l'utilisateur d'entrer un nombre de lignes et de colonnes (dans une autre interface pas ici ). supposons que nb de ligne =3 et colonnes = 2 (deja saisi)
On fixe la 1 ere ligne (a) ,apres on compare chacune de ces cellules avec celles qui la suivent : càd la cellule contenant 3 avec celle contenant 2 et 4 ...(tab1) apres on fixe la 2 eme ligne (b) et on la compare avec celles qui la suivent et celles qui la précédent . De meme ,la cellule contanant 7 avec celle contenant 1 et 5. on a trouvé que : la valeur de a(=3) >= la valeur de b (=2). donc on met dans tab2 ,specifiquement dans la cellule de l'intersection de (a , b ) la valeur 1 ( 1 indique le numero de la colonne dans laquelle on fait la comparaison si la valeur de a>= b. si on effectue la comparaison dans la colonne 2, on mettra dans tab 2 la valeur 2 ) et ainsi de suite pour les autres ligne et les autres colonnes . l'exemple (voir image) indique les donnees et la reponse espérée , j espere que c'est clair maintenant. PS. la diagonale du tab 2 ne contient rien ,car on ne compare aucune cellule avec elle meme.
voir code et pieces jointes:) plus d'explication :
au debut ,j ai une matrice des evaluations (f_k(a_i)) saisi dans une autre interface par l'utilisateur (avec a_i sont a,b,c dans l exemple et k c'est colonne 1 ,colonne 2 :(tab1 )) soient: F+(a_i,a_j)= {k ϵ F/ f_k(a_i)> f_k(a_j) } F=(a_i,a_j)= {k ϵ F/ f_k(a_i)= f_k(a_j) } F-(a_i,a_j)= {k ϵ F/ f_k(a_i)< f_k(a_j) } le but c'est de construire la matrice citée dans le tab 2 : qui represente l'ensemble F+(a_i,a_j) ∪ F=(a_i,a_j) un code que j ai developpé mais il afiche certains valeurs justes et autres non ! Sad
Code :
- For k = 0 To nbc - 1 'nbr de colonne entré par l utilisateur
- For j = 0 To nbl - 1 'nbl : nbr de lignes ici on fixe la ligne
- compt = 1
- For i = 0 To nbl - 1'on parcour le reste de lignes
- If i > j Then 'partie superieur du tableau
- If Feuil2.Cells(i + 3, k + 3) <= Feuil2.Cells(j + 3, k + 3) Then
- While j + 1 + compt <= nbl
- If IsEmpty(Feuil3.Cells(j + 3, j + 3 + compt)) Then
- Feuil3.Cells(j + 3, j + 3 + compt) = "{" & k + 1
- Else
- Feuil3.Cells(j + 3, j + 3 + compt) = Feuil3.Cells(j + 3, j + 3 + compt) & "," & k + 1
- End If
- Feuil3.Cells(j + 3, j + 3 + compt) = Feuil3.Cells(j + 3, j + 3 + compt) & "}"
- compt = compt + 1
- Wend
- End If
- End If
- If i < j Then
- If Feuil2.Cells(i + 3, k + 3) <= Feuil2.Cells(j + 3, k + 3) Then
- If IsEmpty(Feuil3.Cells(j + 3, j + 3 - compt)) Then
- Feuil3.Cells(j + 3, j + 3 - compt) = "{" & k + 1
- Else
- Feuil3.Cells(j + 3, j + 3 - compt) = Feuil3.Cells(j + 3, j + 3 - compt) & "," & k + 1
- End If
- Feuil3.Cells(j + 3, j + 3 - compt) = Feuil3.Cells(j + 3, j + 3 - compt) & "}"
- compt = compt + 1
- End If
- End If
- Next i
- Next j
- Next k
|
[img]
file:///C:/Users/USER/Desktop/ccccccccccccccccccccccccccccccccccccc.PNG
[/img]
|