IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Interdire une valeur numérique dans un champ texte


Sujet :

Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Interdire une valeur numérique dans un champ texte
    Bonjour,

    J'aimerais interdire les valeurs numériques dans un champ texte.

    Nom : 1.jpg
Affichages : 664
Taille : 9,5 Ko

    J'ai mis cette validation mais il ne tient pas compte des valeurs numériques à interdire.

    Nom : 2.jpg
Affichages : 680
Taille : 27,9 Ko

    Merci de votre collaboration.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    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)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$10);1)));0)
    Cdlt

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    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 ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je peux encore écrire des valeurs numériques au lieu de mon prénom dans le champ texte

    Nom : 3.jpg
Affichages : 647
Taille : 49,6 Ko

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    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.

    Pièce jointe 578823

  6. #6
    Invité
    Invité(e)
    Par défaut
    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…

  7. #7
    Membre habitué
    Homme Profil pro
    Employé administratif
    Inscrit en
    Mars 2018
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Mars 2018
    Messages : 112
    Points : 176
    Points
    176
    Par défaut
    Bonjour,

    Cela est possible via la validation de données.

    Exemple :

    Nom : valid 1.JPG
Affichages : 646
Taille : 42,6 Ko
    Nom : valid 2.JPG
Affichages : 640
Taille : 42,5 Ko
    Nom : valid erreur.JPG
Affichages : 634
Taille : 52,2 Ko

    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.

  8. #8
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ESTERREUR(EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$20);1)));0))
    Par contre, cela n'empèchera d'entrer des textes tels que " abc(ef=gh" avec des caractères parasites mais non numériques.
    Si l'on veut éviter aussi cette possibilité, je n'ai trouver qu'une formule plus indigeste en testant le code des caractères.
    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)
    Cordialement
    Claude

  9. #9
    Membre expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 512
    Points : 3 095
    Points
    3 095
    Par défaut
    @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

  10. #10
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    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

  11. #11
    Invité
    Invité(e)
    Par défaut
    Est-ce que le "-" est permis ?

    Si qqn écrit Jean-Pierre par exemple

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(NBCAR(SUBSTITUE(A1;liste;"")))/NBVAL(liste)=NBCAR(A1)
    renvoie VRAI si A1 ne contient aucun caractère présent dans la liste (liste noire), FAUX sinon

    >> 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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(NBCAR(SUBSTITUE(A2;liste;"")))<=((NBVAL(liste)-1)*NBCAR(A2))
    renvoie VRAI si A2 ne contient que des caractères présents dans la liste (liste blanche), FAUX sinon

    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) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECALER($J$1;0;0;NBVAL($J:$J);1)
    La liste ne doit contenir ni cellule vide, ni doublon, sinon le résultat serait faussé.

  13. #13
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    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 :

    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
    Attention c'est une macro événementielle donc elle se met non pas dans un module mais dans la feuille !!!

    Bonne journée à tous

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment insérer une valeur provenant d'un champs texte dans une requête SQL
    Par carlostropico dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/12/2009, 15h38
  2. Ajouter une valeur numérique dans un champ null
    Par Christophe Charron dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/09/2009, 19h00
  3. Réponses: 4
    Dernier message: 05/08/2009, 10h23
  4. Réponses: 3
    Dernier message: 10/08/2005, 12h11
  5. Inserer une valeur NULL dans un champ datetime
    Par Karibou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/08/2005, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo