Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Mettre un nombre égal de caractères dans textbox

NadJP

XLDnaute Nouveau
Bonjour,

Suite à des tests et l'aide de fanch55 que je remercie, je souhaiterais mettre un nombre égal de caractères en fonction des critères et des fichiers.

Si possible que ça suit le principe de la validation des données accompagné d'un MsgBox afin de prévenir l'utilisateur du nombre de caractères à renseigner :

VB:
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
        Operator:=xlEqual, Formula1:="4"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Erreur"
        .InputMessage = ""
        .ErrorMessage = "Veuillez saisir 4 chiffres."
        .ShowInput = True
        .ShowError = True
    End With

Je vous joins le fichier principal, accompagné de 3 fichiers destinataires, je pense que ça sera un peu plus clair sur le fonctionnement

Dans ce fichier, vous avez la possibilité d'ouvrir d'autres fichier d'un même dossier (en xlsx), puis de les imprimer.

Chaque fichier comporte un certain nombre de critères, et des cellules de destinations pour la saisie des données. Il y a la première ligne dédiée au nombre maximum de caractères. Par exemple, le critère 1 est de 4 caractères, le critère 2 de 5 caractères chiffrés, etc., ni plus, ni moins

Merci beaucoup pour votre aide
 

Pièces jointes

  • Main(4).xlsm
    37.6 KB · Affichages: 10
  • Fichier 1.xlsx
    10.7 KB · Affichages: 5

NadJP

XLDnaute Nouveau
Bonjour,

Je relance ce sujet encore une fois. J'ai vraiment besoin d'aide parce que je n'y arrive pas...

Est-il juste possible de mettre un critère minimum également ?

Ce code ci-dessous, permet de ne pas dépasser un certain nombre de caractères mais pas un minimum

Exemple :

Critère 1 : 6 chiffres maximum
Textbox1 associé au critère 1
Je saisis les caractères dans la textbox1, et par inattention, je mets plus de 6 chiffres, le code me bloque, il ne m'est pas possible d'en mettre plus de 6. Par contre, je mets 5 chiffres et cette fois ça passe, le code ne me bloque pas (ce qui est normal, puisque je ne lui ai pas donné d'instructions)

VB:
Private Sub Cmd_Valider_Click()
  ' Validation demandée, les cellules du document sont mis à jours
  ' les adresses complètes de celles-ci ayant été stockées dans le TipText
    For Each Ctl In Me.Controls
        If Ctl.Name Like "Cri_*" Then
            If Ctl.MaxLength > 0 _
            Then Ctl.Text = Left(Ctl.Text, Ctl.MaxLength)
            Range(Ctl.ControlTipText) = Ctl.Text
        End If
    Next
End Sub

Dans le code, nous utilisons la fonction MaxLength, est-il possible d'utiliser une fonction similaire et de l'associer au code ? (MinLength par exemple, même si elle n'existe pas)

Merci beaucoup..
 

Deadpool_CC

XLDnaute Accro
Bonjour, j'avoue que j'ai pas du tout compris ce que tu cherchais à faire mais si tu veux obliger les gens à saisir un texte avec un longueur précise dans une cellule . pourquoi tu créer pas un modèle de ton fichier et ensuite sur les cellules (avec "contrainte / Critère") tu n'utilise pas simplement la fonction dans [Données] /[Validation des données] et utiliser le critère longueur de texte avec en bonus des messages pour la saisies et en cas d'erreur.
Le gens ouvre ton modèle, remplisse et enregistre sous ...
après si tu veux absolument passer par du VBA ... je laisse d'autres répondres.
 

NadJP

XLDnaute Nouveau
Bonjour,

Merci pour ton retour et ta proposition. Je ne sais pas si tu as pu voir le fonctionnement de mon fichier? J'ai essayé cette méthode mais en incluant le vba, il n'y a pas de message d'erreur qui apparaît, même si la cellule est bien sous validation de données...
 

Deadpool_CC

XLDnaute Accro
Je n'ai pas cherché plus loin ... j'ai pas vraiment compris ce que tu cherchais à faire au final et donc pas d'idée pour savoir si c'est la meilleur solution dans la quelle tu t'orientes.
 

fanch55

XLDnaute Barbatruc
Salut,
Suite à ta demande sur mon profil, ce que je te propose,
c'est de compléter le chiffre avec des zéros devant quand celui-ci est plus court que le maxlength
VB:
Private Sub Cmd_Valider_Click()
  ' Validation demandée, les cellules du document sont mis à jours
  ' les adresses complètes de celles-ci ayant été stockées dans le TipText
    For Each Ctl In Me.Controls
        If Ctl.Name Like "Cri_*" Then
            If Ctl.MaxLength > 0 _
            Then Ctl.Text = Right(String(Ctl.MaxLength, "0") & Ctl.Text, Ctl.MaxLength)
            Range(Ctl.ControlTipText) = Ctl.Text
        End If
    Next
End Sub
 

NadJP

XLDnaute Nouveau
Re,
Merci pour ton aide et ton retour. En fait, chaque critère possède un certain nombre de caractères fixe. Par conséquent si l'utilisateur, par exemple, mets 2 chiffres au lieu de 3, le résultat escompté ne peut être bon. Ce qui serait judicieux ici, serait de pouvoir bloquer l'utilisateur si jamais il passe d'un critère à un autre sans qu'il ne saisisse le bon nombre de caractères. C'est soit il a bon, soit il a pas bon, c'est binaire pour le coup..

Je ne sais pas si cela est faisable avec la génération automatiques des textbox?

merci beaucoup pour le retour
 
Dernière édition:

NadJP

XLDnaute Nouveau
Ah oui c'est vrai que ça pique les yeux. J'ai mis vbMagenta pour le coup, c'est moins "violent"
Et pour les non-limitations de caractère, c'est pas un pb si la couleur ne s'affiche pas, puisqu'il bloque dans tous les cas si la cellule n'est pas saisie (code que j'ai ajouté)
Merci encore
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…