NEED Your HELP ! Comparer 2 gros fichiers/XlS 2016

niko1963 Messages postés 5 Statut Membre -  
 niko1963 -
Bonjour,

Je dois comparer 2 fichiers (20 rubriques format 'char', clé de 2 zones de 15 caractères) , et disposer de :
1/ la liste des lignes idem,
2/ la liste des lignes différentes,
2b// ... Avec , si possible, en colorant les rubriques modifiées.

Le fichier est volumineux (30000 lignes) .

Je choisis XLS pour disposer d'une présentation claire , directement utilisable.

Mais je ne sais comment procéder pour réussir cette comparaison .

Pourriez vous m'aider ?

Merci a tous .

Nicolas (Montpellier)

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    NEED Your HELP , pourquoi en anglais pour dire "besoin d'aide ?"

    où de trouve les 2 fichiers l'un par rapport à l'autre ?

    20 rubriques format 'char', clé de 2 zones de 15 caractères
    c'est à dire ?
    char ? plutôt access ?

    sans voir les 2 classeurs, difficile de t'aider

    pour cela
    Mettre les classeurs sans données confidentielles en pièce jointe sur
    https://mon-partage.fr/
    Puis faire un clic droit copier le raccourci et coller dans votre message

    des extraits de 5000 lignes feront l'affaire

    en attendant: une méthode de comparaison de 2 listes (m^fichier) qui pourra te monter une méthode (10 000 lignes comparées en 0,25 secondes)
    https://mon-partage.fr/f/ZTlAE1xp/

    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour Michel,

      Tu peux gagner 10% ,de rapidité en remplaçant :
      If Not dico1.exists(ref) Then
          dico1.Add ref, ref
      End If
      Par
      dico1(ref) =  ref


      cdlt
      Patrice
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      En bien plus rapide avec :
      '....
      With Sheets(1)
          derlig1 = .Range("A65536").End(xlUp).Row
          Set dico1 = CreateObject("Scripting.Dictionary")
          liste1 = Application.Transpose(.Range("A2:A" & derlig1).Value)
          For cptr = LBound(liste1) To UBound(liste1)
            dico1(liste1(cptr)) = liste1(cptr)
          Next
          nbre1 = dico1.Count - 1
          liste1 = dico1.items
      End With
      
      With Sheets(2)
          derlig2 = .Range("A65536").End(xlUp).Row
          Set dico2 = CreateObject("Scripting.Dictionary")
          liste2 = Application.Transpose(.Range("A2:A" & derlig2).Value)
          For cptr = LBound(liste2) To UBound(liste2)
            dico2(liste2(cptr)) = liste2(cptr)
          Next
          nbre2 = dico2.Count - 1
          liste2 = dico2.items
      End With
      '....
      0
    3. niko1963
       
      Merci Michel pour ce retour rapide.

      Pour l’anglicisme, désolé, le français aurait suffit, vous avez raison.

      Je posterai au plus tôt les données - que je n'ai pas sur moi ...- .
      Je suppose que le fichier comparer_v3 comporte une partie programme en VBA (prenant les données en feuill1 / feuill2 et les restituant en feuill3 ), qu'il me faudra modifier, pour adapter le fic XLS à mon cas ?
      Comment visualiser ce code ?

      ND
      0
      1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784 > niko1963
         
        Alt+F11
        0
    4. niko1963 Messages postés 5 Statut Membre
       
      Merci .
      (Avec une tablette, j'etais manchot ...)
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    OK, merci: ça donne combien avec ta méthode ?
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      0,10 secondes
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Bien vu! chez moi à peu près le même temps 0,125

    je fourgonne ta solution, merci
    0
  4. niko1963
     
    Un grand merci à tous.

    En fait, je vais utiliser la fonction "compare" de W365 ; ça marche très bien.
    https://www.youtube.com/watch?v=c4Wj2xuL0UQ

    Nicolas DUBELSKI
    0