Comparer les données de deux feuilles excel

Tempio

XLDnaute Occasionnel
Salut à tous, j'ai un problème avec le script que j'utilise pour comparer les données de 2 feuilles excel d'un même classeur. En fait je constitue une liste qui me recupère les données de la 1ere feuille et je veux comparer les données de la 2e feuille à celle de la liste. Voici le script :

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 'on crée une liste avec le fichier ancien.
Next z2

Maintenant j'aimerais pouvoir faire compiler ceci qui ne fonctionne pas :

If liste.exists(z1.Value) Then ' c'est ici qu'on calcul les départs en TGI.

'If z2.Offset(0, 6) = "01" And z1.Offset(0, 8) = "11" Then deptgi = deptgi + 1 ceci passe pas
If z1.Offset(0, 8) = "11" And liste(z2.Offset(0, 6)) = "01" Then deptgi = deptgi + 1 'ceci aussi donne une erreure


En fait il ya des personnes de ma 1ere feuille (Ancien) qui avaient le code "01" pour qui se code est devenu "11" dans la seconde feuille (Nouveau). Il faut noter aussi qu'il n'ya pas de doublons dans mes données. Merci d'avance ...

End If
 

Tempio

XLDnaute Occasionnel
Re : Comparer les données de deux feuilles excel

Fo_rum, j'ai pourtant mis plus haut le code que m'a proposé Sousou et j'imagine qu'il l'a fait en MP parce que j'ai commencé par lui écrire en MP.

Re

je ne sais pas comment tu cherches mais je t'avais donné la direction à suivre.
Ne voyant pas la proposition de Sousou, je suppose qu'il te l'a faite parvenir par MP.
Si c'est le cas je pense que ce n'est pas dans l'esprit d'un Fo_rum !
 

Bebere

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

bonsoir Tempio,Yann,Forum
avec evaluate,sumproduct et countif
à bientôt
 

Pièces jointes

  • EFFECTIFSTempio.zip
    14.7 KB · Affichages: 43
  • EFFECTIFSTempio.zip
    14.7 KB · Affichages: 41
  • EFFECTIFSTempio.zip
    14.7 KB · Affichages: 46

YANN-56

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

Bonsoir Bebere :), et à tous,

CountIf, Evaluate et SumProduct sont des bébêtes que je n'ai jamais taquinées.

D'où le bien fondé de ma signature!

Je garde ton exemple dans mes archives.

Quant au mien, je l'ai rectifié suite à la remarque de Tempio.

Amicalement, et au plaisir.

Yann
 

Pièces jointes

  • EFFECTIFS_B.xls
    39 KB · Affichages: 58

Tempio

XLDnaute Occasionnel
Re : Comparer les données de deux feuilles excel

Bonjour à tous, j'ai regardé vos propositions et elles me semblent ok seulement je ne suis pas aussi doué que vous alors svp j'espère que cela ne vous dérrange pas de me commenter vos scripts. Merci d'avance.
 

YANN-56

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

Bonjour Tempio, Fo_rum, Bebere, et à ceux qui passeront par ici,

Code:
Private Sub CommandButton1_Click()
With ActiveSheet
' Dans le cas de la sélection d'une autre feuille en amont...> Sinon inutile.
La Feuille "Tableau est Active, car c'est elle qui a le bouton.

Je mets à zéro les cellules précédemment remplies:
Code:
Range(Cells(10, 5), Cells(10, 12)).Value = "": Range(Cells(16, 5), Cells(16, 12)).Value = ""

Je fais une boucle sur la colonne 5 (E) de la Feuille "Ancien" en me basant, pour le nombre,
sur la colonne (A) qui est certainement remplie.
Code:
For i = 2 To Worksheets("Ancien").Range("A65536").End(xlUp).Row

Je cherche dans la ligne 8 de "Tableau" la cellule correspondant à la colonne 5 de "Ancien"
Code:
COLONNE_CONCERNEE = Range(Cells(8, 1), Cells(8, 12)) _
.Find(Worksheets("Ancien").Cells(i, 5).Value, LookIn:=xlValues, lookat:=xlPart).Column

Ayant trouvé la colonne où elle se trouve (Par exemple 9 pour ATHQ) je cherche "CDI" ou "CDD"
(Donnée en colonne 4 (D) de "Ancien" dans la ligne en-dessous...Soit dans la colonne 9 ou 10 (Ce pourquoi le "+1")

Code:
SOUS_COLONNE_CONCERNEE = Range(Cells(9, COLONNE_CONCERNEE), Cells(9, COLONNE_CONCERNEE + 1)) _
.Find(Worksheets("Ancien").Cells(i, 4).Value, LookIn:=xlValues, lookat:=xlPart).Column

Maintenant: Puisque j'ai "ATHQ" et "CDD" dans la ligne fouillée de "Ancien" j'ajoute une unité dans
la cellule (10,10).
Code:
Cells(10, SOUS_COLONNE_CONCERNEE).Value = Cells(10, SOUS_COLONNE_CONCERNEE).Value + 1
Next i

"Faut-il vous l'emballer? C'est pour offrir?" :) :)

Maintenant, il y a deux choses que je te conseille:

- F1 après avoir sélectionné un mot dans le code (Find, par exemple)

