Problème pour comparer des tableaux

cs_bumbo Messages postés 26 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 10 février 2010 - 20 août 2005 à 14:37
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 22 août 2005 à 00:31
bonjour, j'ai un petit soucis avec des tableaux

soit 2 tableaux (a titre d'exemple):

dim tableau1(10) as string
dim tableau2(10) as string

tableau1 = array("0","1","2","3","4","5","6","7","8","9")
tableau2 = array("0","1","2","3","4","5","6","7","8","9")
je met ces valeurs juste a titre d'exemple

je cherche une fonction qui me permettrait de comparer les 2 tableaux et que qui me dise si les valeurs contenues dans ces tableaux sont identiques ou pas

si quelqu'un peut me dire ca, sachant que je travaille en VB6, merci

9 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2005 à 16:18
Salut
Simple : Suffit te d'utiliser une boucle de lecture :

Dim Différent As Boolean, r As Long
For r = 0 To UBound(tableau1)
If Tableau1(r) <> Tableau2(r) Then
Différent = True
Exit For
End If
Next r
If Différent Then MsgBox "Tableaux différents !"

Il faut bien sûr que les deux tableaux aient le même nombre d'éléments

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2005 à 16:21
Re
Autre chose : Normalement, tu ne peux pas utiliser la commande Array sur une tableau dimensionné.
Il faut le dimensionner dynamiquement :
Dim Tableau1() As String
Dim Tableau2() As String

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 août 2005 à 16:29
même pas

Array ne marche que pour des Variant

Daniel
0
cs_bumbo Messages postés 26 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 10 février 2010
20 août 2005 à 17:48
oui j'ai vu l'erreur, mais c'etait juste un exemple tapé rapidement, pour que vous compreniez ce que je recherche...

j'avais déjà pensé a la boucle for, mais c'est vrai que je dois faire la comparaison assez complexe de tableaux...il n'y a donc aucune fonction vb qui gère ca?

en fouillant, j'aientendu parler de "array.equals", ca dit quelque chose a quelqu'un, c'est du vb6 ?

déjà merci pour les réponses
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
20 août 2005 à 19:14
Salut, je ne connais pas de fonction toute faite pour effectuer une compare de tableaux. Mais une petite astuce, utilisable avec des tableaux de strings à 1 dimension :

MsgBox StrComp(Join(t1, ""), Join(t2, ""))

Explik :
1 - join te permet de reconstituer une chaine avec les éléments d'un tableau (string) en choisissant un séparateur (là, j'ai pris "" comme séparateur).
2 - strcomp compare les 2 chaines obtenues :
0 = les chaines (donc les tableaux) sont égales
-1 = chaine (tableau) t1 < chaine (tableau) t2
1 = chaine (tableau) t1 > chaine (tableau) t2

En fait, cette astuce te permettra seulement de savoir si 2 tableaux de strings (à 1 dimension) sont égaux ou non. Peut-être qu'il faut même les trier avant.

Sinon, pour des tableaux d'integer ou autre, ça se complique mais la soluce de jack est bonne pour tous les types.

PS : array.equals, je n'ai vu ça qu'en java mais pas en vb6.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 août 2005 à 08:13
Canis Lupus < Sauf que si dans ces tableau il a :
Tableau1 -> "a","b","c","d"
Tableau2 -> "a","bc","","d"

... ton astuce (qui était très bien vu) ne va pas faire la différence !!

Christophe
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 août 2005 à 08:14
... vaudrait mieux ajouter un séparateur avec le Joint() pour être plus sur du coup, genre vbNullChar, tout est autant que ce caractère n'apparaissent jamais dans les éléments des tableaux.

Christophe
0
cs_bumbo Messages postés 26 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 10 février 2010
21 août 2005 à 22:47
En fait, je cherchais un fonction manière d'alléger mon code mais bon, vous rentrez dans des "idées" un peu trop complexe pour mon niveau de débutant... j'ai déjà fait mon script a base de boucles for, je vais laisser ca comme ca...
merci pour votre participation
A bientôt
Mathieu
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 août 2005 à 00:31
bumbo < En fait, pour comparer des tableau, el code de Jack est le plus passe-partout. Après Canis Lupus à proposer une astuce qui peut faire gagner du temps d'exécution mais faut faire gaffe au effet non désirable.
Bosse déjà avec le code de Jack, c'est un excellent début

Christophe.
0
Rejoignez-nous