Macro Excel qui empêche les doublons ?
Résolu
eperluette
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous !
Voilà, j'ai trouvé une petite macro (que j'ai changée très légèrement) et qui marche très bien :
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Value
Case "": Case Else
If Not Application.Intersect(Target, [A:A]) Is Nothing Then
Select Case Application.WorksheetFunction.CountIf([A:A], Target)
Case 1: Case Else
myMatch = Application.WorksheetFunction.Match(Target, [A:A], 0)
myPrompt = "Returns note below has already been entered in cell A" & myMatch & _
Chr(10) & "Please modify your entry"
myDefault = Target
myInput = InputBox(Prompt:=myPrompt, Default:=myDefault, Title:="Excel Tip")
Target = myInput
End Select
End If
End Select
End Sub
Cette macro permet d'empêcher la saisie de doublons dans une feuille donnée (pour la colonne A uniquement). Si l'utilisateur entre une donnée déjà présente, une fenêtre s'affiche indiquant l'adresse de la donnée déjà entrée et invitant à entrer une autre donnée.
En fait, j'aimerais savoir s'il est possible de modifier cette macro pour l'étendre au classeur entier ?
Si par exemple, je suis dans la feuille 2 et j'essaie de saisir une donnée déjà présente dans la feuille 1 (mais pas dans la 2), est-il possible d'avoir une macro qui me dise que la donnée a déjà été entrée dans la feuille 1, cellule tant ?
Euh voilà, j'espère que ce que je raconte n'est pas trop confus (pardonnez-moi, je débute !)
Merci beaucoup pour votre aide !!!
Voilà, j'ai trouvé une petite macro (que j'ai changée très légèrement) et qui marche très bien :
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Value
Case "": Case Else
If Not Application.Intersect(Target, [A:A]) Is Nothing Then
Select Case Application.WorksheetFunction.CountIf([A:A], Target)
Case 1: Case Else
myMatch = Application.WorksheetFunction.Match(Target, [A:A], 0)
myPrompt = "Returns note below has already been entered in cell A" & myMatch & _
Chr(10) & "Please modify your entry"
myDefault = Target
myInput = InputBox(Prompt:=myPrompt, Default:=myDefault, Title:="Excel Tip")
Target = myInput
End Select
End If
End Select
End Sub
Cette macro permet d'empêcher la saisie de doublons dans une feuille donnée (pour la colonne A uniquement). Si l'utilisateur entre une donnée déjà présente, une fenêtre s'affiche indiquant l'adresse de la donnée déjà entrée et invitant à entrer une autre donnée.
En fait, j'aimerais savoir s'il est possible de modifier cette macro pour l'étendre au classeur entier ?
Si par exemple, je suis dans la feuille 2 et j'essaie de saisir une donnée déjà présente dans la feuille 1 (mais pas dans la 2), est-il possible d'avoir une macro qui me dise que la donnée a déjà été entrée dans la feuille 1, cellule tant ?
Euh voilà, j'espère que ce que je raconte n'est pas trop confus (pardonnez-moi, je débute !)
Merci beaucoup pour votre aide !!!
A voir également:
- Macro Excel qui empêche les doublons ?
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Supprimer les doublons excel - Guide
- Doublons photos - Guide
2 réponses
bonjour
En modifiant ainsi cela devrait fonctionner :
Ensuite il faut copier la macro dans la feuille 2 en changeant cette ligne
En modifiant ainsi cela devrait fonctionner :
Select Case Application.WorksheetFunction.CountIf(Sheets("Feuil1").[A:A], Target) _ + Application.WorksheetFunction.CountIf(Sheets("Feuil2").[A:A], Target) Case 1: Case Else myMatch = Application.WorksheetFunction.Match(Target, [A:A], 0) If myMatch = Target.Row Then myMatch = "Feuil2!A" & Application.WorksheetFunction.Match(Target, Sheets("Feuil2").[A:A], 0) Else myMatch = "A" & myMatch End If myPrompt = "Returns note below has already been entered in cell " & myMatch & _
Ensuite il faut copier la macro dans la feuille 2 en changeant cette ligne
myMatch = "Feuil1!A" & Application.WorksheetFunction.Match(Target, Sheets("Feuil1").[A:A], 0)
Toutes mes excuses pour le temps mis à te répondre ! Mais enfin voilà, je voulais juste te remercier de m'avoir répondu, ce code fonctionne parfaitement. J'ai juste changé le nom de la feuille (à la place de "Feuil1" j'ai mis le nom de l'onglet) et ça marche.
Encore merci pour ton aide.