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

Macros et VBA Excel Discussion :

Ajouter automatiquement des caractères dans un textBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Juillet 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 16
    Par défaut Ajouter automatiquement des caractères dans un textBox
    Bonjour, je reviens sur ce forum car les réponses que j'obtiens à mes questions son pertinentes et me permettent d'avancer sur les connaissances en VBA.

    Objectif :

    Créer un code permettant aux utilisateurs de faciliter le remplissage d'un tableau.

    J'ai déjà créé un Userform avec un textBox mais j'aimerai rendre celui-ci plus autonome. Lorsque l'utilisateur rempli le textBox, il faudrait que des caractères apparaissent automatiquement.

    Exemple:
    Si l'utilisateur met "TA14" dans le textBox > "OCP-TA000014" devrait apparaitre automatiquement dans le tableau.
    FO125 > OCP-FO000125
    PL1202 > OCP-PL001202


    La valeur à la fin devra toujours etre composé de : OCP-8 caractères.
    Celà permettra à l'utilisateur de renseigner que 5 caractères au lieu de 12. De plus je serai sûr que le nombre de "0" est bien respecté.


    Avez vous une idée de comment faire ?

    Cordialement,

  2. #2
    Membre confirmé Avatar de fuine0069
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 33
    Par défaut
    bonjour,

    je ne peux que te conseiller d'aller voir le blog de Silkyroad, qui est très bien alimenté sur le sujet.
    http://silkyroad.developpez.com/VBA/...nesCaracteres/
    bon code

  3. #3
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour à vous,

    En supposant que le TextBox en question se nomme 'TextBox1', je peux vous proposer le code suivant pour la UserForm (il est nécessaire de déclarer une référence à 'Microsoft VBScript Regular Expressions 5.5' pour que le code fonctionne) :
    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
     
    Private Reg As VBScript_RegExp_55.RegExp
     
    Private Sub UserForm_Initialize()
        Set Reg = New VBScript_RegExp_55.RegExp
    End Sub
     
    Private Sub TextBox1_Change()
        Dim Str As String
        Reg.Pattern = "(OCP-|)([a-zA-Z]{2})0*(\d+)"
        Str = Reg.Replace(Me.TextBox1.Text, "$2$3")
        If Str Like "[a-zA-Z][a-zA-Z]#*" Then
            Application.EnableEvents = False
            Me.TextBox1.Value = "OCP-" & Left(Str, 2) & Format(Right(Str, Len(Str) - 2), "000000")
            Application.EnableEvents = True
        End If
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto = "TA14"
    titi = "OCP-" & Left(toto, 2) & Format(Mid(toto, 3), "0000#")
    MsgBox titi

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Juillet 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 16
    Par défaut
    Bonjour Ben_L,

    Tout d'abord merci pour ton code.

    Lorsque que je le met dans mon userform, un message d'erreur survient sur la ligne : Private Reg As VBScript_RegExp_55.RegExp. Le message est "type défini par l'utilisateur non défini"

    Avez - vous une solutions ?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Avez - vous une solutions ?
    Oui. Et avec VBA tout seul, comme un grand, question de portabilité (vbs est inhibé sur certaines machines, dont la mienne, pour raisons de sécurité ...et il faut donc se garder d'en être dépendant ...)
    Qu'as-tu fait de celle que je t'ai indiquée ?

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Juillet 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 16
    Par défaut
    Oui Unparia,

    Merci j'ai réussi à l'adapter.
    Voici le code :

    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
    Private Sub inserer_Click()
     
    Sheets("Feuil1").Activate
    '-----------------------------------------------------'
    ligne = 1
     
    While Cells(ligne, 1).Value <> ""
    ligne = ligne + 1
     
    Wend
    toto = TextBox1.Value
    titi = "OCP-" & Left(toto, 2) & Format(Mid(toto, 3), "00000#")
    MsgBox titi
     
    Cells(ligne, 1).Value = [TextBox1Value
     
    End Sub

    Il semble fonctionner.

Discussions similaires

  1. [Toutes versions] Insérer automatiquement des données dans une TextBox de mon userform
    Par Valoche37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/01/2012, 18h18
  2. Ajouter des caractéres dans une textbox
    Par l3xki dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/02/2008, 14h18
  3. [Débutant] Ajouter automatiquement des caractères
    Par Sylv26 dans le forum Access
    Réponses: 9
    Dernier message: 24/01/2007, 16h32
  4. [C#][2.0]Récupérer des caractères dans un textbox
    Par Sodangbe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/04/2006, 12h50
  5. Réponses: 2
    Dernier message: 28/03/2006, 11h45

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