probleme d'affichage vba

probleme d'affichage vba - VB/VBA/VBS - Programmation

Marsh Posté le 01-01-2017 à 12:57:33    

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 :
  1. For k = 0 To nbc - 1 'nbr de colonne entré par l utilisateur
  2. For j = 0 To nbl - 1  'nbl : nbr de lignes ici on fixe la ligne
  3. compt = 1
  4. For i = 0 To nbl - 1'on parcour le reste de lignes
  5. If i > j Then 'partie superieur du tableau
  6. If Feuil2.Cells(i + 3, k + 3) <= Feuil2.Cells(j + 3, k + 3) Then
  7. While j + 1 + compt <= nbl
  8. If IsEmpty(Feuil3.Cells(j + 3, j + 3 + compt)) Then
  9. Feuil3.Cells(j + 3, j + 3 + compt) = "{" & k + 1
  10. Else
  11. Feuil3.Cells(j + 3, j + 3 + compt) = Feuil3.Cells(j + 3, j + 3 + compt) & "," & k + 1
  12. End If
  13. Feuil3.Cells(j + 3, j + 3 + compt) = Feuil3.Cells(j + 3, j + 3 + compt) & "}"
  14. compt = compt + 1
  15. Wend
  16. End If
  17. End If
  18. If i < j Then
  19. If Feuil2.Cells(i + 3, k + 3) <= Feuil2.Cells(j + 3, k + 3) Then
  20. If IsEmpty(Feuil3.Cells(j + 3, j + 3 - compt)) Then
  21. Feuil3.Cells(j + 3, j + 3 - compt) = "{" & k + 1
  22. Else
  23. Feuil3.Cells(j + 3, j + 3 - compt) = Feuil3.Cells(j + 3, j + 3 - compt) & "," & k + 1
  24. End If
  25. Feuil3.Cells(j + 3, j + 3 - compt) = Feuil3.Cells(j + 3, j + 3 - compt) & "}"
  26. compt = compt + 1
  27. End If
  28. End If
  29. Next i
  30. Next j
  31. Next k


 
 
 
[img]
file:///C:/Users/USER/Desktop/ccccccccccccccccccccccccccccccccccccc.PNG
[/img]
 

Reply

Marsh Posté le 01-01-2017 à 12:57:33   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed