begin process at 2012 02 12 15:58:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Comparer deux tableau multidimensionnel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comparer deux tableau multidimensionnel

lundi 24 avril 2006 à 16:38:41 | Comparer deux tableau multidimensionnel

fg85

Membre Club
Bonjour,

Je suis en train de développer une petit application en VB.NET (avec Microsoft Visual Basic 2005 Express Edition) , et un "petit" problème ce pose à moi.

En effet, j'ai deux tableau multidimensionnel, exemple :Comparer deux tableau multidimensionnel
Le rouge, le bleu, et le orange représente chacun une ligne de ces 2 tableaux.

Je souhaiterai comparer le premier avec le deuxième, pour voir quelle sont les nouvelles lignes.

En gros, le tableau 2 est le tableau 1 + d'autres lignes, je cherche justement ces autres lignes.

J'ai beau essayer je n'y arrive pas.

Merci à mon sauveur
lundi 24 avril 2006 à 17:15:52 | Re : Comparer deux tableau multidimensionnel

Polack77

Si j'ai bien compris tu veut les lignes du tableau 2 qui n'apparaise pas dans le tableau 1?
Dans ce cas je testerais si la ligne 1 du tableau 2 apparait dans le tableau 1?
'-----------------------------------------
Sub test()
Dim Flag As Boolean
Dim Cpt, Cpt2 As Long
Do While Cpt < UBound(tableau2) 'San de tout les ligne de tab2
    Flag = False 'init du flag
    Do While Cpt2 < UBound(tableau1) And Flag = False 'scan de tout tab1 temps que ligne cpt de tableau 2 non détect
        If tableau2(Cpt) = tableau1(Cpt2) Then 'Si donnée identique (donnée tab2 = donnée tab1)
            Flag = True 'Marque que les donnée on été trouver
        End If
    Loop
    If Flag = False Then 'Si les donnée n'on pas été detect (donc donée dans tab2 pas dans tab1)
        'Note le numéro de la ligne ou recup donnée
    End If
Loop
End Sub
'-------------------------------

Voila (désol pour l'orthographe)

D'oh! Nuts!
Mmmmm...
 DONUTS
lundi 24 avril 2006 à 17:41:19 | Re : Comparer deux tableau multidimensionnel

fg85

Membre Club
Merci d'avoir répondu si vite. Mais cela ne fonctionne pas.

Mes tableaux sont de la forme :
a(0,4) et b(0,4)

ainsi la ligne :
If b(Cpt) = a(Cpt2) Then 'Si donnée identique (donnée tab2 = donnée tab1)
génère une erreur, car cela devrait être de la forme :
If b(x,x) = a(x,x) Then 'Si donnée identique (donnée tab2 = donnée tab1)
je n'y arrive pas
mardi 25 avril 2006 à 09:47:03 | Re : Comparer deux tableau multidimensionnel

Polack77

Je te prépare un petit code vite fait.
Répond vite si une des répoces ces questions est NON!!!
Tes tableau sont des variables (pas tableau Excel ou autre)
Tes tableau on donc 2 dimension?
Toute les donées de toute les "colones" doive être identique (si une donnée differante alors ligne differante)?


D'oh! Nuts!
Mmmmm...
 DONUTS
mardi 25 avril 2006 à 09:50:06 | Re : Comparer deux tableau multidimensionnel

Polack77

Ha oui les deux tableau on bien sur le même nombre de "colone"?

D'oh! Nuts!
Mmmmm...
 DONUTS
mardi 25 avril 2006 à 10:13:01 | Re : Comparer deux tableau multidimensionnel

Polack77

Réponse acceptée !
Bon alors je n'ai pas fait de test mais ca devrais le faire

'Le principe est de comparer toutes les ligne de test1 à test2 (temps que on ne l'a pas trouver):
'-----------------------------------------
Sub test()
Dim Test1(15, 15) As Long
Dim Test2(20, 15) As String 'Nombre de colone identique!!!
Dim Flag, Flag2 As Boolean
Dim CptLigne1, CptLigne2, CptColone As Long
    Do While CptLigne1 <= UBound(Test1, 1) 'Scan de toute les ligne de Test1
        Flag2 = True
        'Scan de toute les ligne de Test2 si ligne de test1 non trouver dans test2
        Do While CptLigne2 <= UBound(Test2, 1) And Flag2
            'Passe le flag à vrais (test la differance et non l'égalité)
            Flag = True
            'Scan de toute les colones temps que les donnée sont identique
            Do While CptColone <= UBound(Test1, 2) And Flag
                'Si les donnée sont differante stop la boucle (ça ne sert plus à rien!)
                If CStr(Test1(CptLigne1, CptColone)) <> CStr(Test2(CptLigne2, CptColone)) Then
                    'Flag à faux
                    Flag = False
                End If
                CptColone = CptColone + 1
            Loop
            If Flag Then
                'Ligne de test1 trouver dans ligne2 flag2 = faux (ligne unique)
                Flag2 = False
            End If
            CptColone = 0
            CptLigne2 = CptLigne2 + 1
        Loop
        If Flag2 Then
            'Ligne cptligne1 de test1 est unique
        Else
            'Ligne cptligne1 de test1 trouver dans test2 à la ligne cptligne2 - 1
        End If
        CptLigne2 = 0
        CptLigne1 = CptLigne1 + 1
    Loop
End Sub
'--------------


D'oh! Nuts!
Mmmmm...
 DONUTS
mardi 25 avril 2006 à 10:16:23 | Re : Comparer deux tableau multidimensionnel

Polack77

La fonction "cstr()" me sert à convertire les valeur des tableau en chaine de carac (cas peut eviter des problémes mais si les donnée son numeric utilise plutot "cdec()" car même si "1" et "1,0" pour toi et mois c pareille ce ne sont pas les même chaine de carac!!!)

D'oh! Nuts!
Mmmmm...
 DONUTS
mardi 25 avril 2006 à 12:09:49 | Re : Comparer deux tableau multidimensionnel

fg85

Membre Club
Tes tableau sont des variables (pas tableau Excel ou autre) => oui, elles sont toutes de type "string"
Tes tableau on donc 2 dimension? => oui
Toute les donées de toute les "colones" doive être identique (si une donnée differante alors ligne differante)? => eh bien par exemple a(0,0) peut être égal à b(5,0).

Je suis en train de tester le script.

http://fg.logiciel.free.fr
mardi 25 avril 2006 à 14:38:41 | Re : Comparer deux tableau multidimensionnel

fg85

Membre Club
Voici ce que cela donne comme code :
Dim Flag, Flag2 As Boolean
        Dim CptLigne1, CptLigne2, CptColone As Long
        Do While CptLigne1 <= UBound(b, 1) 'Scan de toute les ligne de Test1
            Flag2 = True
            'Scan de toute les ligne de Test2 si ligne de test1 non trouver dans test2
            Do While CptLigne2 <= UBound(a, 1) And Flag2
                'Passe le flag à vrais (test la differance et non l'égalité)
                Flag = True
                'Scan de toute les colones temps que les donnée sont identique
                Do While CptColone <= UBound(b, 2) And Flag
                    'Si les donnée sont differante stop la boucle (ça ne sert plus à rien!)
                    If CStr(b(CptLigne1, CptColone)) <> CStr(a(CptLigne2, CptColone)) Then
                        'Flag à faux
                        Flag = False
                    End If
                    CptColone = CptColone + 1
                Loop
                If Flag Then
                    'Ligne de test1 trouver dans ligne2 flag2 = faux (ligne unique)

                    Flag2 = False
                End If
                CptColone = 0
                CptLigne2 = CptLigne2 + 1
            Loop
            If Flag2 Then
                'Ligne cptligne1 de test1 est unique
                MsgBox("Nouvelle Item" & b(CptLigne1, 0))
                Console.WriteLine("Nouvelle Item" & b(CptLigne1, 0))
            Else
                'Ligne cptligne1 de test1 trouver dans test2 à la ligne cptligne2 - 1
            End If
            CptLigne2 = 0
            CptLigne1 = CptLigne1 + 1
        Loop


Le problème est que cela ne m'affiche rien. Je récapitule :
j'ai un tableau "a" et un tableau "b".
Le tableau "b" est le tableau "a" + certaines autres lignes.
Je cherche les lignes du tableau "b" non présentent dans le tableau "a".

Je pense qu'on n'est prêt de la solution, du moins j'espère .

[ Lien ]
[ Lien ]
mardi 25 avril 2006 à 15:54:51 | Re : Comparer deux tableau multidimensionnel

Polack77

Moi je n'ai pas de probléme avec le code que tu à mis (en VBA sous Excel office 2003)
Il semble juste que mes definition de variable soit à noter de cette façon et non comme je l'avais noter plus haut.

Dim Flag As Boolean, Flag2 As Boolean
Dim CptLigne1 As Long, CptLigne2 As Long, CptColone As Long

A part ca tout fonctione chez moi (la procédure m'affiche bien le "msgbox")!

D'oh! Nuts!
Mmmmm...
 DONUTS

1 2

Cette discussion est classée dans : comparer, tableau, lignes, multidimensionnel


Répondre à ce message

Sujets en rapport avec ce message

tableau sous word [ par hermia ] SalutJ 'ai créé un publipostage de sous word dans un tableau maisJ 'ai des lignes vides dans mon tableau,je souhaite les couper mais je ne sais pas co Macro Word + visual basic [ par voily2001 ] Salut ,voila je vous expose mon problème.J'ai un fichier texte de compremant des groupes de lignes séparées par des sauts de page.Ensuite j'ai un tab Insertion d'une nouvelle ligne dans un tableau [ par sharky ] Débutant qui débute :)tout est dans le titre, j'ai un tableau à deux dimension qui contient 2000 lignes et 8 colonnes et j'aimerai ajouter une ligne Cmt redimensioner un tableau multidimensionnel sans perdre son contenu??? [ par kawash ] Voila j'ai un petit probleme qui m'embete dont je n'arrive pas a trouver la solution..J'ai un tableau dynamique par ex:dim tableau()je dois souvent le Taillle de tableau Excel dans Powerpoint [ par cakos ] Bonsoir à tousJe cherche à modifier des tableaux excel dans un PPT sous VBA (le nombre de lignes est variable)Mon pb est que je n'arrive pas à gérer l URGENT ....Taille de tableau Excel dans Word [ par cakos ] Bonsoir à tousJe cherche à modifier des tableaux excel dans un DOC avec VBA (le nombre de lignes est variable)Mon pb est que je n'arrive pas à gérer l Tableau sur excel [ par backdraf ] J'ai un tableau excel qui a environ 40 colonnes et 400 lignes, et j'aimerai pouvoir copier les lignes de ce tableau dans un autre tableau qui se trouv macrovba pour word [ par nonard ] Bonjour, je souhaiterais connaître la formule pour supprimer les lignes vides dans un tableau word,j'aiessayer avec une formule d'excel, celle-ci fo tableau à n lignes et n colonnes [ par SANFER ] ogp2comment créer un tableau à 2+n colonnes et n lignes?Si vous pouviez m'aider?! Merci sélection de 20 lignes sur excel [ par bolley_c_d_m ] bonjour,je dois faire un macro sur excel qui me permette de selectionner les 20 dernières lignes d'un tableau composé de 5 colonnes.en fait, j'ai un t


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,132 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales