Limiter certaines lettres dans une cellule

  • Initiateur de la discussion Initiateur de la discussion ShuarS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ShuarS

XLDnaute Occasionnel
Bonjour à tous 🙂

Dans la macro ci dessous, comment puis je faire pour autoriser en plus des caractères numériques, uniquement les lettres a, b et s svp ?

ABS ou abs exactement.
VB:
With Intersect(.Range("B2:B" & .Rows.Count).SpecialCells(xlCellTypeConstants).EntireRow, .[D:Q])
        .Locked = False
        .Value = ""
        .Validation.Add xlValidateDecimal, , Formula1:="0", Formula2:="100"
        '.Validation.Add xlValidate?????, , Formula1:="A" "B" "S" "a" "b" "s"  ????

Merci pour votre aide,
Shu
 
Dernière édition:
Je me suis dépatouillé avec l'enregistreur mais j'imagine qu'il est possible d'écrire ça plus proprement.
VB:
Range("D2:Q2").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="ABS"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With

Qu'en pensez vous ?
 
Notez que la formule précédente autorise le séparateur décimal (virgule chez moi) au sein des chiffres.

Si on veut aussi l'interdire utiliser cette formule :
Code:
=NON(MOD(SUBSTITUE(SUBSTITUE(D2;"ABS";);"abs";)&0;1))
En version anglaise elle s'écrit :
Code:
=NOT(MOD(SUBSTITUTE(SUBSTITUTE(D2,"ABS",),"abs",)&0,1))
Edit : ici on n'a pas besoin de convertir avec -(xxx) la fonction MOD s'en charge.
 
Dernière édition:
Bonjour à vous @job75 et merci pour vos explications détaillées 🙂

Dans mon cas je cherchais à passer par VBA car la plage des cellules est variable.
Et de cette manière je ne charge pas le fichier de base, car tout est directement appelé via une macro dans un .xlam sur serveur.

Mais je prends bonne note de vos lignes de commandes.

Bonne journée,
Shu
 
En VBA on utilisera ce code pour la 2ème formule :
VB:
With [D2:Q2] 'plage à adapter
    .Validation.Delete
    .Validation.Add xlValidateCustom, Formula1:="=NOT(MOD(SUBSTITUTE(SUBSTITUTE(" & .Cells(1).Address(0, 0) & ",""ABS"",),""abs"",)&0,1))"
End With
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour