kicest Mais qui c'est ce kicest ? | carbon_14 a écrit a écrit :
Y a pas un indice qui piétine ou des données triées qui sont reprises dans la boucle à l'infini ? Un mode Pas à Pas ne permet pas de suivre l'évolution du programme ?
Sinon, pour être plus clair/lisible, on peut décomposer
if col(i)>col(i+1) OR (col(i)>=col(i+1) AND col2(i)>col2(i+1)) or (col(i)>=col(i+1) AND col2(i) >= col2(i+1) AND col3(i) > col3(i+1)) then
par K1 = col(i) > col(i+1)
K2 = col(i) >= col(i+1)
K3 = col2(i) > col2(i+1)
K4 = col2(i) >= col2(i+1) K5 = col3(i) > col3(i+1)
if K1 OR (K2 AND K3) OR (K2 AND K4 AND K5) then
Le tri doit être descendant, croissant ? for i= 1 to NbLignes - 1
if (col(i) > col(i+1)) then
X = col(i+1)
col(i + 1) = col(i)
col(i) = K
end if
next i
Avec cette méthode, faut faire plusieurs passages, me semble-t-il, car on ne compare qu'au suivant.
Le Pas à Pas, c'est très pratique pour voir si la logique écrite fait bien ce qu'on désire .
|
Ba c'est balaud, en fait j'ai posté sur le forum, ma réponse !!! Et oui en la rédigeant, j'avais corrigé l'erreur qui plantait mon tri (En fait un >= remplacé par un > ). Ma syntaxe fonctionne donc correctement, en tout cas je ne savais pas que l'on pouvait stocker une expression dans une variable, cela va alléger mon code .....
merci.
Encore une question sur ce qui me pose le plus de problèmes les tableaux (array). Je les utilise à outrance, mais je ne connais aucunes methodes pour cet objet.
alors je "boucle" pas mal et cela ralentit mon programme. question très certainement de débutant mais bon je la pose tout de même.
J'ai 2 array.
un array assez grand (3000 index de 20 colonnes)
dim array1 (1 to 3000,1 to 20)
et un autre tres petit (20 index de 1 colonne)
dim array2 (1 to 20)
Les 2 sont remplis, mais maintenant je cherche la manière de connaitre :
les lignes de array1, contenant les 20 valeurs de array2.
les lignes de array1, contenant au moins 19 valeurs de array2.
les lignes de array1, contenant au moins 18 valeurs de array2.
Etc etc ...
et meme si c'était possible de préciser de manière variabiliser le nombre de valeurs à trouver de array2 (car array2 peut n'avoir que 3 colonnes par exemple, 20 colonnes etant le maximum)
j'ai commencé mais je suis bloqué, je ne sais pas par quel bout prendre ca :
voici donc le debut de mes experimentations lol
dim a_trouver, trouve as integer
'--------------------------------
'Fixer le nombre de col a trouver de array2
'--------------------------------
a_trouver = 3
trouve = 0
''--------------------------------------------
''Variante trouver tous les colonnes de array2
''a_trouver=ubound(array2)
''--------------------------------------------
for a = lbound(array1) to ubound(array1)
for b = 1 to 20
for c = lbound(array2) to ubound(array2)
if array2(c) = array1(a,b) then
trouve = trouve + 1
else
next b
end if
if a_trouver <> trouve then
next c
else
msgbox "La ligne " & a & " de array1 a les val de array2"
trouve = 0
next a
end if
Mais la je patauge ..............
Merci de vos reponses. |