Comparer lignes de 2 feuilles excel [Résolu/Fermé]

Signaler
-
 laure -
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

Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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?
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
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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
Merci beaucoup je vais essayé ca dans l'après midi si j'ai 5min. merci!
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)
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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...
ok, par contre je viens de m'aperçevoir que j'ai des doublons.
je vais essayer d'arranger ça avant
Bonjour,

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

http://cjoint.com/?BCiqnPsAaMr
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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
http://cjoint.com/?BCiqB5Az2DP

:)
la première colonne ne sert à rien c'était pour moi ^^
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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...
tu peux la supprimer, ce que j'avais fais lors du test
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
OK.
reste néanmoins le problème des doublons de factures.............
J'y regarde, mais ça semble compromettre le truc!
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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
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??
serait-il possible de le réaliser à l'aide d'un tableau croisé dynamique???
ou bien la macro est obligatoire?
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555