Recherche doublons sur une feuille excel

Résolu/Fermé
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 - Modifié par jorge_gomes le 24/03/2010 à 12:03
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 - 10 avril 2010 à 09:17
Bonjour,
Je vous prie de bien vouloir m'aider sur un souci concernant un fichier excel 2003 dont une feuille contient des champs et une colonne qui contient des numeros. Je voudrai savoir au moment de la saisie du numero, il me donne si existe les enregistrements de ce numero pour eviter de le retaper et par un simple copie/coller ses donnees peut faire çà.
N.B: Ce travail peut se faire dans une autre feuille
Je vous mets ci joint mon fichier pour bien illustrer mon souci.
https://www.cjoint.com/?dxkShIjZvF
Merci d'avance pour toute reponse.
Cordialement
A voir également:

50 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
Modifié par Vaucluse le 23/03/2010 à 11:59
Bonjour
une solution ci dessous dans votre fichier en retour:
les cellules de la colonne A "s'allument" en rouge dès que le code est entré plus d'une fois.
ce qui montre qu'il y en a déja pas mal dans votre liste.

j'ai reporté en bout de tableau une formule qui donne le nombre de fois où le code existe dans ce qui est déja rempli.

La colonne A est "traitée" par une MFC jusq'en ligne 1000

http://www.cijoint.fr/cjlink.php?file=cj201003/cijdgWUs3d.xls

on peut aussi passer par une solution de validation en A qui interdira carrément d'entrer deux fois le même code.
Revenez si cela vous intèresse.

crdlmnt
PS: j'épluche votre message et à réflexion je ne pense aps que nma, proposition puisse convenir à ce que vous demandez, car elle interdit l'entrée, ne la recopie pas.
Pour votre question telle que je viens de la comprendre, il serait plus efficace de passer par une macro que je ne sais pas traiter. Pour ma part j'aurais bien une solution avec des formules qui disparaitront sivous faites des entrées manuelles, mais est ce que cela peut vous convenir?

bonne chance
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
1
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
23 mars 2010 à 12:59
Bonjour,
Merci pour votre aide,
Cela c'est bien mais ce que je voudrai faire c'est pas localiser les doublants de la colonne A, mais lorsque j'ajoute un enregistrement dans une ligne et je saisie le numero il m'affiche si ce numero est un doublant , si oui il me donne automatiquement les enregistrements de celui ci; comme ça je peux modifier dans la ligne ce que je veux. Je pense une macro si peut faire la faire.
Merci d'avance
Cordialement.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
Modifié par Vaucluse le 23/03/2010 à 13:11
C'est bien ce que je pensais dans mon PS, je suis tombé à coté de la plaque (pas bien grave ,ce n'est ni la première, ni la derniére fois)
ci joint la proposition sans macro dont je vous parlais, avec une préparation du tableau... en attendant mieux qui viendra sans doute
explication dans le fichier.
http://www.cijoint.fr/cjlink.php?file=cj201003/cijfCMyyDE.xls
crdlmnt
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 23/03/2010 à 13:22
Salut,

Clic droit sur l'onglet de feuille Production/Visualiser le code et colles ce code, qui te donnera la cellule en doublon, que tu pourras conserver pour modifier ou supprimer. la colonne des référence A2 à A600 doit être nommée NumDos ou modifier le code soit par un autre nom ou l'adresse cellule (Range("A2:A600")

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("NumDos"), Target) Is Nothing And Target.Count = 1 Then
For Each c In Range("NumDos")
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row And c.Value <> Empty Then
réponse = MsgBox("Doublon avec :" & c.Address & Chr$(10) & _
"Voulez-vous le garder ?", vbYesNo + vbInformation, "DETECTION DOUBLON")
If réponse = vbNo Then
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End If
Next c
End If
End Sub

En ajoutant une colonne qui peut être masquée, il est possible de faire sans macro avec Données/Validation

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
23 mars 2010 à 13:21
Bonjour Mike,
Merci pour votre reponse, je vais tester la macro et je vous reponds plustard.
Cordialement
0

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

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
23 mars 2010 à 15:32
Re,

J'ai un peu de temps, alors une solution sans macro pour ceux à qui ça intéresse
Toujours sur l'exemple à traiter plage A1 à A600
Mettre en surbrillance cette plage et Données/Validation/onglet Option
Sélectionner Personnalisé et coller cette formule

