Comparaison de feuilles

32 réponses
Avatar
Jacquouille
Bonsoir,

Soit un fichier avec au minimum 12 feuilles (janv, févr...) construites de
la même manière:
N° membre Titre NOM RUE CP LOCALITE Tél. Email Choix
d'envoi
Chaque feuille a entre 400 et 500 noms de membres.
Chaque mois, des membres partent et des nouveaux arrivent.
Pour les partants, pas de prob car leur nom n'apparait plus le mois suivant.

Afin d'isoler les nouveaux membres, j'aimerais comparer la feuille de Fév
avec celle de Janvier.
Ensuite, créer une nouvelle feuille (Nouveaux Fév) sur laquelle on
retrouverait la même construction, mais uniquement pour les nouveaux
membres. C'est à dire, supprimer tous les noms de Fév qui sont en Janv. de
cette manière, il n'y aurait plus que les nouveaux.

Cerise: en lançant la macro, une "inpute-box" demanderait "pour quel mois on
veut les nouv membres". Ce inputbox servirait aussi à nommer la nouvelle
feuille créée.

Voilà 4 jours que je galère là-dessus et d'une fois à l'autre, cela va
moins bien.....
Vous comprenez aisément mon désarroi.

Grand merci et que le Grand Saint Nicolas vous apporte à tous et toutes ce
dont vous rêvez?
Perso, ce serait une machine à macros. -))

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

10 réponses

1 2 3 4
Avatar
MichD
Bonjour,

Une manière facile de procéder sans macro... pas de temps pour ça!

A ) Dans une nouvelle colonne de la feuille février, tu entres la formule suivante
que tu recopies sur l'ensemble des lignes:
=Nb.Si(Jan!$A$2:$A$500;A2)

Jan = nom de la feuille janvier
A2:A500 l'adresse de la colonne A où se retrouve le numéro du membre
A2 l'adresse de la première cellule où on retrouve le numéro du membre dans la feuille février

Les cellules qui affichent 0 représente les membres qui sont nouveaux. Tu fais un filtre sur cette
colonne et tu copies le résultat du filtre dans une nouvelle feuille

Voilà!
Avatar
Patrick
Hello jacques et le forum,

ici je fais une comparaison sur la colonne C uniquement(! et décidé
unilatéralement par moi-même) et dans les feuilles"jan" et "fev" ; ce
qui est différent ira en feuille "diff"
la différence est copiée pour la comparaison de "fev" vers "jan", pas le
contraire !!! et colonne C repète-je...
On pourrait mettre des inputbox ou le codename de la feuille mais
regarde toujours si ceci est une base pour te débrouiller ensuite :)

Sub Doublons2Colonnes() ' repérer par fonction "index"
Set ws1 = Sheets("Jan")
Set Ws2 = Sheets("fev")
Set Ws3 = Sheets("diff")
Ws3.Cells.Clear
Ws2.Select
Dim Plage1, Plage2
Set titre = ws1.[1:1]
Application.ScreenUpdating = False
Set Plage1 = ws1.Range("c2:c" & ws1.[c65000].End(xlUp).Row)
Set Plage2 = Ws2.Range("c2:c" & Ws2.[c65000].End(xlUp).Row)
[A:C].ClearComments
[A:C].Interior.ColorIndex = xlNone
For Each c In Plage2 ' si pas trouvé au mois précédant, on copie dans diff
If IsError(Application.Match(c.Value, Plage1, 0)) Then
titre.Copy Ws3.[A1]
c.Interior.ColorIndex = 3
c.EntireRow.Copy Destination:=Ws3.[A65000].End(xlUp)(2)
End If
Next c
End Sub


Le 4/12/2015 18:20, Jacquouille a écrit :
Bonsoir,

Soit un fichier avec au minimum 12 feuilles (janv, févr...) construites
de la même manière:
N° membre Titre NOM RUE CP LOCALITE Tél. Email
Choix d'envoi
Chaque feuille a entre 400 et 500 noms de membres.
Chaque mois, des membres partent et des nouveaux arrivent.
Pour les partants, pas de prob car leur nom n'apparait plus le mois
suivant.

