Bonjour,
J'aimerais interdire les valeurs numériques dans un champ texte.
J'ai mis cette validation mais il ne tient pas compte des valeurs numériques à interdire.
Merci de votre collaboration.
Bonjour,
J'aimerais interdire les valeurs numériques dans un champ texte.
J'ai mis cette validation mais il ne tient pas compte des valeurs numériques à interdire.
Merci de votre collaboration.
Bonjour,
Avec une MFC dans la cellule à tester, si elle contient des valeurs numériques elles passe en rouge (ou autre couleur).
La formule à mettre dans la MFC, ici pour la cellule en A1] avec un nombre maximum de 10 caractères (changer les valeurs en rouge selon vos besoins)
Cdlt
Code : Sélectionner tout - Visualiser dans une fenêtre à part =EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$10);1)));0)
Est-ce que ce que tu veux éliminer ce sont les saisies ne contenant que des chiffre (les nombres) ou les textes contenant au moins un chiffre ?
En somme, est-ce qu'une saisie ABC5DE est acceptable ou non ?
Je peux encore écrire des valeurs numériques au lieu de mon prénom dans le champ texte
Je n'ai pas dit que ça empêchait d'écrire des chiffres, simplement que la cellule changeait de couleur de fond incitant l'utilisateur à rectifier la saisie.Je peux encore écrire des valeurs numériques au lieu de mon prénom dans le champ texte
Pièce jointe 578823
Je ne veux pas que la cellule change de couleur
Ce que j'aimerais c'est que uniquement le texte soit permis car un prénom et nom d'individu ne contient pas de valeurs numériques…
Bonjour,
Cela est possible via la validation de données.
Exemple :
Ca n'empêchera personne de taper, par exemple, "123ta456" dans la cellule.
Pour ma part, je ferais une liste déroulante reprenant le nom des personnes autorisées à saisir et/ou modifier les données afin de limiter tout risque d'erreur.
Bonjour,
Si l'on veut interdire l'entrée dans la cellule A1 d'un contenu tel que "abc12cf", on peut employer en validation de données la formule inspirée de la réponse d' Arturo83 en la modifiant légèrement :
Par contre, cela n'empèchera d'entrer des textes tels que " abc(ef=gh" avec des caractères parasites mais non numériques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =ESTERREUR(EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$20);1)));0))
Si l'on veut éviter aussi cette possibilité, je n'ai trouver qu'une formule plus indigeste en testant le code des caractères.
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part =(MIN(CODE(STXT(A1;LIGNE($1:$20);1)))>64)*(MIN(CODE(STXT(A1;LIGNE($1:$20);1)))<91)+(MIN(CODE(STXT(A1;LIGNE($1:$20);1)))>96)*(MIN(CODE(STXT(A1;LIGNE($1:$20);1)))<123)
Claude
@papouclo
Il y a quelque chose que je ne comprends pas dans cette solution géniale.
Si on la met en tant que formule dans une cellule (autre que la A1 bien entendu), il faut la valider en tant que formule matricielle pour qu'elle "fonctionne" correctement.
Ma question est : comment Excel "sait" qu'il faut l'interpréter en tant que formule matricielle dans Données > Validation et non comme une formule classique ?
Merci d'avance pour l'éclairage
Pierre
Bonjour,
Je ne saurais expliquer pourquoi mais Excel ne demande pas la validation matricielle habituelle lorsqu'on écrit une formule matricielle dans la fenêtre de validation de données ni dans la fenêtre de définition d'un nom.
De plus, Excel ne demande plus de valider "matriciellement" les formules matricielles dans la version Office 365 (appelée maintenant Microsoft 365).
Cordialement
Claude
Est-ce que le "-" est permis ?
Si qqn écrit Jean-Pierre par exemple
Bonjour,
Peut-être que pour vérifier les saisies, une approche basée sur une liste de caractères interdits ou une liste de caractères autorisés serait plus adaptée à ton besoin :
>> Pour vérifier que A1 ne contient aucun caractère d'une liste, on peut utiliser la formule :
renvoie VRAI si A1 ne contient aucun caractère présent dans la liste (liste noire), FAUX sinon
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SOMMEPROD(NBCAR(SUBSTITUE(A1;liste;"")))/NBVAL(liste)=NBCAR(A1)
>> Pour vérifier que A2 ne contient que des caractères présents dans une liste (définie sans doublon), on peut utiliser la formule :
renvoie VRAI si A2 ne contient que des caractères présents dans la liste (liste blanche), FAUX sinon
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SOMMEPROD(NBCAR(SUBSTITUE(A2;liste;"")))<=((NBVAL(liste)-1)*NBCAR(A2))
Dans ces 2 formules, le mieux est de définir liste par une référence à des valeurs saisies par exemple en colonne J (sans entête) :La liste ne doit contenir ni cellule vide, ni doublon, sinon le résultat serait faussé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DECALER($J$1;0;0;NBVAL($J:$J);1)
Bonjour à tous,
désolé si j'arrive après la bataille mais les solutions proposées sont très bien sur des petites quantités de saisie, parce que si on augmente la liste de saisie il va falloir ajouter des lignes de formules et par la même occasion augmenter la taille du fichier.
je me suis dit que pour simplifié et allégé la solution je suis parti sur une macro (tu ne dis pas que tu n'en veux pas )
et la détection des codes Ascii de chaque caractère et en fonction du n° obtenu on dit si oui ou non c'est correct
c'est perfectible bien sur mais cela fonctionne et c'est facilement maintenable plus que des séries de formules surtout si elles sont planquées dans des listes de validation (Je ne critique en rien vos solutions qui sont je le répète très bien)
donc sur la feuille ou la saisie se fait mettre la macro suivante :
Attention c'est une macro événementielle donc elle se met non pas dans un module mais dans la feuille !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 Private Sub Worksheet_Change(ByVal Target As Range) Dim Sais_ok As Boolean Dim Saisie As String Dim Posit_Sais As Long 'position dans la saisie If Cells(Target.Row, Target.Column).Value <> "" Then Saisie = Cells(Target.Row, Target.Column).Value Sais_ok = False For Posit_Sais = 1 To Len(Saisie) Select Case Asc(Mid(Trim(Saisie), Posit_Sais, 1)) ' Majuscule Case 65 To 90 Sais_ok = True ' Minuscule Case 97 To 122 Sais_ok = True ' espace et ponctuation Case 32, 39, 44, 45, 46, 160 ' A accentué Case 192, 194, 196, 224, 226, 228 Sais_ok = True ' E accentué Case 200, 201, 202, 203, 232, 233, 234, 235 Sais_ok = True ' I accentué Case 206, 207, 238, 239, 244, 246, 249, 251, 252 Sais_ok = True ' O accentué Case 212, 214, 244, 246 Sais_ok = True ' U accentué Case 217, 219, 220, 241, 249, 251, 252 Sais_ok = True ' Autres cas permis comme ç, ñ, ... Case 199, 209, 231, 241, 338, 339 Sais_ok = True Case Else ' Autres cas non permis Sais_ok = False End Select If Sais_ok = False Then MsgBox "Vous avez saisis un caractère non conforme !" & vbcrfl & "Veuillez rcommencer", vbCritical Cells(Target.Row, Target.Column).Value = "" 'vidage de la cellule Cells(Target.Row, Target.Column).Select 'reposition sur la cellule de saisie End If Next End If End Sub
Bonne journée à tous
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager