OVH Cloud OVH Cloud

Information sur Colonne

9 réponses
Avatar
phil.aline.naudin
Bonsoir à Tous !
Je souheterai "surveiller" la saisie dans une colonne. Dans les faits
lorsque je frappe la même donnée j'aimerai qu'une boite de dialogue
m'informe que cette donné existe déjà. Je validerai cette boite mais je
pourrai saisir malgré tout le futur doublon ou triplons ou quadruplons ...
Merci pour le coup de main

9 réponses

Avatar
AV
Pour une saisie en colonne A
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Column <> 1 Then Exit Sub
If Application.CountIf([A:A], zz) > 1 Then _
MsgBox "La valeur " & zz & " est déjà présente en A:A"
End Sub

AV
Avatar
phil.aline.naudin
Merci pour ta réponse.
Le blème est que je suis limité en VBA et malgré mes tests je n'arrive pas
à faire fonctionner ton code. Par exemple je ne comprends pas le"zz"Je pense
qu'il faut le remplacer pas qqchose mais je ne sais pas quoi !
Pour plus d'infos je veux "surveiller" une saisie alphanumérique sur 5
caractères. exemple:
23595 ou 2d595.
Merci pour ta patience.


"AV" a écrit dans le message de news:

Pour une saisie en colonne A
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Column <> 1 Then Exit Sub
If Application.CountIf([A:A], zz) > 1 Then _
MsgBox "La valeur " & zz & " est déjà présente en A:A"
End Sub

AV




Avatar
AV
Si tu veux que "ça le fasse" dans la colonne A 5carctères plus le reste)
Copier le code > Clic droit sur le nom de l'onglet > visualiser le code >
collage du code

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Column <> 1 Then Exit Sub
If Len(zz) <> 5 Then
Application.EnableEvents = False
MsgBox "Saisie non conforme"
zz.Select
zz = ""
Application.EnableEvents = True
End If
If Application.CountIf([A:A], zz) > 1 Then _
MsgBox "La valeur " & zz & " est déjà présente en A:A"
End Sub

AV
Avatar
phil.aline.naudin
Euh Euh oui mais dans la colonne B avec simplement un message qui me
prévient que le n° existe mais que je puisse le saisir tout de mëme.
j'ai vraiment pas pîgé le "zz" dans ton code. A veut dire quoi ???

Encore merci

"AV" a écrit dans le message de news:

Si tu veux que "ça le fasse" dans la colonne A 5carctères plus le reste)
Copier le code > Clic droit sur le nom de l'onglet > visualiser le code >
collage du code

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Column <> 1 Then Exit Sub
If Len(zz) <> 5 Then
Application.EnableEvents = False
MsgBox "Saisie non conforme"
zz.Select
zz = ""
Application.EnableEvents = True
End If
If Application.CountIf([A:A], zz) > 1 Then _
MsgBox "La valeur " & zz & " est déjà présente en A:A"
End Sub

AV




Avatar
AV
Euh Euh oui mais dans la colonne B avec simplement un message qui me
prévient que le n° existe mais que je puisse le saisir tout de mëme.


Ben faudrait préciser la question...avant d'avoir eu des réponses
Ca facilite grandement le smilblick !

Pour la colonne B il suffit de changer le test
If zz.Column <> 1 Then Exit Sub
par
If zz.Column <> 2 Then Exit Sub

j'ai vraiment pas pîgé le "zz" dans ton code. A veut dire quoi ???
Ne cherche pas une raison particulière : il n'y en a pas !

Tu peux remplacer "zz" par n'importe quoi (Target par exemple !)

AV

Avatar
phil.aline.naudin
Merci pour tes réponses
Le code fonctionne jusqu'au moment où je veux supprimer l'info en double ou
en triple. Une erreur apparaît et porte le n°13 ?.
Autre question,
Si je veux contrôler 2 colonnes (B et C) par exemple comment dois-je m'y
prendre ?

Encore merci




"AV" a écrit dans le message de news:
u$
Euh Euh oui mais dans la colonne B avec simplement un message qui me
prévient que le n° existe mais que je puisse le saisir tout de mëme.


Ben faudrait préciser la question...avant d'avoir eu des réponses
Ca facilite grandement le smilblick !

Pour la colonne B il suffit de changer le test
If zz.Column <> 1 Then Exit Sub
par
If zz.Column <> 2 Then Exit Sub

j'ai vraiment pas pîgé le "zz" dans ton code. A veut dire quoi ???
Ne cherche pas une raison particulière : il n'y en a pas !

Tu peux remplacer "zz" par n'importe quoi (Target par exemple !)

AV





Avatar
AV
Pour les contraintes précédentes plus les nouvelles :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If Selection.Count > 1 Then Exit Sub
x = zz.Column
If x <> 2 And x <> 3 Then Exit Sub
If Len(zz) <> 5 Then
Application.EnableEvents = False
MsgBox "Saisie non conforme"
zz.Select: zz = ""
Application.EnableEvents = True
End If
If Application.CountIf(Range(Cells(1, x), Cells(65536, x)), zz) > 1 Then _
MsgBox "La valeur " & zz & " est déjà présente en colonne " & _
Application.Choose(x - 1, "B", "C")
End Sub

AV
Avatar
phil.aline.naudin
Merci je termine à l'instant l'intégration de ton code.
Par contre quand je quitte le deuxième champs où j'effectue le test, le
robot m'annule la donnée. Mon idée de départ était de garder la donnée, en
fait je préviens mais je garde.

Merci encore
"AV" a écrit dans le message de news:

Pour les contraintes précédentes plus les nouvelles :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If Selection.Count > 1 Then Exit Sub
x = zz.Column
If x <> 2 And x <> 3 Then Exit Sub
If Len(zz) <> 5 Then
Application.EnableEvents = False
MsgBox "Saisie non conforme"
zz.Select: zz = ""
Application.EnableEvents = True
End If
If Application.CountIf(Range(Cells(1, x), Cells(65536, x)), zz) > 1
Then _
MsgBox "La valeur " & zz & " est déjà présente en colonne " & _
Application.Choose(x - 1, "B", "C")
End Sub

AV




Avatar
AV
...... Mon idée de départ était de garder la donnée, en
fait je préviens mais je garde.


Supprime les lignes 6, 8 et 9

AV