Afin d'isoler les nouveaux membres, j'aimerais comparer la feuille de
Fév avec celle de Janvier.
Ensuite, créer une nouvelle feuille (Nouveaux Fév) sur laquelle on
retrouverait la même construction, mais uniquement pour les nouveaux
membres. C'est à dire, supprimer tous les noms de Fév qui sont en Janv.
de cette manière, il n'y aurait plus que les nouveaux.

Cerise: en lançant la macro, une "inpute-box" demanderait "pour quel
mois on veut les nouv membres". Ce inputbox servirait aussi à nommer la
nouvelle feuille créée.

Voilà 4 jours que je galère là-dessus et d'une fois à l'autre, cela va
moins bien.....
Vous comprenez aisément mon désarroi.

Grand merci et que le Grand Saint Nicolas vous apporte à tous et toutes
ce dont vous rêvez?
Perso, ce serait une machine à macros. -))

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Jacquouille
Bonjour Denis
Un grand merci pour cette approche. J'avais commencé par là,.
Ton système fonctionne à merveille.
Dès que Murphy sera parti, je vais essayer d'automatiser cela.
Merci et bonne St Nicolas

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
n3snpp$npa$

Bonjour,

Une manière facile de procéder sans macro... pas de temps pour ça!

A ) Dans une nouvelle colonne de la feuille février, tu entres la formule
suivante
que tu recopies sur l'ensemble des lignes:
=Nb.Si(Jan!$A$2:$A$500;A2)

Jan = nom de la feuille janvier
A2:A500 l'adresse de la colonne A où se retrouve le numéro du membre
A2 l'adresse de la première cellule où on retrouve le numéro du membre
dans la feuille février

Les cellules qui affichent 0 représente les membres qui sont nouveaux. Tu
fais un filtre sur cette
colonne et tu copies le résultat du filtre dans une nouvelle feuille

Voilà!


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Hello Pat,

Je vais regarder cela dès demain, bien au calme.
Merci pour ta proposition.
Bon WE et Bonne St Nicolas



Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Patrick" a écrit dans le message de groupe de discussion :
n3ud8f$t8q$

Hello jacques et le forum,

ici je fais une comparaison sur la colonne C uniquement(! et décidé
unilatéralement par moi-même) et dans les feuilles"jan" et "fev" ; ce
qui est différent ira en feuille "diff"
la différence est copiée pour la comparaison de "fev" vers "jan", pas le
contraire !!! et colonne C repète-je...
On pourrait mettre des inputbox ou le codename de la feuille mais
regarde toujours si ceci est une base pour te débrouiller ensuite :)

Sub Doublons2Colonnes() ' repérer par fonction "index"
Set ws1 = Sheets("Jan")
Set Ws2 = Sheets("fev")
Set Ws3 = Sheets("diff")
Ws3.Cells.Clear
Ws2.Select
Dim Plage1, Plage2
Set titre = ws1.[1:1]
Application.ScreenUpdating = False
Set Plage1 = ws1.Range("c2:c" & ws1.[c65000].End(xlUp).Row)
Set Plage2 = Ws2.Range("c2:c" & Ws2.[c65000].End(xlUp).Row)
[A:C].ClearComments
[A:C].Interior.ColorIndex = xlNone
For Each c In Plage2 ' si pas trouvé au mois précédant, on copie dans diff
If IsError(Application.Match(c.Value, Plage1, 0)) Then
titre.Copy Ws3.[A1]
c.Interior.ColorIndex = 3
c.EntireRow.Copy Destination:=Ws3.[A65000].End(xlUp)(2)
End If
Next c
End Sub


Le 4/12/2015 18:20, Jacquouille a écrit :
Bonsoir,

Soit un fichier avec au minimum 12 feuilles (janv, févr...) construites
de la même manière:
N° membre Titre NOM RUE CP LOCALITE Tél. Email
Choix d'envoi
Chaque feuille a entre 400 et 500 noms de membres.
Chaque mois, des membres partent et des nouveaux arrivent.
Pour les partants, pas de prob car leur nom n'apparait plus le mois
suivant.

Afin d'isoler les nouveaux membres, j'aimerais comparer la feuille de
Fév avec celle de Janvier.
Ensuite, créer une nouvelle feuille (Nouveaux Fév) sur laquelle on
retrouverait la même construction, mais uniquement pour les nouveaux
membres. C'est à dire, supprimer tous les noms de Fév qui sont en Janv.
de cette manière, il n'y aurait plus que les nouveaux.

