Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'infos.

Tempio

XLDnaute Occasionnel
Salut à tous, j'aurais besoin d'aide pour venir à bout de mon pb. J'aimerais pouvoir comparer deux feuilles d'un même classeur (étant chacune une BDD). La 2e feuille est une mise à jour de la 1ere. J'aimerais savoir en comparant les 2 feuilles si ya eu des individus qui se sont ajoutés ou si y en a qui sont partis. Puis dans la 3e feuille, je voudrais inserrer le nombre de personnes ajoutés ou le nombres de personnes n'appartenant plus à la 2e liste mais qui étaient dans la 1ere. En même temps aussi, je voudrais faire cette requête qui me donnera le nombre d'individus appartenant à une mm entité par exemple (ou qui ont la mm fonction).

Voici, je joins un fichier modele qui illustre bien ce que je veux faire. Merci d'avance !!!
 

Pièces jointes

  • Modele.xls
    18 KB · Affichages: 102
  • Modele.xls
    18 KB · Affichages: 95
  • Modele.xls
    18 KB · Affichages: 97

tdenfert

XLDnaute Impliqué
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Un essais à tester

Nb pour les plage le mieux serait de les nommer et de les rendre dynamique

a te lire
 

Pièces jointes

  • Copie de Modele.xls
    19.5 KB · Affichages: 80
  • Copie de Modele.xls
    19.5 KB · Affichages: 76
  • Copie de Modele.xls
    19.5 KB · Affichages: 79

Tempio

XLDnaute Occasionnel
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Merci à toi Tdenfert, ce que tu m propose est foctionnel mais manuel. si les ajouts ou suppressions étaient fait manuellement j'utiliserais ta solution mais les BDD actualisées proviendront d'un SGBD avec plusieurs lignes. j'aimerais juste qu'en copiant les données dans la feuille "Nouveau", qu'il y ait automatiquement une repercution (mise à jour) dans la feuille "Recup". J'imagine que cela est possible, merci encore d'avoir essayé.
 

sousou

XLDnaute Barbatruc
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Bopnjour à tous.
Voici un code, qui parrait lourd, mais facilement adaptable pour faire ce que tu veux.
A toi d'en modifier la forme
Cordialement


Public comptepartis, compte, comptef
Sub deb()
With Sheets("Nouveau")
Set dernière = dernièreligne(Sheets("Nouveau"), 1)
Set zone1 = .Range(.Cells(2, 1), .Cells(dernière.Row, 1))

End With


With Sheets("Ancien")
Set dernière = dernièreligne(Sheets("Ancien"), 1)
Set zone2 = .Range(.Cells(2, 1), .Cells(dernière.Row, 1))
End With

' Les nouveaux
For Each z1 In zone1
flag = 0
For Each z2 In zone2
If z1 = z2 Then

flag = 1
compte = compte + 1
End If
Next
If flag = 0 Then comptenouveau = comptenouveau + 1
Next
MsgBox comptenouveau

' les partis
For Each z2 In zone2
flag = 1
For Each z1 In zone1
If z1 = z2 Then flag = 0
Next
comptepartis = comptepartis + flag
Next
MsgBox comptepartis

'les doublons ou 4 et la coloone analysée
For Each z1 In zone1
comptef = -1
For Each z2 In zone1
If z1.Offset(0, 4) = z2.Offset(0, 4) Then
comptef = comptef + 1
End If
Next
If comptef > 0 Then MsgBox comptef & " " & z1
Next

End
End Sub

Function dernièreligne(feuil, col)
Set dernièreligne = feuil.Columns(col).End(xlDown)
End Function
 

Tempio

XLDnaute Occasionnel
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Salut à toi Sousou, je viens de compiler ta solution. Je reçois des MsgBox avec (4, 1, 1MMMM, 1NNNN). Je ne comprends pas bien ce que ça peut vouloir dire. Au lieu des MsgBox, j'aimerais pouvoir mettre ces valeur dans des cellules prévues dans la feuille "Recup". Est ce possible ?
 

Tempio

XLDnaute Occasionnel
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Ok, Sousou c'est presque ce que je veux faire mais avec des valeurs affichées dans le MsgBox dans des cellules qui sont dans la feuille "Recup". En plus au mieux d'afficher 1MMMM et 1NNNN qu'il les compte tout simplement comme avec le nombre d'ajouts (4). Merci d'avance...
 

