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 :

[VBA E] boucle sur textbox d'une userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut [VBA E] boucle sur textbox d'une userform
    Bonjour a tous

    Je voudrais savoir s'il est possible de creer une boucle sur 40 textbox situé sur une userform.

    Donc en fait ma userform comporte exactement 41 textbox et je veux que la boucle se fasse sur mes 40 premieres textbox et pas sur la 41ème.

    Mes 40 textbox sont sur 4 frames par groupe de 10 et la 41èmetextbox est directement sur la userform (information supplementaire si ça peut aider).

    le code que je veux boucler est celui ci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
     
    Application.ScreenUpdating = False
                TextBox1.Value = TimeValue(Left(Application.Text(TextBox1.Value, "00.00"), 2) _
            & ":" & Right(TextBox1.Value, 2))
            c = TextBox1.Value
           h1 = TextBox1.Value    'cette variable ne sert que pour la suite
           TextBox1.Value = Format(c, "hh\H mm")
     
    End Sub
    mais il ne fonctionne que pour une textbox.

    Je ne sais pas si c'est possible car il s'execute sur l'evenement "TextBox_Exit"
    Alors dois je mettre un code pour chaque textbox, ce qui allourdi en ligne de code ou estce possible de le boucler.

    Si quelqu'un peut m'aider.

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Deux possibilités : Ou toutes les textbox de ta form sont à traiter, ou seulement une partie des textbox de la form (même si c'est la plus grande partie)
    Dans le premier cas, tu peux faire une boucle sur LaForm.controls en identifiant le type du contrôle (ici des textbox)
    Dans le second cas, tu baptises les textbox concernés de noms comportant tous un préfixe identique.
    Ta boucle, au lieu d'identifier un type de contrôle, reconnaîtra le contrôle selon le préfixe de son nom.

    Pas la peine que je te passe les deux codes alors précise le cas qui te concerne

  3. #3
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Bonjour ouskel'n'or

    Mon cas est le second mes texbox concernés se nomme toute de "textbox1" jusqu'a "textbox40"

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello zoumzoum59,
    Oui, je sais, j'ai un peu tardé mais j'étais pas là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For each lecontrol in Luserform.controls
          if left(LeControl.name,6) = "TextBox" then
                Result = Luserform.controls(LeControl.name).text
                ' et tu fais ce que tu veux de Result
          endif
    next

  5. #5
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Merci ouskel'n'or

    j'ai repris ton code est je l'ai retravaillé de cette maniére:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim LeControl As Variant
    Dim Result As Variant
     
     
    For Each LeControl In Planning.Controls
          If Left(LeControl.Name, 7) = "TextBox" Then
                Result = Planning.Controls(LeControl.Name).Text
     
                ' et tu fais ce que tu veux de Result
     
           End If
    Next
    je recupere avec ce code le texte des textbox ce qui me sert d'exemple pour faire ce que je veux derrière et y mettre ce que je veux.
    Jusque là je pense que j'ai compris.

    Mais comment je fais pour lier cette procedure aux evenements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    de chaque textbox, là je dois dire que je suis completement perdu et de mon coté je me demande si c'est possible de le faire ou pas.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    c'est possible en utilisant un module de classe mais, pour ne pas créer une usine à gaz , il faudrait :

    - ne pas utiliser l'evenement Exit

    ou

    - ne pas utiliser de Frames


    bonne soiree
    michel

Discussions similaires

  1. Boucle sur TextBox pour les "Enabled" suivant une condition
    Par GoFio dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 06/03/2014, 18h38
  2. [VBA-E]Comment envoyer en parametre un textbox d'une userform
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/09/2007, 14h16
  3. [VBA-E] boucle sur chaque feuille d un classeur
    Par johndeuf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/12/2006, 11h39
  4. [VBA-E] SetFocus sur TextBox dans UserForm_Initialize ne fonctionne pas ?
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/11/2006, 11h39
  5. [VBA-E] Supprimer un contrôle d'une userform
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 12h00

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