Appliquer deux types de validation de données
Bonjour chers développeurs,
SVP , j'ai une question à propos la validation des données ,
j'ai une feuille excel qui comporte une checklist des critères a vérifier :
l'utilisateur doit cocher soit:
O: Oui
N: Non
NA : Non appliqué
pour éviter tout type d'erreur ou d'oubli nous avons ajouté:
- une MFC dans le cas ou l'utilisateur a oublié de répondre à une question ( la ligne se colorie en rouge )
- Une validation de données si l'utilisateur coche deux réponses en même temps
Maintenant , c'est que je désire ajouter c'est une autre condition pour que l'utilisateur saisit x seulement et rien que x , pour ne pas avoir une diversité pour les autres utilisateurs ou bien le même ,; il pourra saisir x minuscule parfois majuscule.
Je voulais ajouter cette condition mais le problème c'est que la validation de données est déjà remplie par l'ancienne condition .
Y a t il une astuce pour insérer cette condition dans validation de données ??
ci joint Excel
Merci beaucoup
Bonjour Riri, bonjour le forum,
Le code ci-dessous remplace n'importe quel caractère pas un "x" et ne permet qu'un seul "x" par ligne.
Dim TEST As Boolean 'déclare la variable TEST
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
Set PL = Range("F4:H9,F13:H16,F21:H23") 'définit la variabel PL
If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If TEST = True Then TEST = False: Exit Sub 'si test est [Vrai], sort de la procédure
TEST = True 'définit la variable TEST
'si le changement a lieu ailleurs que dans la plage PL, sort de la procédure
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub
Cells(Target.Row, 6).Resize(1, 3).ClearContents 'efface les trois cellules de la ligne
Target.Value = "x" 'renvoie "x" dans la cellule
TEST = False 'redéfinit la variable TEST
End Sub
Pour effacer un "x" il faut sélectionner au préalablement les 3 cellules des colonnes F, G et H...
[quote="ThauThème"]Bonjour Riri, bonjour le forum,
Le code ci-dessous remplace n'importe quel caractère pas un "x" et ne permet qu'un seul "x" par ligne.
[code=vbDim TEST As Boolean 'déclare la variable TEST
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
Set PL = Range("F4:H9,F13:H16,F21:H23") 'définit la variabel PL
If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If TEST = True Then TEST = False: Exit Sub 'si test est [Vrai], sort de la procédure
TEST = True 'définit la variable TEST
'si le changement a lieu ailleurs que dans la plage PL, sort de la procédure
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub
Cells(Target.Row, 6).Resize(1, 3).ClearContents 'efface les trois cellules de la ligne
Target.Value = "x" 'renvoie "x" dans la cellule
TEST = False 'redéfinit la variable TEST
End Sub[/code]
Pour effacer un "x" il faut sélectionner au préalablement les 3 cellules des colonnes F, G et H...[/quote]
THAUTHèME
Ce que vous avez proposé est extra hyper parfait
Merci beaucouuuup , c'est énorme
Mais je voulais juste comprendre cette partie là :
Cells(Target.Row, 6).Resize(1, 3).ClearContents
Cells(Target.Row, 6) le nombre 6 ça représente quoi exactement ?
Bonjour Riri, bonjour le forum,
C'est énorme ?!... Faudrait quand même pas exagérer non plus...
6 c'est le numéro de la colonne (=> colonne F)
Cells(ligne, colonne) est une autre manière d'écrire Range("ColonneLigne").
Cells(5, 6) <==> Range("F5")
ThauThème a écrit :Bonjour Riri, bonjour le forum,
C'est énorme ?!... Faudrait quand même pas exagérer non plus...
6 c'est le numéro de la colonne (=> colonne F)
Cells(ligne, colonne) est une autre manière d'écrire Range("ColonneLigne").
Cells(5, 6) <==> Range("F5")
Ah bon , d'accord , j'ai compris
Merci Merci merciiiiiii et mille fois merci Thauthème
Je suis hyper heureuse de ce que vous m'avez proposé ,
Bonjour,
Je vous propose de tester cette formule unique de validation au lieu et place de l'ancienne :
=SI(NB.SI($F4:$H4;"=x")<>1;FAUX;VRAI)