Modeste

XLDnaute Barbatruc
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Bonjour,

Si j'ai bien compris ... et en ne changeant qu'une partie du code de sousou ...
 

Pièces jointes

  • Tempio.xls
    43 KB · Affichages: 98
  • Tempio.xls
    43 KB · Affichages: 87
  • Tempio.xls
    43 KB · Affichages: 88

Tempio

XLDnaute Occasionnel
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

C'est la réponse à ma question Modeste, merci à sousou et à toi. Surtout n'allez pas trop loin svp lol, il se pourrait que j'ai encore besoin de vous d'ici là. Juste une pte question : La ligne suivante néttoie les cellules de B7 à D7 (est elle obligatoire ?)
Sheets("Recup").Range("B7:D7").ClearContents.
Il se peut que les cellules dans lequelles je veuille inserrer mes données ne soient pas forcement dans cette plage (B7:D7) mais dans un tableau (lignes et colonnes différentes) cmt je fais ds ce cas ?
 

Modeste

XLDnaute Barbatruc
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Re-bonjour,

La ligne suivante néttoie les cellules de B7 à D7
Pour être précis, elle efface le contenu (donc pas les formats, ni les commentaires)

(est elle obligatoire ?)
... Ben non! :rolleyes:

Il se peut que les cellules dans lequelles je veuille inserrer mes données ne soient pas forcement dans cette plage (B7:D7) mais dans un tableau (lignes et colonnes différentes) cmt je fais ds ce cas ?
Toujours si je te comprends bien, en modifiant les instructions figurant aux lignes 28, 39 et 49 dans le code du dernier fichier :confused:
 

Tempio

XLDnaute Occasionnel
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

En effet Modeste on se comprend et je vois ce que tu veux dire (il suffit juste que je reférencie la cellule dans laquelle j'aimerais inserrer la donnée ds la feuille "Recup"). En tout cas, on reste en contact je l'espère et je vous fais signe de mes avancés pti à pti. Merci beaucoup pour votre aide les gars.
 

Tempio

XLDnaute Occasionnel
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

Je viens de tester le script avec les données réelles (480 lignes dans la feuille "Ancien" et 500 lignes dans celle de "Nouveau") cela donne le bon resultat sauf que ça rame un bon moment avant de l'afficher. Y aurait il pas un moyen d'assouplir le script svp ? Surtout que j'aimerais faire beaucoup de sous requetes comme celles de la ligne 48 (du code) pour afficher les resultats selon des catégories différentes.
 

Modeste

XLDnaute Barbatruc
Re : Comparer les données de 2 feuilles excel et dire si ya ajout ou suppression d'in

re-bonjour,

J'ai considéré que parmi les "nouveaux" il n'y avait pas de doublons dans les matricules (croisons les doigts !)
Code à tester, donc:
VB:
Sub deb()

Set liste = CreateObject("Scripting.Dictionary")

With Sheets("Nouveau")
Set zone1 = .Range(.Cells(2, 1), .Cells(.Range("A" & Application.Rows.Count).End(xlUp).Row, 1))
End With

With Sheets("Ancien")
Set zone2 = .Range(.Cells(2, 1), .Cells(.Range("A" & Application.Rows.Count).End(xlUp).Row, 1))
End With

For Each z2 In zone2 'constitution d'une liste sans doublons des "Anciens"
    If Not liste.exists(z2.Value) Then liste(z2.Value) = z2.Value
Next z2

For Each z1 In zone1 'chaque fois qu'un "nouveau" n'est pas dans la liste des "anciens"
    If Not liste.exists(z1.Value) Then
        comptenouveau = comptenouveau + 1 'compteur incrémenté
        If z1.Offset(0, 4) = "fonct9" Then comptef = comptef + 1 'compteur pour les "nouveaux" avec fonct9 en colonne E
    End If
Next z1

Sheets("Recup").Range("B7") = comptenouveau
Sheets("Recup").Range("D7") = comptef
Sheets("Recup").Range("C7") = zone2.Count - (zone1.Count - comptenouveau)

End Sub

En adaptant à ton fichier réel!
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 970
Membres
101 852
dernier inscrit
dthi16088