Comparer lignes de 2 feuilles excel

Résolu/Fermé
laure - 7 mars 2012 à 13:21
 laure - 19 mars 2012 à 13:10
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 !
A voir également:

7 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
7 mars 2012 à 13:26
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
7 mars 2012 à 14:22
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
Merci beaucoup je vais essayé ca dans l'après midi si j'ai 5min. merci!
0
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
7 mars 2012 à 16:05
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
ok, par contre je viens de m'aperçevoir que j'ai des doublons.
je vais essayer d'arranger ça avant
0
Bonjour,

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

http://cjoint.com/?BCiqnPsAaMr
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 mars 2012 à 16:22
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
http://cjoint.com/?BCiqB5Az2DP

:)
0
la première colonne ne sert à rien c'était pour moi ^^
0

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

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 mars 2012 à 16:38
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
tu peux la supprimer, ce que j'avais fais lors du test
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 mars 2012 à 16:43
OK.
reste néanmoins le problème des doublons de factures.............
J'y regarde, mais ça semble compromettre le truc!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 mars 2012 à 17:09
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
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
serait-il possible de le réaliser à l'aide d'un tableau croisé dynamique???
ou bien la macro est obligatoire?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 mars 2012 à 08:35
0
oui
0