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
errorone

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

12err-v1.xlsx (13.09 Ko)

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...

13riri.xlsm (20.17 Ko)

[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)
Rechercher des sujets similaires à "appliquer deux types validation donnees"