Comparer lignes de 2 feuilles excel

Résolu
Bonjour,

J'aurais besoin d'aide, je ne suis pas experte d'Excel... je voudrais pouvoir comparer des lignes en faisant ressortir les différences, absences, nouveautés d'un fichier à l'autre.

je m'explique :

je travaille sur les relances clients.
j'ai un tableau avec comme champs :
Numéro facture, Numéro client, Date Facture, Date échéance, nombre de jour de retard, Montant facture, reste dû, niveau de relance.

Chaque mois je fais une importation sur excel (à partir d'un autre logiciel ) de toutes ces données.
Je dispose donc de plusieurs feuilles avec à chaque fois un tableau en date du « ... »
Chaque mois j'ai un nouveau tableau ou de nouvelles factures impayées apparaissent, d'autres disparaissent (factures payées) et d'autres dont le « reste dû » diminue (facture payée en partie).
Je souhaiterais avoir une bonne visualisation d'un mois à l'autre des factures qui ont été payées (lignes disparues), les nouvelles et l'évolution du « reste dû ». J'espère avoir été assez claire... merci d'avance !

7 réponses

  1. Modérateur
    Bonjour,

    Je ne vois que l'utilisation d'une macro pour réaliser ceci.

    Tes numéros de facture sont bien en colonne A? Sont ils uniques ou y a t'il des doublons de n° de facture?
    0
    1. Merci pour ta réponse pijaku oui j'ai bien les n° de facture en colonne a et il n'y a pas de doublon
      0
  2. Modérateur
    Premier essai
    Sub trier_factures()
    Dim Dico1 As Object, Dico2 As Object, Tabl1, Tabl2, i As Long
    
    Set Dico1 = CreateObject("Scripting.Dictionary")
    Set Dico2 = CreateObject("Scripting.Dictionary")
    With Sheets("Mois précédent")
        Tabl2 = .Range("A3", .Range("H" & Rows.Count).End(xlUp))
        For i = LBound(Tabl2) To UBound(Tabl2)
            If Not Dico1.Exists(Tabl2(i, 1)) Then Dico1.Add Tabl2(i, 1), Tabl2(i, 7)
        Next
    End With
    
    With Sheets("Extraction")
        Tabl1 = .Range("A3", .Range("A" & Rows.Count).End(xlUp))
        For i = LBound(Tabl1) To UBound(Tabl1)
            If Not Dico2.Exists(Tabl1(i, 1)) Then Dico2.Add Tabl1(i, 1), Tabl1(i, 1)
        Next
        For i = LBound(Tabl1) To UBound(Tabl1)
            If Not Dico1.Exists(Tabl1(i, 1)) Then
                .Range("A" & i + 2).Interior.ColorIndex = 36
            Else
                .Range("A" & i + 2).Interior.ColorIndex = 3
                .Range("I" & i + 2).Value = CDbl(Dico1.Item(Tabl1(i, 1))) - CDbl(.Range("G" & i + 2).Value)
            End If
        Next
    End With
    
    With Sheets("Mois précédent")
        For i = LBound(Tabl2) To UBound(Tabl2)
            If Not Dico2.Exists(Tabl2(i, 1)) Then
                .Range("A" & i + 2).Interior.ColorIndex = 35
            End If
        Next
    End With
    End Sub
    
    0
    1. Merci beaucoup je vais essayé ca dans l'après midi si j'ai 5min. merci!
      0
    2. Ca me met le message d'erreur suivant :

      Erreur d'exécution '16'
      Expression trop complexe

      pour la ligne :
      .Range("I" & i + 2).Value = CDbl(Dico1.Item(Tabl1(i, 1))) - CDbl(.Range("G" & i + 2).Value)
      0
  3. Modérateur
    Erreur d'exécution '16'
    Expression trop complexe

    Pour moi c'est du jamais vu...
    Je ne connais pas ce message d'erreur...
    Peux tu stp, me passer une copie de ton fichier, en supprimant les infos confidentielles (noms de société etc...) que je puisses y regarder de plus près? Le format de tes données notamment...
    utilises le site que j'ai moi même utilisé plus haut : https://www.cjoint.com/
    Tu va sur ce site, créées un lien vers ton fichier, copies ce lien et viens le coller dans une réponse...
    0
    1. ok, par contre je viens de m'aperçevoir que j'ai des doublons.
      je vais essayer d'arranger ça avant
      0
  4. Bonjour,

    Voici mon fichier. Je n'ai cependant pas la possibilité de supprimer les doublons de factures...

    http://cjoint.com/?BCiqnPsAaMr
    0
    1. Modérateur
      Bonjour,

      Désolé Laure, je ne peux pas ouvrir les fichiers .xlsm...
      Peux tu stp l'enregistrer sous : type classeur excel 97-2003 et me le transférer à nouveau?
      Merci
      0
    2. http://cjoint.com/?BCiqB5Az2DP

      :)
      0
    3. la première colonne ne sert à rien c'était pour moi ^^
      0
  5. Modérateur
    Fichier reçu.
    Cependant, je dois revoir le code car tu as une colonne supplémentaire... La colonne A n° n'était pas prévue...
    0
    1. tu peux la supprimer, ce que j'avais fais lors du test
      0
    2. Modérateur
      OK.
      reste néanmoins le problème des doublons de factures.............
      J'y regarde, mais ça semble compromettre le truc!
      0
    3. Modérateur
      effectivement, les doublons m'empêchent d'obtenir la différence entre le reste dû ce mois-ci et le reste dû du mois précédent...

      Par contre, j'arrive bien à colorer les factures :
      - nouvelles
      - disparues

      https://www.cjoint.com/?BCirjJK7bB2
      0
  6. Bonjour pijaku, merci pour ton aide !
    je reviens sur le sujet,
    après reflexion j'aimerai créer une nouvelle feuille en distinguant :
    - les nouvelles factures (nouveau n° de facture pas présents dans la feuille "mois précédent"
    - les factures payées (factures disparues)
    - les factures impayées (inchangées)

    peux-tu m'aider??
    0
    1. serait-il possible de le réaliser à l'aide d'un tableau croisé dynamique???
      ou bien la macro est obligatoire?
      0