=NB.SI($A$1:$A$30;$A1)<2

Onglet Alerte d'erreur, cocher Quand les données non valides sont tapées
Dans Style si vous sélectionnez Arrêt il sera impossible de continuer, si vous sélectionnez Avertissement il sera possible de continuer ou d'arrêter
et dans la zone Message d'erreur mettre sont message exemple Les données que vous avez saisies existe déjà
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
Modifié par Vaucluse le 23/03/2010 à 16:58
Salut Mike et bonne soirée
puisqu'on en est là, je te renvoie à mes propositions un peu plus haut
,
une fois (11h53)pour éliminer les risques de doublon, ce qui ne convient pas
https://forums.commentcamarche.net/forum/affich-17110113-recherche-doublons-sur-une-feuille-excel#1

une fois(13h09) pour remplir les lignes en automatique si le code est existant,
ce qui devrait aller, mais là, je suis sans nouvelle;
https://forums.commentcamarche.net/forum/affich-17110113-recherche-doublons-sur-une-feuille-excel#3

Sans vouloir dénigrer la nouvelle configuration dont on dispose dans CCM,, je trouve qu'il y a pas mal de risques que les messages passent à l'as!
Mais il est un peu tôt pour se prononcer!(sans doute un rodage à faire)
Bien amicalement
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
23 mars 2010 à 17:59
Salut l'ami,

Je suis de ton avis, si la page d'accueil de CCM est plus agréable, pour l'instant je trouve la configuration perturbante, le numéro des posts permettait un meilleur repérage. Comme tout lancement, je pense qu'il a une adaptation et appelé à modification.
Dans les discussion, je ne regarde pas systématiquement les post ou pièce jointe des intervenants, as-tu vu ma proposition de 15h32 avec Données/Validation que je trouve pas mal

Bonne soirée
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
24 mars 2010 à 08:05
Bonjour Mike,
Merci pour votre reponse et aide,
votre programme fonctionne bien sauf pour le numero et moi je voudrai qu'il m'affiche les autres donnees concernant le numero precedant.
Merci d'avance.
Cordialement.
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
24 mars 2010 à 08:08
Bonjour Vaucluse,
Merci bien pour votre aide et je vais tester votre fichier et je vous repond plustard.
Merci d'avance.
Cordialement.
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
24 mars 2010 à 09:08
Bonjour Vaucluse et Mike,

J'ai teste votre proposition çà aller bien, mais j'aimerai bien vous me trouver un code VBA qui me facilite ce travail car j'ai une autre condition sur la colonne J : Lorsque je saisie le montant dans la colonne J et qui l'est dejà saisie auparavant, il me donne automatiquement les donnees des colonnes K et L correspondants sans passer à la saisie.
Merci infinement pour votre comprehension.
Cordialement.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
24 mars 2010 à 12:02
Bonjour
pour le VBA je vous laisse dans les mains expertes de mon ami excellent Mike pour ma part un modéle ci dessous qui reste dans le style de l'autre avec ce que vous souhaitez en complément
Crdlmnt
http://www.cijoint.fr/cjlink.php?file=cj201003/cijgI1dPcs.xls
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
24 mars 2010 à 12:15
Bonjour Vaucluse,
Merci pour votre soutien à moi,
Je vous mets au courant des nouvelles.
Merci d'avance.
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
24 mars 2010 à 12:38
Bonjour Vaucluse,
Je suis d'accord avec vous mais le seul souci que j'ai c'est que lorsque je saisie un meme nomdos il me donne les donnees automatique de le cellule B à la cellule I sauf pour la cellule J par fois je n'ai pas la meme donnee càd le meme PT, donc je saisie dans la cellule I la donnee et si existe au dessus, je voudrai qu'elle me donne les autres donnes de K et L.
Merci bien de votre aide.
Cordialement.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
Modifié par Vaucluse le 24/03/2010 à 12:46
Là je ne comprend pas:
dans ma proposition:

quand vous rentrez en A un code connu la ligne se remplit complétement de K àN
J compris

si vous modifiez manuellemnt J ensuite,deux cas:
_soit J n'existe pas au dessus, et K et L deviennent XXX
_soit J existe et n'est pas le même que celui affiché prédemment.Dans ce cas K et L affichent ce qui correspond au J entré manuellement.
Ce n'est pas ça que vous vouliez?

