Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Validation bizarre

7 réponses
Avatar
Michel B
Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si non
elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier sans
que les autres champ soit renseignées, alors qu'il faut le lui interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux

7 réponses

Avatar
Daniel.C
Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet
de la feuille et clic sur visualiser le code; colle ensuite la macro
dans la partie droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si non
elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier sans que
les autres champ soit renseignées, alors qu'il faut le lui interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux


Avatar
Daniel.C
Cette macro n'efface toutefois pas la colonne A si tu effaces une
donnée des colonnes D:F. Si tu veux ajouter cette fonctionnalité,
dis-le.
Daniel

Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet de la
feuille et clic sur visualiser le code; colle ensuite la macro dans la partie
droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si non
elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier sans
que les autres champ soit renseignées, alors qu'il faut le lui interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux




Avatar
Michel B
Bonjour Daniel.
j'ai collé la fonction :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Et les ligne 2,3,4 se mette en rouge et produise une Erreur ?
Si on pouvé vidéer la cellule "A" en cas d'effacement de l'une des autres
cellules cela serait le pied.

Merci pour ton aide
Cordialement
Michel




"Daniel.C" a écrit dans le message de news:
uNFU1%
Cette macro n'efface toutefois pas la colonne A si tu effaces une donnée
des colonnes D:F. Si tu veux ajouter cette fonctionnalité, dis-le.
Daniel

Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet de
la feuille et clic sur visualiser le code; colle ensuite la macro dans la
partie droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si
non elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier
sans que les autres champ soit renseignées, alors qu'il faut le lui
interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux








Avatar
Daniel.C
En fait, les lignes 2 et 3 ne doivent faire qu'une seule ligne.
La ligne 1 comporte un ">" après Target.Column. N'hésite pas à revenir
si tu as un problème, je posterai un classeur exemple.
Daniel

Bonjour Daniel.
j'ai collé la fonction :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Et les ligne 2,3,4 se mette en rouge et produise une Erreur ?
Si on pouvé vidéer la cellule "A" en cas d'effacement de l'une des autres
cellules cela serait le pied.

Merci pour ton aide
Cordialement
Michel




"Daniel.C" a écrit dans le message de news:
uNFU1%
Cette macro n'efface toutefois pas la colonne A si tu effaces une donnée
des colonnes D:F. Si tu veux ajouter cette fonctionnalité, dis-le.
Daniel

Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet de
la feuille et clic sur visualiser le code; colle ensuite la macro dans la
partie droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si
non elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier sans
que les autres champ soit renseignées, alors qu'il faut le lui interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux










Avatar
Daniel.C
Le fait que les lignes soient coupées en deux vient du fait que les
lecteurs de news tronquent les lignes à 77 caractères, un usage qui
doit dater de l'époque des cartes perforées (80 colonnes dont un numéro
de séquence dans les dernières positions). ;-)))
Daniel

Bonjour Daniel.
j'ai collé la fonction :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Et les ligne 2,3,4 se mette en rouge et produise une Erreur ?
Si on pouvé vidéer la cellule "A" en cas d'effacement de l'une des autres
cellules cela serait le pied.

Merci pour ton aide
Cordialement
Michel




"Daniel.C" a écrit dans le message de news:
uNFU1%
Cette macro n'efface toutefois pas la colonne A si tu effaces une donnée
des colonnes D:F. Si tu veux ajouter cette fonctionnalité, dis-le.
Daniel

Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet de
la feuille et clic sur visualiser le code; colle ensuite la macro dans la
partie droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si
non elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier sans
que les autres champ soit renseignées, alors qu'il faut le lui interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux










Avatar
Michel B
Re bonjour Daniel

ça marche impec, pour ta proposition :

"Cette macro n'efface toutefois pas la colonne A si tu effaces une
donnée des colonnes D:F. Si tu veux ajouter cette fonctionnalité,
dis-le."