Cerise: en lançant la macro, une "inpute-box" demanderait "pour quel
mois on veut les nouv membres". Ce inputbox servirait aussi à nommer la
nouvelle feuille créée.

Voilà 4 jours que je galère là-dessus et d'une fois à l'autre, cela va
moins bien.....
Vous comprenez aisément mon désarroi.

Grand merci et que le Grand Saint Nicolas vous apporte à tous et toutes
ce dont vous rêvez?
Perso, ce serait une machine à macros. -))

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com




---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Fichier exemple : http://www.cjoint.com/c/ELfoEgs3NrG
Avatar
MichD
Une version améliorée : http://www.cjoint.com/c/ELfo56J3vOG
Avatar
Pierre Fonds
On 2015-12-04 12:20, Jacquouille wrote:
Bonsoir,

Soit un fichier avec au minimum 12 feuilles (janv, févr...) construites
de la même manière:
N° membre Titre NOM RUE CP LOCALITE Tél. Email
Choix d'envoi
Chaque feuille a entre 400 et 500 noms de membres.
Chaque mois, des membres partent et des nouveaux arrivent.
Pour les partants, pas de prob car leur nom n'apparait plus le mois
suivant.

Afin d'isoler les nouveaux membres, j'aimerais comparer la feuille de
Fév avec celle de Janvier.
Ensuite, créer une nouvelle feuille (Nouveaux Fév) sur laquelle on
retrouverait la même construction, mais uniquement pour les nouveaux
membres. C'est à dire, supprimer tous les noms de Fév qui sont en Janv.
de cette manière, il n'y aurait plus que les nouveaux.