- CTRL + A dans la page du code. Collage dans une feuille Word,
et deux outils fantastiques pour apprendre: Stylo à bille et Stabilo.

Voire même de s'amuser à changer le nom des variables pour voir ce qui est du Wind
ou du rédacteur de la Macro.

Au boulot, et bon courage.

Amicalement, et restant disponible au cas où.

Yann
 

Tempio

XLDnaute Occasionnel
Re : Comparer les données de deux feuilles excel

Merci YANN-56 même si je n'ai pas tout compris. J'ai regardé ton code mais tu ne calcules pas les personnes en retour TGI (c'est à dire qu'ils étaient par exemple en CDD dans "Ancien" mais passent en CDI dans "Nouveau"). Voici je te joins mon fichier avec plus de détails pour mieux t'éclaircir. Si cela ne te dérrange pas, j'aurais aimé également que tu me commente tes lignes de code dans le fichier même stp. Merci encore.

Bebere, ton script ne m'a pas l'air très compliqué également pour un débutant comme moi, ce serait aussi plus facile à comprendre si tu pouvais me le commenter stp pour que j'arrive à adapter dans le fichier réel.
 

Pièces jointes

  • Test.xls
    57.5 KB · Affichages: 35
  • Test.xls
    57.5 KB · Affichages: 31
  • Test.xls
    57.5 KB · Affichages: 30

YANN-56

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

Re Tempio,

Merci de préciser l'adresse de facturation et le mode de paiement!

Attention!

A courir les mains dans les poches, tu as toutes les chances de te viander!!!

Bonne route. :eek:

Cordialement.

Yann
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

Bonjour Tempio,Yann
une version avec commentaires
à bientôt
 

Pièces jointes

  • EFFECTIFSTempio.zip
    14.3 KB · Affichages: 39
  • EFFECTIFSTempio.zip
    14.3 KB · Affichages: 32
  • EFFECTIFSTempio.zip
    14.3 KB · Affichages: 35

YANN-56

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

Re Tempio, Bonsoir Bebere, et à tous,

Je ne travaille jamais sur une Feuille Excel!
(Mon aide sur ton fil a donc été une exception...... Tu peux regarder mes autres interventions sur XLD)

Elles ne me servent que de Bases de Données, et mes applis n'ont généralement qu'une Feuille avec un Bouton.

De mon coté j'utilise les ListView, et leur analyse après les avoir chargées.

Il est évident que si tu es débutant, cela ne va pas être de la tarte à comprendre.

Quand j'aurai une pause dans ce que j'ai en chantier, je te ferai une bidouille répondant à ton projet.
(Du moins la partie de ce que j'ai cru comprendre), car il est intéressant.

Comme il y a en cet instant 245 affichages de ta question, et que ton sujet est bien décrit,
j'en déduis que cela pourrait intéresser autres visiteurs. (Bien que personne ne l'ait dit!):confused:

-----------------------------------------
Ceci par suite de ton M.P. dont tu devrais éviter l'utilisation, car cela n'est pas dans l'esprit d'XLD.
Je pense que ce service est fait pour autres discours n'ayant rien à voir avec le contenu de la discussion en cours!
-----------------------------------------

Pendant ce temps, cherche, triture, bidouille, et tu avanceras.

Mon autre façon de procéder viendra un jour.

Bonne soirée.

Yann
 

bestsh

XLDnaute Nouveau
Re : Comparer les données de deux feuilles excel

Bonjour le forum, Hello berbere, tempio, Yann-56 et les autres

J'ai un autre problème en ce qui concerne la comparaison de fichiers pour ma part mais plus simple apparamment (quoique...je cherche encore )

- J'ai une BDD avec un champ email
- J'ai un second fichier qui regroupe des emails (Feuil1 A:A) et des domaines (Feuil2 A:A) à exclure

je souhaite mettre une macro qui va regarder dans le 2e fichier et qui m'efface toutes les lignes de ma bdd contenant l'email ou le domaine présent dans ce 2e fichier.

Pour que ce soit plus clair je vous joint un fichier si vous avez une idée.

Merci d'avance.
 

Pièces jointes

  • Exemple.xls
    21.5 KB · Affichages: 37
  • Exemple.xls
    21.5 KB · Affichages: 45
  • Exemple.xls
    21.5 KB · Affichages: 47

Paritec

XLDnaute Barbatruc
Re : Comparer les données de deux feuilles excel

Bonjour bestch le forum
tu as posté deux sujets
voilà la réponse pour l'autre demande
a+
papou:)
VB:
Sub supprimer()
    Dim i&, fin&, fin1&, wbks As Workbook, wbkc As Workbook, chemin$, aa As Variant, a&
    Set wbkc = ThisWorkbook
    chemin = ThisWorkbook.Path
    fin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    Set wbks = Workbooks.Open(chemin & "\Exclus.xls")
    aa = wbks.Sheets("Feuil1").Range("A2:A" & wbks.Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row)
    wbks.Close 0
    With ActiveSheet
        For a = fin to 2 step -1
            For i = 1 To UBound(aa)
                If Split(.Cells(a, 1), "@")(1) = aa(i, 1) Then .Cells(a, 1).Delete shift:=xlUp: GoTo 1
            Next i
1        Next a
    End With
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 333
Messages
2 087 371
Membres
103 528
dernier inscrit
maro