Effectivement je serais preneur car cela finaliserai le verrouillage.

Encore merci
Michel


"Daniel.C" a écrit dans le message de news:
Onpl9%
Le fait que les lignes soient coupées en deux vient du fait que les
lecteurs de news tronquent les lignes à 77 caractères, un usage qui doit
dater de l'époque des cartes perforées (80 colonnes dont un numéro de
séquence dans les dernières positions). ;-)))
Daniel

Bonjour Daniel.
j'ai collé la fonction :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Et les ligne 2,3,4 se mette en rouge et produise une Erreur ?
Si on pouvé vidéer la cellule "A" en cas d'effacement de l'une des autres
cellules cela serait le pied.

Merci pour ton aide
Cordialement
Michel




"Daniel.C" a écrit dans le message de news:
uNFU1%
Cette macro n'efface toutefois pas la colonne A si tu effaces une donnée
des colonnes D:F. Si tu veux ajouter cette fonctionnalité, dis-le.
Daniel

Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet
de la feuille et clic sur visualiser le code; colle ensuite la macro
dans la partie droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si
non elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier
sans que les autres champ soit renseignées, alors qu'il faut le lui
interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux














Avatar
Daniel.C
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Columns(1), Range(Columns(4), _
Columns(6)))) Is Nothing Then Exit Sub
If Application.CountA(Range(Cells(Target.Row, 4), _
Cells(Target.Row, 6))) < 3 Then
Application.EnableEvents = False
Cells(Target.Row, 1) = ""
Application.EnableEvents = True
End If
End Sub
Daniel

Re bonjour Daniel

ça marche impec, pour ta proposition :

"Cette macro n'efface toutefois pas la colonne A si tu effaces une
donnée des colonnes D:F. Si tu veux ajouter cette fonctionnalité,
dis-le."

Effectivement je serais preneur car cela finaliserai le verrouillage.

Encore merci
Michel


"Daniel.C" a écrit dans le message de news:
Onpl9%
Le fait que les lignes soient coupées en deux vient du fait que les
lecteurs de news tronquent les lignes à 77 caractères, un usage qui doit
dater de l'époque des cartes perforées (80 colonnes dont un numéro de
séquence dans les dernières positions). ;-)))
Daniel

Bonjour Daniel.
j'ai collé la fonction :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Et les ligne 2,3,4 se mette en rouge et produise une Erreur ?
Si on pouvé vidéer la cellule "A" en cas d'effacement de l'une des autres
cellules cela serait le pied.

Merci pour ton aide
Cordialement
Michel




"Daniel.C" a écrit dans le message de news:
uNFU1%
Cette macro n'efface toutefois pas la colonne A si tu effaces une donnée
des colonnes D:F. Si tu veux ajouter cette fonctionnalité, dis-le.
Daniel

Bonjour.
Mets la macro suivante dans le module feuille (clic droit sue l'onglet
de la feuille et clic sur visualiser le code; colle ensuite la macro
dans la partie droite de la fenêtre) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And
Cells(Target.Row, 4) = "" Then
Application.EnableEvents = False
Target = ""
Application.EnableEvents = True
End If
End Sub

Cordialement.
Daniel

Bonjours,

j'ai 4 colonnes

A : Inscription (Valeur X ou N)
D : Nom
E : Prénom
F : Date de naissance

Le champ A, ne dois pouvair être renseigné que si les 3 autres sont
renseignées

Une régle de validation a été créée pour la colonne A

=SI(ET(D2<>"";E2<>"";F2<>"");MaListe;)

MaListe = X ; N

MaListe n'est renseigner que si les autres 3 champs sont renseigné, si
non elle est vide.
Cela marche très bien.

Le problème est que l'utilisateur peut saisir directement au clavier
sans que les autres champ soit renseignées, alors qu'il faut le lui
interdire.
Je ne connais pas bien VBA et je séche.

Merci d'avance pour toute l'aide
Cordialement
Michel Bézoteaux