Si j'analyse bien, la feuille de février n'existe que par la mise à jour
de celle de janvier (élimination (-) et ajout (+) de membres et ainsi de
suite. Ne serait-il pas plus simple si tu inscrivais la date à laquelle
le membre se joint. Et même une autre colonne pour la date de départ. Ça
te permettrait de faire des tris. Tris selon départ mensuel ou admission
mensuelle etc. Tu pourrais même connaître la durée de l'adhésion au
moment d'un départ.

Mais je cause seulement. C'est toi qui voit.
Avatar
Jacquouille
Bonjour Denis

J'ai testé ta macro.
J'ai posé arbitrairement derCol à 10 car calculé sur la ligne des
titres(ligne 1) car, des fois, il n'y a pas de données pour cette colonne.

Non seulement, elle copie bien les nouveaux membres (en ligne complète),
mais, curieusement, elle m'ajoute la dernière ligne de Févr. ????

C'est grâve, docteur?
Vois ici:

http://www.cjoint.com/c/ELgocSWOaKn

Merci et bonne St Nicolas

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
n3uu37$2t4$

Une version améliorée : http://www.cjoint.com/c/ELfo56J3vOG


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Bonjour
En théorie, cela devrait aller comme tu le décris.
malheureusement, le fichier que je reçois tous les mois provient de la
maison mère et n'est qu'une partie du doc initial.
Celui-ci comprend tous les membres de Wallonie (8000?) et on en extrait
seulement ceux qui intéressent notre secteur via les codes postaux.
De plus, il y a des membres à vie, mais aussi un ancien système de
numérotation des membres. l'actuel est composé de la date d'entrée comme
membre, plus un n° de liste (0611201525, soit le 25° membre affilié le 6 Nov
2015)
Ce ne sera pas facile.
Mais, un tout grand merci pour ta proposition et pour le temps y consacré.
Bonne fin de WE


Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Pierre Fonds" a écrit dans le message de groupe de discussion :


On 2015-12-04 12:20, Jacquouille wrote:
Bonsoir,

Soit un fichier avec au minimum 12 feuilles (janv, févr...) construites
de la même manière:
N° membre Titre NOM RUE CP LOCALITE Tél. Email
Choix d'envoi
Chaque feuille a entre 400 et 500 noms de membres.
Chaque mois, des membres partent et des nouveaux arrivent.
Pour les partants, pas de prob car leur nom n'apparait plus le mois
suivant.

Afin d'isoler les nouveaux membres, j'aimerais comparer la feuille de
Fév avec celle de Janvier.
Ensuite, créer une nouvelle feuille (Nouveaux Fév) sur laquelle on
retrouverait la même construction, mais uniquement pour les nouveaux
membres. C'est à dire, supprimer tous les noms de Fév qui sont en Janv.
de cette manière, il n'y aurait plus que les nouveaux.





Si j'analyse bien, la feuille de février n'existe que par la mise à jour
de celle de janvier (élimination (-) et ajout (+) de membres et ainsi de
suite. Ne serait-il pas plus simple si tu inscrivais la date à laquelle
le membre se joint. Et même une autre colonne pour la date de départ. Ça
te permettrait de faire des tris. Tris selon départ mensuel ou admission
mensuelle etc. Tu pourrais même connaître la durée de l'adhésion au
moment d'un départ.

Mais je cause seulement. C'est toi qui voit.


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Salut Pat

Dès que j'ai peaufiné la solution de Denis, je me penche sur la tienne car 2
en même temps , c'est trop pour mon neurone.
Comme dit dans ma réponse à Denis, je garde la ligne 1 comme ligne de
titres, qui sera toujours la même.
Je vais aussi reprendre le système du bouton, qui est très commode.
Un tout grand merci et à dans pas bien longtemps. (le temps de manger tous
les chocolats de St Nicolas)
Bonne fin de WE à toi

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Patrick" a écrit dans le message de groupe de discussion :
n3ud8f$t8q$

Hello jacques et le forum,

ici je fais une comparaison sur la colonne C uniquement(! et décidé
unilatéralement par moi-même) et dans les feuilles"jan" et "fev" ; ce
qui est différent ira en feuille "diff"
la différence est copiée pour la comparaison de "fev" vers "jan", pas le
contraire !!! et colonne C repète-je...
On pourrait mettre des inputbox ou le codename de la feuille mais
regarde toujours si ceci est une base pour te débrouiller ensuite :)

Sub Doublons2Colonnes() ' repérer par fonction "index"
Set ws1 = Sheets("Jan")
Set Ws2 = Sheets("fev")
Set Ws3 = Sheets("diff")
Ws3.Cells.Clear
Ws2.Select
Dim Plage1, Plage2
Set titre = ws1.[1:1]
Application.ScreenUpdating = False
Set Plage1 = ws1.Range("c2:c" & ws1.[c65000].End(xlUp).Row)
Set Plage2 = Ws2.Range("c2:c" & Ws2.[c65000].End(xlUp).Row)
[A:C].ClearComments
[A:C].Interior.ColorIndex = xlNone
For Each c In Plage2 ' si pas trouvé au mois précédant, on copie dans diff
If IsError(Application.Match(c.Value, Plage1, 0)) Then
titre.Copy Ws3.[A1]
c.Interior.ColorIndex = 3
c.EntireRow.Copy Destination:=Ws3.[A65000].End(xlUp)(2)
End If
Next c
End Sub


Le 4/12/2015 18:20, Jacquouille a écrit :
Bonsoir,

Soit un fichier avec au minimum 12 feuilles (janv, févr...) construites
de la même manière:
N° membre Titre NOM RUE CP LOCALITE Tél. Email
Choix d'envoi
Chaque feuille a entre 400 et 500 noms de membres.
Chaque mois, des membres partent et des nouveaux arrivent.
Pour les partants, pas de prob car leur nom n'apparait plus le mois
suivant.

Afin d'isoler les nouveaux membres, j'aimerais comparer la feuille de
Fév avec celle de Janvier.
Ensuite, créer une nouvelle feuille (Nouveaux Fév) sur laquelle on
retrouverait la même construction, mais uniquement pour les nouveaux
membres. C'est à dire, supprimer tous les noms de Fév qui sont en Janv.
de cette manière, il n'y aurait plus que les nouveaux.

Cerise: en lançant la macro, une "inpute-box" demanderait "pour quel
mois on veut les nouv membres". Ce inputbox servirait aussi à nommer la
nouvelle feuille créée.

Voilà 4 jours que je galère là-dessus et d'une fois à l'autre, cela va
moins bien.....
Vous comprenez aisément mon désarroi.

Grand merci et que le Grand Saint Nicolas vous apporte à tous et toutes
ce dont vous rêvez?
Perso, ce serait une machine à macros. -))

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com




---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
1 2 3 4