Comment appliquer des "Rules" dans une cellule

Résolu
Bonjour,
J'utilise Excel 2007 (anglais) et on me demande d'insérer une règle pour le formatage d'une cellule et je ne sais pas comment faire. EX: pour aider les différents intervenants à compléter adéquatement lesdites cellules, je dois les formater pour entrer seulement 3 caractères alpha-numérique, sans majuscule ni espace et pas de symbole ou ponctuation. Les résultats possibles devraient être comme suit: 01a, 10g, 09d, etc.

Merci de votre aide et Bonne Année!

Infopige

6 réponses

  1. Contributeur
    Bonjour
    .. et avez vous une liste des valeurs possibles admises dans la cellule?
    à vous lire
    0
    1. Bonjour,

      Les valeurs attendues et possibles se situent entre 01a à 12z et peuvent être comme suit: 01a, 01b, 05k, etc
      donc seulement 3 caractères alpha-numérique, sans lettre majuscule, sans espace, sans caractère spécial ni ponctuation. Est-ce que ça répond à votre question?

      Merci

      Infopige
      0
      1. Contributeur
        Non... je ne connais pas de solution qui permette de formater une cellule dans ces conditions. Je demandais simplement si vous aviez la liste complète des valeurs qui peuvent être entrées dans cette cellule, auquel cas il suffisait d'en établir la liste et de passer par une validation de données.
        Mais si vous n'avez pas toute la liste, il va falloir attendre un autre secours. Je pense qu'il faudra passer par VBA, mais on n'est sur de rien.

        crdlmnt
        0
    2. Évidemment que je pourrais créer une telle liste mais elle serait vraiment exhaustive (01a à 01z, 02a à 02z, etc jusqu'à 12z), il y a sûrement une façon plus rapide que le "Vlookup".
      Je vous remercie de votre aide....

      Infopige
      0
      1. Contributeur
        Alors je n'ai trouvé que ça dans mes tiroirs en version française
        Données / validation / personnalisé et la formule: (pour cellule F1)
        :
        =ET(GAUCHE(F1;2)*1<13;NBCAR(F1)=3;NON(ESTNUM(DROITE(F1;1)*1)))

        cette formule exige:
        que les deux premiers caractères soient numériques
        que le nombre de caractère (blanc inclus au cas ou) ne dépasse pas trois
        que le dernier caractère ne soit pas numérique
        mais elle n'exclut pas la possibilité de placer un autre caractère en fin de libellé.

        Vous pouvez aussi tenter:
        de créer une liste hors champ ,de lettre de A à Z que vous nommerez par exemple ALPHA:
        la formule de validation serait alors:
        =ET(GAUCHE(F1;2)*1<13;NBCAR(F1)=3;EQUIV(DROITE(F1;1);ALPHA;0)>0)
        et dans ce cas seule une lettre de l'alphabet peut terminer le libellé.

        bonne chance

        crdlmnt
        0
      2. Bonsoir le fil

        bien vu, Vaucluse !
        il ne reste plus qu'à traiter le 00a ... , si ce code n'est pas dispo

        Bonne suite
        Cordialement
        0
    3. Je ne crois pas utiliser le 00a, b, c. etc.

      En vous remerciant de votre aide précieuse!

      Ingopige
      0
      1. Bonsoir,

        alors un simple rajout dans la fonction ET() :
        GAUCHE(F1;2)*1>0;
        suffira

        Bonne suite et Merci Vaucluse

        Edit : encore une trouvaille : la virgule et les (:)
        mais là, je sèche, ou bien reprendre la fin de formule pour l'appliquer à gauche, avec une plage numérique (01, 02, 03, etc..) nommée (ex: NUMER) au Format TEXTE

        l'ensemble devient :
        ' =ET(EQUIV(GAUCHE(F1;2);NUMER;0)>0;NBCAR(F1)=3;EQUIV(DROITE(F1;1);ALPHA;0)>0)

        ce "filtre" devrait bien limiter les dérives
        Cordialement
        0
    4. Contributeur
      Bonsoir à tous,

      celle-ci devrait être complète, contrôle minuscule compris :
      =ET(NBCAR(A1)=3;GAUCHE(A1;1)>="0";GAUCHE(A1;1)<="9";STXT(A1;2;1)>="0";STXT(A1;2;1)<="9";CODE(DROITE(A1;1))>=97;CODE(DROITE(A1;1))<=108;GAUCHE(A1;2)*1<=12)

      eric

      Jamais tu ne répondras à un mp non sollicité...
      Bon, ça c'est fait.
      0
      1. Bonjour à tous,

        une proposition à base d'expressions régulières :
        Function saisie_ok(macellule)
            Dim regEx As New VBScript_RegExp_55.RegExp
            regEx.Pattern = "^(0[1-9]|1[0-2])\w$"
            regEx.IgnoreCase = False
            regEx.Global = True
            saisie_ok = regEx.Test(macellule)
        End Function
        
        Ne pas oublier de charger la référence Microsoft VBScript_RegExp_55.RegExp
        L'intérêt réside dans l'adaptabilité à n'importe quelle règle (moyennant l'écriture du bon pattern quand même!).

        Cordialement
        0