Macro pour dtecter les doublons dans plusieurs cellules

fero7

XLDnaute Nouveau
Bonjour le forum;

J'ai un tableau avec plusieurs colonnes, je voudrais un code VBA qui me permettrais de savoir si un nom a été inséré en double sur toute la ligne. Le fichier joint explique bien mon besoin.

Merci pour votre aide.
 

Pièces jointes

  • Macro pour détecter les doublons.xlsx
    124.5 KB · Affichages: 37

Papou-net

XLDnaute Barbatruc
Re : Macro pour dtecter les doublons dans plusieurs cellules

Bonjour fero7, Modeste,

Ci-joint copie du fichier avec macro événementielle dans module Feuil1.

Détail de la procédure:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 6 Or Target.Column = 15) And Target.Row > 2 Then
  If Range("F" & Target.Row) = Range("O" & Target.Row) Then
    MsgBox "Doublon"
    Target = ""
  End If
End If
End Sub

Bon dimanche.

Cordialement.
 

Pièces jointes

  • Macro pour détecter les doublons.xlsm
    129.9 KB · Affichages: 45

fero7

XLDnaute Nouveau
Re : Macro pour dtecter les doublons dans plusieurs cellules

Bonjour Papou, Modeste:

J'ai testé le code envoyé il fonctionne correctement sur les 2 premières colonnes seulement. Si je sélectionne le même nom dans une autre colonne de la même ligne (il ne détecte pas que c'est un doublon) peut tu encore m'aider, STP pour que soit détecté sur toutes les colonnes ( F, O, X, AG, AP, AY, BH, BQ, BZ, CI, CR, DA, DJ, DS, EB, EK) en jaune et ce pour chaque ligne?

Merci infiniment.
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Macro pour dtecter les doublons dans plusieurs cellules

Re,
Salut Papou-net :)

J'avais ceci sous le coude, qui semble fonctionner:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column + 3) Mod 9 = 0 And Target <> "" Then
    For col = 6 To 146 Step 9
        If Cells(Target.Row, col) = Target Then cpt = cpt + 1
    Next col
End If
If cpt > 1 Then MsgBox "Doublon!!"
End Sub
[Edit:] je viens de modifier le code et d'ajouter un test!

... Mais je maintiens ma question: "pourquoi pas une MFC?"
 
Dernière édition:

fero7

XLDnaute Nouveau
Re : Macro pour dtecter les doublons dans plusieurs cellules

Re Modeste,
Merci beaucoup :D
Par ce que la MFC ne peux pas empêcher la saisie d'un doublon, c'est pour cette raison que j'ai pensé à une macro.

je vais tester ta solution et reviendrais vers toi
 

Modeste

XLDnaute Barbatruc
Re : Macro pour dtecter les doublons dans plusieurs cellules

Re²,

La demande initiale était "qui me permettrais de savoir si un nom a été inséré en double sur toute la ligne" tu n'avais pas parlé d'empêcher la saisie!?

Il te reste à "mixer" ma proposition (si elle convient) avec celle de Papou-net
 

fero7

XLDnaute Nouveau
Re : Macro pour dtecter les doublons dans plusieurs cellules

Re Modeste,

on y est presque, ton code marche à merveille, correctement sur toute les cellules d'une même ligne. Aurais tu un autre truc sous le coude qui empêcherais carrément la saisie.

Avec ce code, on sait que c'est un doublon mais le nom sélectionné en double (ou plus ) reste affiché

Merci d'avance.
 

fero7

XLDnaute Nouveau
Re : Macro pour dtecter les doublons dans plusieurs cellules

Oui c'est exactement ça! je fais comment pour mixer les 2 solutions STP?:confused:

Quoi que je ne pense pas que les 2 solutions peuvent être mixées, celle de Papou fonctionne uniquement sur les colonnes F et O, la tienne fonctionne sur toutes les colonnes en jaune.

j'attends votre aide et merci encore
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Macro pour dtecter les doublons dans plusieurs cellules

Allez, un petit effort :D ... Dans le code de Papou-net, où signale-t-il l'existence d'un doublon? Et une fois que tu as trouvé, n'y a-t-il pas, juste aux alentours, une instruction qui pourrait "annuler la saisie"?
 

fero7

XLDnaute Nouveau
Re : Macro pour dtecter les doublons dans plusieurs cellules

Ce que je maitrise c'est de copier les codes, plus que ça j'ai peur de créer un bug dans mon fichier, je suis nulle en langage VBA, alors STP aide moi avec un code qui fonctionne sur toutes les colonnes en jaune et qui empêcherais surtout la saisie des doublons.
STP aide moi!!!
 

Modeste

XLDnaute Barbatruc
Re : Macro pour dtecter les doublons dans plusieurs cellules

Re et re,

Ce n'est pas ce que j'appelle faire un petit effort ;)

Papou-net et moi utilisons tous les deux la même procédure événementielle: Worksheet_Change.
Celle-ci se déclenche donc -comme son nom l'indique en anglais- au changement de valeur dans une cellule. Cette cellule modifiée est représentée par l'argument "Target as Range".
Dans le code, chaque référence à une variable nommée Target, concerne donc la cellule qui vient d'être modifiée (celle où on a inscrit un "doublon", le cas échéant). Si tu veux "annuler la saisie" dans cette cellule, il suffit donc d'effacer son contenu ou d'écraser le contenu par une chaîne vide ("" en informatique). Ci-dessous le code modifié:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column + 3) Mod 9 = 0 And Target <> "" Then
    For col = 6 To 146 Step 9
        If Cells(Target.Row, col) = Target Then cpt = cpt + 1
    Next col
End If
If cpt > 1 Then MsgBox "Doublon!!": Target = ""
End Sub

Bon appétit!
 

Papou-net

XLDnaute Barbatruc
Re : Macro pour dtecter les doublons dans plusieurs cellules

Rebonjour à vous,

Je reviens d'une absence temporaire mais comme j'avais travaillé sur le problème, voici ma solution corrigée:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Interior.ColorIndex = 6 And Target.Row > 2 Then
  For Each cel In Rows(Target.Row).SpecialCells(xlCellTypeConstants)
    If cel.Interior.ColorIndex = 6 And cel.Column <> Target.Column And cel = Target Then
      MsgBox "Doublon"
      Target = ""
    End If
  Next
End If
End Sub

Remarque: cette nouvelle mouture travaille uniquement sur la couleur jaune des cellules, ce qui fait qu'en cas de déplacement, ajout ou suppression, pas de code à modifier. Si la couleur de fond doit être changée, corriger uniquement la propriété Interior.ColorIndex.

Bonne fin de dimanche.

Cordialement.
 

Pièces jointes

  • Macro pour détecter les doublons modifie.xlsm
    130.4 KB · Affichages: 43

fero7

XLDnaute Nouveau
Re : Macro pour empêcher les doublons dans plusieurs cellules et dans 2 feuilles

Bonjour à tous,

Merci beaucoup Papounet pour la solution proposée. j'ai gardé la solution de modeste car elle s'applique bien à mon fichier source.
j'ai mis la couleur jaune à titre indicatif, pour cibler uniquement les colonnes qui ne doivent pas contenir des doublons.

Je reviens vers vous avec une autre question.
Voilà, j'ai dupliqué la feuille qui contient le code de modeste et ce que je voudrais c'est un code qui empêcherait la saisie des doublons sur l'une des 2 feuilles avec un message "Déjà pris"
Très important, le premier code doit rester opérationnel sur les 2 feuilles.
j'ai joins un fichier exemple. Merci d'avance.
 

Pièces jointes

  • Macro-pour-detecter-les doublons dans 2 feuilles - Copie.xlsx
    235.5 KB · Affichages: 49

Discussions similaires

Réponses
22
Affichages
363

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87