mais là vous me parler de I?. Ce n'est pas très difficile à régler mais il faut choisir la colonne : J ou I ????
Laquelle voulez vous modifier pour définir K et L et si c'est I que prévoit on en J?

Crdlmnt
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
24 mars 2010 à 13:05
Bonjour Vaucluse,
Merci infinement,
Je m'excuse c'est effectivement J ce que je cherche est bien operationnel, merci beaucoup.
J'ai teste votre dernier fichier que vous m'avez transmis, c'est formidable.

1- Est ce que pour une nouvelle feuille je peux faire copie/coller la formulaire çà marche bien?
2- Est ce je peux ettendre la formule sur + lignes (20000)?
3- Si possible pouvez-vous me transformer ce travail à un programme VBA qui me facilite cette tache?
Cordialement.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
24 mars 2010 à 17:04
"Si possible pouvez-vous me transformer ce travail à un programme VBA qui me facilite cette tache?"
non, VBA je ne connais pas j'essaie de solliciter Mike sur le sujet, il devrait vous donner des nouvelles.
Pour ma part, je peux tout juste et peut être vous faire une macro qui équipera une centaine de ligne en dessous du tableau rempli, pur les intéger au fur et à mesure du remplissage

"Est ce je peux ettendre la formule sur + lignes (20000)?"
ça va être trop lourd Excel va baisser les bras. A défaut de solution VBA je vous conseille:
1° d'utiliser votre tableau sur 4000 lignes, en répèrant la ,ligne limite équipée en la conservant vide
2° quand vous l'atteignez, faites un copier / Collage spécial valeur à la même place du champ déja rempli pour éliminer les formules inutiles
3° retirez la dernière ligne équipée sur 4000
etc, ça ne fait jamais que 5 fois pour atteindre 20000 et ce sera plus facile à manier

"Est ce que pour une nouvelle feuille je peux faire copie/coller la formulaire çà marche bien?"
sans probléme, vous pouvez copier la formule de la ligne 588 par exemple et la recopier en ligne 2 (surtout pas en 1)et la tirez sur la hauteur voulue.

Je ne doute pas que Mike trouve mieux, je lui en parle.
Bien cordialement
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
24 mars 2010 à 17:45
Voila, suite du message précédent
modèle ci joint représentant tout ce que je peux faire en macro dans la limite de mes capacités.
Ce n'est pas très élégant ni prerfomant mais à défaut, ça peut dépanner, car ça permet de limiter à une zone réduite l'intègration de formules.
Explications comme d'hab sur le fichier.
http://www.cijoint.fr/cjlink.php?file=cj201003/cij6hdhQzo.xls
J'ai par ailleurs contacté Mike qui ne devrait pas tarder à se manifester.
Bonne soirée.
Crdlmnt
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
24 mars 2010 à 21:16
Salut tout le monde,

En résumé, si on reprend mon code macro du 23/03 13:13 qui à fait l'objet de cette réponse

votre programme fonctionne bien sauf pour le numero et moi je voudrai qu'il m'affiche les autres donnees concernant le numero precedant.
pourrait on m'expliquer ce que doit afficher la macro si en colonne A on tente de saisir un doublon

J'ai par ailleur donner une combine avec la validation qui sans code VBA permet de bloquer ou avertir une saisie en doublon
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
25 mars 2010 à 08:22
Bonjour VAUCLUSE et MIKE,
Je vous remercie infinement de vos effort à moi.
Mon souci comme je vous dis auparavant il y avait deux conditions à realiser :
1- Lorsque je saisie un numdos doublant il m'affiche les des autres cellules de B à O, du numdos precedent.

2- Lorsque je saisie dans la cellule J une donnee PT different et qui existe déjà, il m'affiche les donnees correspondants des cellules K et L.

N.B:
Je vous mets à votre disposition le travail de M.VAUCLUSE qui est operationnel 100%. J'aimerai bien le convertir en VBA si possible.
http://www.cijoint.fr/cjlink.php?file=cj201003/cijgI1dPcs.xls
Cordialement.
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
25 mars 2010 à 08:39
Rebonjour M. VAUCLUSE,
Merci bien pour votre travail que vous m'avez offert. Permettez moi de revenir à votre fichier et soulever quelques remarques:
1- A propos de la feuille Production si possible eliminer le fond cri.
2- Pour la feuille Production (2) je voudrai qu'elle soit lier à la feuille Production comme çà je peux avoir les doublants car dans cette nouvelle feuille je peux avoir NumDos de la feuille Production.
Cordialement.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
25 mars 2010 à 08:46
Bonjour
je regarde ça, mais je ne suis pas dispo aujourdhui avant la fin de journée.
Le fond gris était pour moi un moyen de rép^èrer les lignes avec formule des autres. Pour l'enelever il suffit d'oter le remplissage de la ligne de référence en ligne 2.
Je regardes le reste en fin de journée.
Si vous le souhaitez je peux aussi vous proposer une solution où le remplissage se fait dan sur tableau d'entrée à une seule page et une seule ligne, avec une macro d'enregistrement et les mêmes options de remplissage automatique. C'est assez simple et facile à manipuler . A vous de voir
Crdlmnt
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
25 mars 2010 à 09:08
Bonjour,
Merci bien
D'accord c'est OK
Cordialement
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
25 mars 2010 à 11:43
Salut,

A copier dans les propriétés feuille (clic droit sur l'onglet de feuille concerné)/Visualiser le code et ce code
Lorsqu'un doublon sera saisi en entre A2 et A100 les cellule de B à O de la première valeurs seront sélectionnées, de même en J pour les cellules K et L

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A2:A100"), Target) Is Nothing And Target.Count = 1 Then
For Each c In Range("A2:A100")
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row And c.Value <> Empty Then
Range(c.Address).Offset(0, 1).Select
Range(ActiveCell, ActiveCell.Offset(0, 13)).Select
End If
Next c
End If
If Not Intersect(Range("J2:J100"), Target) Is Nothing And Target.Count = 1 Then
For Each c In Range("J2:J100")
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row And c.Value <> Empty Then
Range(c.Address).Offset(0, 1).Select
Range(ActiveCell, ActiveCell.Offset(0, 1)).Select
End If
Next c
End If
End Sub

0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
Modifié par abdou_Guend le 25/03/2010 à 12:26
Bonjour MIKE,
Je vous remercie infinement pour vos efforts offerts à moi,
Apres avoir vu votre fichier que vous venez m'envoyer j'ai constater que le code utilise concerne une recherche de doublant, est ce qu'on ne peut pas ameliorer ce programme pour qu'il me donne lorsqu'il trouve le doublant,reporter les donnees correspondants à ce NumDos de B à O, ainsi il tient compte si je saisie une donnee dans la cellule J differente et que cette derniere existe auparavant alors me reporter les valeurs correspondantes des cellules K et L automatique.
Merci d'avance et esperant c'est bien clair mes explications.
Cordialement.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 25/03/2010 à 13:25
Re,

Je ne comprends pas très bien,
Si par exemple en A10 on tente de saisir un numéro identique à celui en A5, tu veux que le code copie la ligne 10 sur la ligne 5 !

et la même chose pour la colonne J !

Par contre le déclenchement macro doit se faire par bouton et non automatiquement, le code actuel se déclenche dès qu'une valeur identique est saisie en A ou J ce qui ne permet pas le déplacement de la ligne, à par que les saisies en A et J se fassent en dernier sur la ligne

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
abdou_Guend Messages postés 120 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 14 décembre 2013 4
Modifié par abdou_Guend le 25/03/2010 à 13:48
Bonjour MIKE,
Je m'excuse si j'ai pas bien poser le probleme, bon votre fichier est operationnel ,le seul souci c'est que lorsque je saisie en A10 un NumDos doublant il me localise la ligne A5 mais il ne me reporte pas les donnees de la ligne A5 localisee.
exemple :
je tape dans la cellule A10 un NumDos doublant par ex le code localise et masque la ligne A5 mais il ne me reporte pas les donnees de la ligne A5 vers la ligne A10 et si je veux entrer en J10 une valeur differente de la valeur existee sur la cellule J10 et qui est dejà saisie auparavant par ex en J6, je veux qu'il me donne les valeurs de K6 et L6 dans les cellules K10 et L10.
Esperant cette fois ci c'est bien clair, Merci d'avance.
Cordialement.
0