Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparaison de ligne

20 réponses
Avatar
artintel
Bonjour,

Dans un fichier qui contient des milliers de lignes pour des milliers
de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
personne. Je dois faire un controle sur les doublons.

Pour le moment je ne sais le faire que visuellement en triant les
donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
ne sais pas par ou commencer ?

10 réponses

1 2
Avatar
Corto
Bonjour ,
Je t'envoie une fonction personnelle que j'ai développé dans un but
proche, elle renvoie la plage de données sans les doublons.
Function Unique(DONNEES As Range) As Variant
ReDim MONTAB(DONNEES.Rows.Count)
XCPT = 0
For Each XXX In DONNEES.Cells
Set XFND = DONNEES.Find(XXX.Value, LookIn:=xlValues,
LookAt:=xlWhole)
If XXX.Row = XFND.Row Then
MONTAB(XCPT) = XXX
XCPT = XCPT + 1
End If
Next XXX
ReDim Preserve MONTAB(XCPT - 1)
Unique = Application.Transpose(MONTAB)
End Function
Tu la colles dans un module et ensuite tu peux utiliser la fonction dans
ta feuille. Attention, c'est une fonction matricielle qu'il faut valider
par Ctrl+Maj+Entrée

Corto

a écrit :
Bonjour,

Dans un fichier qui contient des milliers de lignes pour des milliers
de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
personne. Je dois faire un controle sur les doublons.

Pour le moment je ne sais le faire que visuellement en triant les
donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
ne sais pas par ou commencer ?



Avatar
Misange
Bonjour,
tu peux utiliser une mise en forme conditionnelle.
choisi la formule est et inscrit celle-ci
=SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100=$B2)*($C$2:$C$100=$C2))>1
Attention, les 3 plages étudiées doivent avoir la même taille.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

a écrit :
Bonjour,

Dans un fichier qui contient des milliers de lignes pour des milliers
de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
personne. Je dois faire un controle sur les doublons.

Pour le moment je ne sais le faire que visuellement en triant les
donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
ne sais pas par ou commencer ?


Avatar
Jean Philippe U
On 7 nov, 13:08, Misange wrote:
Bonjour,
tu peux utiliser une mise en forme conditionnelle.
choisi la formule est et inscrit celle-ci
=SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100=$B2)*($C$2:$C$100=$C2)) >1
  Attention, les 3 plages étudiées doivent avoir la même taille.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki. free.fr/wikihttp://www.excelabo.net

a écrit :



> Bonjour,

> Dans un fichier qui contient des milliers de lignes pour des milliers
> de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
> personne. Je dois faire un controle sur les doublons.

> Pour le moment je ne sais le faire que visuellement en triant les
> donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
> DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
> ne sais pas par ou commencer ?- Masquer le texte des messages précé dents -

- Afficher le texte des messages précédents -



Une autre solution
insere une colonne et tu met une formule du style
=SI(A21¢0&A19¡8;"**********";"")
tu fais un copier coller vers le bas
et tout tes doublons aurons des **********
tu pourras vérifier ces données avant de les suprimer
a+
Avatar
Misange
Ta solution Jean Philippe ne fonctionne que si tes doublons sont dans
deux lignes qui se suivent... Sinon, pour chaque valeur de la colonne A,
tu dois tester si elle est égale à une autre valeur de la colonne A.
C'est ce que permettent de faire des formules matricielles (somme prod
étant une matricielle qui a le bon gout de ne pas demander une
validation par ctrl maj enter)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Jean Philippe U a écrit :
On 7 nov, 13:08, Misange wrote:
Bonjour,
tu peux utiliser une mise en forme conditionnelle.
choisi la formule est et inscrit celle-ci
=SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100=$B2)*($C$2:$C$100=$C2))>1
Attention, les 3 plages étudiées doivent avoir la même taille.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki.free.fr/wikihttp://www.excelabo.net

a écrit :



Bonjour,
Dans un fichier qui contient des milliers de lignes pour des milliers
de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
personne. Je dois faire un controle sur les doublons.
Pour le moment je ne sais le faire que visuellement en triant les
donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
ne sais pas par ou commencer ?- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Une autre solution
insere une colonne et tu met une formule du style
=SI(A21¢0&A19¡8;"**********";"")
tu fais un copier coller vers le bas
et tout tes doublons aurons des **********
tu pourras vérifier ces données avant de les suprimer
a+






Avatar
artintel
Je vois pas trop ce que vous me proposez... Vraiment desole, ma
dificulte c'est de parcourir l'ensemble des cellules et de les
traiter... Je pense que vous vous en doutez ;o) J'aurais vu un truc
comme cela :

NOM (colonne A) puis PRENOM(colonne B) puis DATEDE NAISSANCE(colonne
C)

3 colonnes A, B et c correspondant a nom, prenom et dateNaissance

la macro fait

// i variant de 1 a la valeur 'N' du nombre de lignes de la feuille
// j variant de 1 a la valeur 'N' du nombre de lignes de la feuille

i=1
j=2

DEBUT
TANT QUE i<> N

TANT QUE j<>N

SI Ai=Aj
SI Bi=Bj
Si Ci=Cj
METTRE_EN_GRAS(Ai,Bi,Ci)
FIN SI
FIN SI
FIN SI

ELSE j=j+1

FIN TANT QUE j<>N

FIN TANT QUE i<> N
END




Corto a écrit :
Bonjour ,
Je t'envoie une fonction personnelle que j'ai d�velopp� d ans un but
proche, elle renvoie la plage de donn�es sans les doublons.
Function Unique(DONNEES As Range) As Variant
ReDim MONTAB(DONNEES.Rows.Count)
XCPT = 0
For Each XXX In DONNEES.Cells
Set XFND = DONNEES.Find(XXX.Value, LookIn:=xlValues,
LookAt:=xlWhole)
If XXX.Row = XFND.Row Then
MONTAB(XCPT) = XXX
XCPT = XCPT + 1
End If
Next XXX
ReDim Preserve MONTAB(XCPT - 1)
Unique = Application.Transpose(MONTAB)
End Function
Tu la colles dans un module et ensuite tu peux utiliser la fonction dans
ta feuille. Attention, c'est une fonction matricielle qu'il faut valider
par Ctrl+Maj+Entr�e

Corto

a �crit :
> Bonjour,
>
> Dans un fichier qui contient des milliers de lignes pour des milliers
> de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
> personne. Je dois faire un controle sur les doublons.
>
> Pour le moment je ne sais le faire que visuellement en triant les
> donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
> DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
> ne sais pas par ou commencer ?
>


Avatar
artintel
Bonsoir,

J'ai recopie deux lignes pour etre sur qu'il y en a au moins deux et
j'ai recopie cette formule =SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100=
$B2)*($C$2:$C$100=$C2))>1 ca donne FAUX...

Il me met FAUX alors que le premier doublon est en ligne 10 et le
deuxieme en ligne 13...

Misange a écrit :
Bonjour,
tu peux utiliser une mise en forme conditionnelle.
choisi la formule est et inscrit celle-ci
=SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100=$B2)*($C$2:$C$100=$C2)) >1
Attention, les 3 plages �tudi�es doivent avoir la mï ¿½me taille.
Misange migrateuse
XlWiki : Participez � un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

a �crit :
> Bonjour,
>
> Dans un fichier qui contient des milliers de lignes pour des milliers
> de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
> personne. Je dois faire un controle sur les doublons.
>
> Pour le moment je ne sais le faire que visuellement en triant les
> donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
> DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
> ne sais pas par ou commencer ?


Avatar
JB
Bonsoir,

Avec le filtre élaboré:

http://cjoint.com/?lhtidUXAXR


JB
http://boisgontierjacques.free.fr



On 7 nov, 12:20, wrote:
Bonjour,

Dans un fichier qui contient des milliers de lignes pour des milliers
de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
personne. Je dois faire un controle sur les doublons.

Pour le moment je ne sais le faire que visuellement en triant les
donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
ne sais pas par ou commencer ?


Avatar
Misange
Bonsoir,
un exemple icic
http://cjoint.com/?lhtrrc8Xul

ce n'est pas une formule à mettre dans la feuille mais à mettre dans
format/mise en forme conditionnelle/la formule est...
voir à ce mot clef (mise en forme conditionnelle) dans l'aide.

