Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target <> "" Then
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
LookAt:=xlWhole).Row
If Ligne <> Target.Row Then
MsgBox ("Donnée déjà saisie")
Target = ""
Target.Activate
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
Nemroth
Je ne sais pas pourquoi, mais les lignes
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row
sont en rouge dans l'éditeur et lorsque j'insère une valeur, le débogeur se bloque sur la première de ces lignes. Je suis sous Excel 2002.
FFO a écrit :
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
Je ne sais pas pourquoi, mais les lignes
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
LookAt:=xlWhole).Row
sont en rouge dans l'éditeur et lorsque j'insère une valeur, le débogeur
se bloque sur la première de ces lignes. Je suis sous Excel 2002.
FFO a écrit :
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target <> "" Then
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
LookAt:=xlWhole).Row
If Ligne <> Target.Row Then
MsgBox ("Donnée déjà saisie")
Target = ""
Target.Activate
End If
End If
End Sub
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row
sont en rouge dans l'éditeur et lorsque j'insère une valeur, le débogeur se bloque sur la première de ces lignes. Je suis sous Excel 2002.
FFO a écrit :
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
Nemroth
Autant pour moi !!! Ces trois lignes n'en faisaient qu'une !!! Depuis ça fonctionne super bien. merci beaucoup FFO
Nemroth a écrit :
Je ne sais pas pourquoi, mais les lignes
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row
sont en rouge dans l'éditeur et lorsque j'insère une valeur, le débogeur se bloque sur la première de ces lignes. Je suis sous Excel 2002.
FFO a écrit :
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
Autant pour moi !!! Ces trois lignes n'en faisaient qu'une !!!
Depuis ça fonctionne super bien.
merci beaucoup FFO
Nemroth a écrit :
Je ne sais pas pourquoi, mais les lignes
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
LookAt:=xlWhole).Row
sont en rouge dans l'éditeur et lorsque j'insère une valeur, le débogeur
se bloque sur la première de ces lignes. Je suis sous Excel 2002.
FFO a écrit :
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target <> "" Then
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
LookAt:=xlWhole).Row
If Ligne <> Target.Row Then
MsgBox ("Donnée déjà saisie")
Target = ""
Target.Activate
End If
End If
End Sub
Autant pour moi !!! Ces trois lignes n'en faisaient qu'une !!! Depuis ça fonctionne super bien. merci beaucoup FFO
Nemroth a écrit :
Je ne sais pas pourquoi, mais les lignes
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row
sont en rouge dans l'éditeur et lorsque j'insère une valeur, le débogeur se bloque sur la première de ces lignes. Je suis sous Excel 2002.
FFO a écrit :
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
LSteph
Bonjour,
Dans le code de la feuille (prévoit l'entrée ou collage sur plusieurs cellules):
Private Sub Worksheet_Change(ByVal Target As Range) Dim isect As Range, i As Long Set isect = Intersect([a:a], Target) If isect Is Nothing Then Exit Sub With isect For i = 1 To .Cells.Count If .Cells(i) <> "" Then If WorksheetFunction.CountIf([a1:a65536], .Cells(i).Value) > 1 Then Application.EnableEvents = False isect.ClearContents MsgBox "entrée multiple" .Cells(i).Activate Application.EnableEvents = True Exit For End If End If Next End With End Sub
'lSteph
On 16 juil, 16:45, Nemroth wrote:
Bonjour à toutes et à tous.
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitt é la cellule)
Si ce n'est pas le cas, un message s'affiche l'informant que la donnée est déjà utilisée et la cellule qu'il a quitté passe à nouveau en mode édition.
Si la valeur est unique, rien ne se passe.
Par avance merci
Bonjour,
Dans le code de la feuille (prévoit l'entrée ou collage sur plusieurs
cellules):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Range, i As Long
Set isect = Intersect([a:a], Target)
If isect Is Nothing Then Exit Sub
With isect
For i = 1 To .Cells.Count
If .Cells(i) <> "" Then
If WorksheetFunction.CountIf([a1:a65536], .Cells(i).Value) > 1 Then
Application.EnableEvents = False
isect.ClearContents
MsgBox "entrée multiple"
.Cells(i).Activate
Application.EnableEvents = True
Exit For
End If
End If
Next
End With
End Sub
'lSteph
On 16 juil, 16:45, Nemroth <nospam.nemr...@free.fr> wrote:
Bonjour à toutes et à tous.
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme
vérifie si la donnée est unique dans la colonne (dès qu'il a quitt é la
cellule)
Si ce n'est pas le cas, un message s'affiche l'informant que la donnée
est déjà utilisée et la cellule qu'il a quitté passe à nouveau en mode
édition.
Dans le code de la feuille (prévoit l'entrée ou collage sur plusieurs cellules):
Private Sub Worksheet_Change(ByVal Target As Range) Dim isect As Range, i As Long Set isect = Intersect([a:a], Target) If isect Is Nothing Then Exit Sub With isect For i = 1 To .Cells.Count If .Cells(i) <> "" Then If WorksheetFunction.CountIf([a1:a65536], .Cells(i).Value) > 1 Then Application.EnableEvents = False isect.ClearContents MsgBox "entrée multiple" .Cells(i).Activate Application.EnableEvents = True Exit For End If End If Next End With End Sub
'lSteph
On 16 juil, 16:45, Nemroth wrote:
Bonjour à toutes et à tous.
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitt é la cellule)
Si ce n'est pas le cas, un message s'affiche l'informant que la donnée est déjà utilisée et la cellule qu'il a quitté passe à nouveau en mode édition.
Si la valeur est unique, rien ne se passe.
Par avance merci
FFO
Rebonjour à toi
Mets ces lignes bout à bout :
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _
en une seule
Pour celà mets le curseur en bout de la première et fait un "Suppr"
Celà devrait convenir
Dis moi !!!!!
Rebonjour à toi
Mets ces lignes bout à bout :
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
en une seule
Pour celà mets le curseur en bout de la première et fait un "Suppr"
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _
en une seule
Pour celà mets le curseur en bout de la première et fait un "Suppr"
Celà devrait convenir
Dis moi !!!!!
Caetera
> Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
********** Quel intérêt d'utiliser le vba et de plomber par là même le Worksheet_Change ? Connais-tu Données > Validation .....? Exemple.... =NB.SI(A:A;A1)=1
Etc
> Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie
si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
**********
Quel intérêt d'utiliser le vba et de plomber par là même le Worksheet_Change ?
Connais-tu Données > Validation .....?
Exemple....
=NB.SI(A:A;A1)=1
> Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
********** Quel intérêt d'utiliser le vba et de plomber par là même le Worksheet_Change ? Connais-tu Données > Validation .....? Exemple.... =NB.SI(A:A;A1)=1
Etc
Nemroth
Merci LSteph.
Votre code fonctionne très bien également. Entre les deux mon coeur balance !!!
Merci beaucoup
LSteph a écrit :
Bonjour,
Dans le code de la feuille (prévoit l'entrée ou collage sur plusieurs cellules):
Private Sub Worksheet_Change(ByVal Target As Range) Dim isect As Range, i As Long Set isect = Intersect([a:a], Target) If isect Is Nothing Then Exit Sub With isect For i = 1 To .Cells.Count If .Cells(i) <> "" Then If WorksheetFunction.CountIf([a1:a65536], .Cells(i).Value) > 1 Then Application.EnableEvents = False isect.ClearContents MsgBox "entrée multiple" .Cells(i).Activate Application.EnableEvents = True Exit For End If End If Next End With End Sub
'lSteph
On 16 juil, 16:45, Nemroth wrote:
Bonjour à toutes et à tous.
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
Si ce n'est pas le cas, un message s'affiche l'informant que la donnée est déjà utilisée et la cellule qu'il a quitté passe à nouveau en mode édition.
Si la valeur est unique, rien ne se passe.
Par avance merci
Merci LSteph.
Votre code fonctionne très bien également. Entre les deux mon coeur
balance !!!
Merci beaucoup
LSteph a écrit :
Bonjour,
Dans le code de la feuille (prévoit l'entrée ou collage sur plusieurs
cellules):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Range, i As Long
Set isect = Intersect([a:a], Target)
If isect Is Nothing Then Exit Sub
With isect
For i = 1 To .Cells.Count
If .Cells(i) <> "" Then
If WorksheetFunction.CountIf([a1:a65536], .Cells(i).Value) > 1 Then
Application.EnableEvents = False
isect.ClearContents
MsgBox "entrée multiple"
.Cells(i).Activate
Application.EnableEvents = True
Exit For
End If
End If
Next
End With
End Sub
'lSteph
On 16 juil, 16:45, Nemroth <nospam.nemr...@free.fr> wrote:
Bonjour à toutes et à tous.
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme
vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la
cellule)
Si ce n'est pas le cas, un message s'affiche l'informant que la donnée
est déjà utilisée et la cellule qu'il a quitté passe à nouveau en mode
édition.
Votre code fonctionne très bien également. Entre les deux mon coeur balance !!!
Merci beaucoup
LSteph a écrit :
Bonjour,
Dans le code de la feuille (prévoit l'entrée ou collage sur plusieurs cellules):
Private Sub Worksheet_Change(ByVal Target As Range) Dim isect As Range, i As Long Set isect = Intersect([a:a], Target) If isect Is Nothing Then Exit Sub With isect For i = 1 To .Cells.Count If .Cells(i) <> "" Then If WorksheetFunction.CountIf([a1:a65536], .Cells(i).Value) > 1 Then Application.EnableEvents = False isect.ClearContents MsgBox "entrée multiple" .Cells(i).Activate Application.EnableEvents = True Exit For End If End If Next End With End Sub
'lSteph
On 16 juil, 16:45, Nemroth wrote:
Bonjour à toutes et à tous.
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
Si ce n'est pas le cas, un message s'affiche l'informant que la donnée est déjà utilisée et la cellule qu'il a quitté passe à nouveau en mode édition.
Si la valeur est unique, rien ne se passe.
Par avance merci
LSteph
Bonjour FFO,
Si j'entre qqchose dans trois cellules..??? Erreur13 mais ca rentre qd même
Cordialement.
-- lSteph
On 16 juil, 17:03, FFO wrote:
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
Bonjour FFO,
Si j'entre qqchose dans trois cellules..??? Erreur13 mais ca rentre qd
même
Cordialement.
--
lSteph
On 16 juil, 17:03, FFO <F...@discussions.microsoft.com> wrote:
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target <> "" Then
Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"),
LookIn:=xlValues, _
LookAt:=xlWhole).Row
If Ligne <> Target.Row Then
MsgBox ("Donnée déjà saisie")
Target = ""
Target.Activate
End If
End If
End Sub
Si j'entre qqchose dans trois cellules..??? Erreur13 mais ca rentre qd même
Cordialement.
-- lSteph
On 16 juil, 17:03, FFO wrote:
Salut à toi
Mets dans le VBA de la feuille ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target <> "" Then Ligne = Columns("A:A").Find(What:=Target, After:=Range("A1"), LookIn:=xlValues, _ LookAt:=xlWhole).Row If Ligne <> Target.Row Then MsgBox ("Donnée déjà saisie") Target = "" Target.Activate End If End If End Sub
Celà devrait convenir
Dis moi !!!!
LSteph
Re,
Cela aurait été mieux et la 1ère idée qui viendrait mais ça ne t ient pas sitot que l'on fait un coller.
Cordialement.
-- lSteph
On 16 juil, 17:38, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Je souhaiterais faire la chose suivante en VBA :
> Lorsque l'utilisateur entre une donnée dans la colonne A, le programm e vérifie > si la donnée est unique dans la colonne (dès qu'il a quitté la ce llule)
********** Quel intérêt d'utiliser le vba et de plomber par là même le Works heet_Change ? Connais-tu Données > Validation .....? Exemple.... =NB.SI(A:A;A1)=1
Etc
Re,
Cela aurait été mieux et la 1ère idée qui viendrait mais ça ne t ient
pas sitot que l'on
fait un coller.
Cordialement.
--
lSteph
On 16 juil, 17:38, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Je souhaiterais faire la chose suivante en VBA :
> Lorsque l'utilisateur entre une donnée dans la colonne A, le programm e vérifie
> si la donnée est unique dans la colonne (dès qu'il a quitté la ce llule)
**********
Quel intérêt d'utiliser le vba et de plomber par là même le Works heet_Change ?
Connais-tu Données > Validation .....?
Exemple....
=NB.SI(A:A;A1)=1
Cela aurait été mieux et la 1ère idée qui viendrait mais ça ne t ient pas sitot que l'on fait un coller.
Cordialement.
-- lSteph
On 16 juil, 17:38, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Je souhaiterais faire la chose suivante en VBA :
> Lorsque l'utilisateur entre une donnée dans la colonne A, le programm e vérifie > si la donnée est unique dans la colonne (dès qu'il a quitté la ce llule)
********** Quel intérêt d'utiliser le vba et de plomber par là même le Works heet_Change ? Connais-tu Données > Validation .....? Exemple.... =NB.SI(A:A;A1)=1
Etc
Nemroth
Je ne connaissais pas Données > Validation J'ai essayé, et j'ai un message d'alerte quand les valeurs sont différentes alors que je souhaite le contraire. Peut-être n'ais-je pas fait ce/comme il fallait. Ceci-dit, dans la mesure où il va s'agir d'une feuille de données, avec les intitulés en ligne 1 et les enregistrements sur les lignes suivantes, ça ne me pose pas de problème d'utiliser le Worksheet_Change car il n'y aura pas d'autre VBA dans la feuille.
Caetera a écrit :
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
********** Quel intérêt d'utiliser le vba et de plomber par là même le Worksheet_Change ? Connais-tu Données > Validation .....? Exemple.... =NB.SI(A:A;A1)=1
Etc
Je ne connaissais pas Données > Validation
J'ai essayé, et j'ai un message d'alerte quand les valeurs sont
différentes alors que je souhaite le contraire.
Peut-être n'ais-je pas fait ce/comme il fallait.
Ceci-dit, dans la mesure où il va s'agir d'une feuille de données, avec
les intitulés en ligne 1 et les enregistrements sur les lignes
suivantes, ça ne me pose pas de problème d'utiliser le Worksheet_Change
car il n'y aura pas d'autre VBA dans la feuille.
Caetera a écrit :
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie
si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
**********
Quel intérêt d'utiliser le vba et de plomber par là même le Worksheet_Change ?
Connais-tu Données > Validation .....?
Exemple....
=NB.SI(A:A;A1)=1
Je ne connaissais pas Données > Validation J'ai essayé, et j'ai un message d'alerte quand les valeurs sont différentes alors que je souhaite le contraire. Peut-être n'ais-je pas fait ce/comme il fallait. Ceci-dit, dans la mesure où il va s'agir d'une feuille de données, avec les intitulés en ligne 1 et les enregistrements sur les lignes suivantes, ça ne me pose pas de problème d'utiliser le Worksheet_Change car il n'y aura pas d'autre VBA dans la feuille.
Caetera a écrit :
Je souhaiterais faire la chose suivante en VBA :
Lorsque l'utilisateur entre une donnée dans la colonne A, le programme vérifie si la donnée est unique dans la colonne (dès qu'il a quitté la cellule)
********** Quel intérêt d'utiliser le vba et de plomber par là même le Worksheet_Change ? Connais-tu Données > Validation .....? Exemple.... =NB.SI(A:A;A1)=1