ici sont en rouge les cellules en double ((y compris les lignes vides
incluses dans la plage qui font forcément doublon !)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

a écrit :
Bonsoir,

J'ai recopie deux lignes pour etre sur qu'il y en a au moins deux et
j'ai recopie cette formule =SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100 > $B2)*($C$2:$C$100=$C2))>1 ca donne FAUX...

Il me met FAUX alors que le premier doublon est en ligne 10 et le
deuxieme en ligne 13...

Misange a écrit :
Bonjour,
tu peux utiliser une mise en forme conditionnelle.
choisi la formule est et inscrit celle-ci
=SOMMEPROD(($A$2:$A$100=$A2)*($B$2:$B$100=$B2)*($C$2:$C$100=$C2))>1
Attention, les 3 plages �tudi�es doivent avoir la m�me taille.
Misange migrateuse
XlWiki : Participez � un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

a �crit :
Bonjour,

Dans un fichier qui contient des milliers de lignes pour des milliers
de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
personne. Je dois faire un controle sur les doublons.

Pour le moment je ne sais le faire que visuellement en triant les
donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
ne sais pas par ou commencer ?






Avatar
Fredo P
Bonsoir
a) La dimension de la plage est à adapter
b) Copiez la procédure dans un module VBA

Sub RecheDoublon()
Dim C As Object, Rep As Byte
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo gest
Rep = Inputbox("Vous devez: 1) Repérer les doublons" & Chr(10) & "
2) Supprimer les lignes de doublons")
For Each C In Range("A2:A5000") If C <> "" Then
If Evaluate("sum((A2:A5000=""" & C & """)*(B2:B5000=""" & C.Offset(0, 1) &
""")*(C2:C5000=""" & C.Offset(0, 2) & """))") > 1 Then
If Rep = 1 Then
Rows(C.Row).Font.Bold = True
ElseIf Rep = 2 Then
Rows(C.Row).Delete Shift:=xlShiftUp
End If
Else
C.Font.Bold = False
End If
End If
Next C
gest:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

a écrit dans le message de news:

Je vois pas trop ce que vous me proposez... Vraiment desole, ma
dificulte c'est de parcourir l'ensemble des cellules et de les
traiter... Je pense que vous vous en doutez ;o) J'aurais vu un truc
comme cela :

NOM (colonne A) puis PRENOM(colonne B) puis DATEDE NAISSANCE(colonne
C)

3 colonnes A, B et c correspondant a nom, prenom et dateNaissance

la macro fait

// i variant de 1 a la valeur 'N' du nombre de lignes de la feuille
// j variant de 1 a la valeur 'N' du nombre de lignes de la feuille

i=1
j=2

DEBUT
TANT QUE i<> N

TANT QUE j<>N

SI Ai=Aj
SI Bi=Bj
Si Ci=Cj
METTRE_EN_GRAS(Ai,Bi,Ci)
FIN SI
FIN SI
FIN SI

ELSE j=j+1

FIN TANT QUE j<>N

FIN TANT QUE i<> N
END




Corto a écrit :
Bonjour ,
Je t'envoie une fonction personnelle que j'ai d?velopp? dans un but
proche, elle renvoie la plage de donn?es sans les doublons.
Function Unique(DONNEES As Range) As Variant
ReDim MONTAB(DONNEES.Rows.Count)
XCPT = 0
For Each XXX In DONNEES.Cells
Set XFND = DONNEES.Find(XXX.Value, LookIn:=xlValues,
LookAt:=xlWhole)
If XXX.Row = XFND.Row Then
MONTAB(XCPT) = XXX
XCPT = XCPT + 1
End If
Next XXX
ReDim Preserve MONTAB(XCPT - 1)
Unique = Application.Transpose(MONTAB)
End Function
Tu la colles dans un module et ensuite tu peux utiliser la fonction dans
ta feuille. Attention, c'est une fonction matricielle qu'il faut valider
par Ctrl+Maj+Entr?e

Corto

a ?crit :
> Bonjour,
>
> Dans un fichier qui contient des milliers de lignes pour des milliers
> de personnes, j'ai le nom, le prenom, la date de naissance pour chaque
> personne. Je dois faire un controle sur les doublons.
>
> Pour le moment je ne sais le faire que visuellement en triant les
> donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
> DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
> ne sais pas par ou commencer ?
>


Avatar
artintel
Bonsoir,

Merci pour ton aide, mais j'ai progresse de mon cote, il ne me manque
plus qu'a recuperer les doublons dans un tableau dynamique, ca je sais
pas faire ... Voici le code qui m'affiche tous les doublons :

Sub choiCelule_02()
Dim celluleAi As String
Dim celluleBi As String
Dim celluleCi As String
Dim celluleAj As String
Dim celluleBj As String
Dim celluleCj As String
Dim i
Dim j
Dim k
derLigne = [A65536].End(3).Row
MsgBox derLigne
i = 1
j = 1
k = 0
While i < derLigne
celluleAi = "A" & i
celluleBi = "B" & i
celluleCi = "C" & i
While j <> i And j < derLigne
celluleAj = "A" & j
celluleBj = "B" & j
celluleCj = "C" & j
If ((Range(celluleAi).Value) = (Range(celluleAj).Value)) And
((Range(celluleBi).Value) = (Range(celluleBj).Value)) And
((Range(celluleCi).Value) = (Range(celluleCj).Value)) Then
k = k + 1
MsgBox Prompt:="La cellule doublon a la ligne" & i & " et a comme
valeur " & Range(celluleAi).Value & Range(celluleBi).Value &
Range(celluleCi).Value
End If
j = j + 1
Wend
i = i + 1
Wend
MsgBox k & "Lignes en doublon"
End Sub


Fredo P a écrit :
Bonsoir
a) La dimension de la plage est � adapter
b) Copiez la proc�dure dans un module VBA

Sub RecheDoublon()
Dim C As Object, Rep As Byte
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo gest
Rep = Inputbox("Vous devez: 1) Rep�rer les doublons" & Chr(10) & "
2) Supprimer les lignes de doublons")
For Each C In Range("A2:A5000") If C <> "" Then
If Evaluate("sum((A2:A5000=""" & C & """)*(B2:B5000=""" & C.Offset(0, 1) &
""")*(C2:C5000=""" & C.Offset(0, 2) & """))") > 1 Then
If Rep = 1 Then
Rows(C.Row).Font.Bold = True
ElseIf Rep = 2 Then
Rows(C.Row).Delete Shift:=xlShiftUp
End If
Else
C.Font.Bold = False
End If
End If
Next C
gest:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

a �crit dans le message de news:

Je vois pas trop ce que vous me proposez... Vraiment desole, ma
dificulte c'est de parcourir l'ensemble des cellules et de les
traiter... Je pense que vous vous en doutez ;o) J'aurais vu un truc
comme cela :

NOM (colonne A) puis PRENOM(colonne B) puis DATEDE NAISSANCE(colonne
C)

3 colonnes A, B et c correspondant a nom, prenom et dateNaissance

la macro fait

// i variant de 1 a la valeur 'N' du nombre de lignes de la feuille
// j variant de 1 a la valeur 'N' du nombre de lignes de la feuille

i=1
j=2

DEBUT
TANT QUE i<> N

TANT QUE j<>N

SI Ai=Aj
SI Bi=Bj
Si Ci=Cj
METTRE_EN_GRAS(Ai,Bi,Ci)
FIN SI
FIN SI
FIN SI

ELSE j=j+1

FIN TANT QUE j<>N

FIN TANT QUE i<> N
END




Corto a �crit :
> Bonjour ,
> Je t'envoie une fonction personnelle que j'ai d?velopp? dans un but
> proche, elle renvoie la plage de donn?es sans les doublons.
> Function Unique(DONNEES As Range) As Variant
> ReDim MONTAB(DONNEES.Rows.Count)
> XCPT = 0
> For Each XXX In DONNEES.Cells
> Set XFND = DONNEES.Find(XXX.Value, LookIn:=xlValues,
> LookAt:=xlWhole)
> If XXX.Row = XFND.Row Then
> MONTAB(XCPT) = XXX
> XCPT = XCPT + 1
> End If
> Next XXX
> ReDim Preserve MONTAB(XCPT - 1)
> Unique = Application.Transpose(MONTAB)
> End Function
> Tu la colles dans un module et ensuite tu peux utiliser la fonction dan s
> ta feuille. Attention, c'est une fonction matricielle qu'il faut valide r
> par Ctrl+Maj+Entr?e
>
> Corto
>
> a ?crit :
> > Bonjour,
> >
> > Dans un fichier qui contient des milliers de lignes pour des milliers
> > de personnes, j'ai le nom, le prenom, la date de naissance pour chaqu e
> > personne. Je dois faire un controle sur les doublons.
> >
> > Pour le moment je ne sais le faire que visuellement en triant les
> > donnees sur le champ NOM (colonne A) puis PRENOM(colonne B) puis DATE
> > DE NAISSANCE(colonne C). Mais je dois "automatiser" cette tache et je
> > ne sais pas par ou commencer ?
> >


1 2