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 :

boucle sur controls MSFORMS [XL-2016]


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
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut boucle sur controls MSFORMS
    Bonjour,

    J'ai un userform, comme ceci
    Nom : USRF6.jpg
Affichages : 92
Taille : 151,1 Ko

    je balayage chaque checkbox
    je mets les valeurs des labels "associés" aux Checkbox qui sont sur la même ligne du userform dans tableau essai(cpt)

    mon problème est que mon tableau ne balaye pas dans l'ordre d'affichage de mes labels, lorsque j'effectue ma boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each ctrl In UserForm5.Controls
    If TypeName(ctrl) = "CheckBox" Then
        If ctrl.Value = True Then
        numero = Mid(ctrl.Name, 9, Len(ctrl.Name) - 8)
        essai(cpt) = Replace(Me.Controls("Label" & numero).Caption, "-", "") & " => " & Me.Controls("ToggleButton" & numero).Caption
        End if
    End if
    Next ctrl
    du coup pour le checkbox1 j'aurai bien mon label1 dans mon essai(Cpt=0) = "R:roue => OK")
    au second passage et par exemple
    j'aurai le checkbox3 j'aurai mon label3 dans mon essai(Cpt=1) = "M:vitesse =>OK") alors que je voudrais que essai(cpt=1) = "R:gps"

    comment faire à part retrier mon tableau mais la c'est compliqué ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 566
    Par défaut
    si tes contrôles sont nommés par les numéros dans l'ordre, utilise plutôt un for classique qu'un for each, comme ça tu maitrise ton numéro.
    Sinon utilise la variable numero (à convertir en entier) -1 au lieu de la variable cpt et tu seras cohérent.
    (il manque l'incrémentation de cpt dans le code fourni, non?)

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    question bête :
    Pourquoi n'utilises tu pas la partie Caption des cases à cocher plutôt que d'utiliser une case à cocher + 1 libellé.
    Ami calmant, J.P

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Bonjour Umfred, et Jurrasic Pork,

    Merci pour vos interventions.
    1/ Je regarde la méthode De Umfred, je n’y avais pas pensé en utilisant la variable numéro
    2/ Le caption je regarderai aussi idem je n’y avais pas pensé

    Je vous dis ça demain.

    Encore merci.

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Bonjour,

    en faisant ceci et en suivant vos remarques ça fonctionne bien
    Merci beaucoup pour votre éclairage

    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
    For j = 1 To 32
     
    If Me.Controls("Checkbox" & j).Value = True Then
        'numero = Mid(ctrl.Name, 9, Len(ctrl.Name) - 8)
        essai(cpt) = Replace(Me.Controls("Label" & j).Caption, "-", "") & " => " & Me.Controls("ToggleButton" & j).Caption
        ReDim Preserve CSum(cpt)
     
                If Me.Controls("Checkbox" & j).Value = True And (j <= 2 Or j = 7 Or (j >= 9 And j <= 13)) Then
                CSum(cpt) = Left(Me.Frame1.Controls("ComboBox" & j).Value, 6)
                Else
                CSum(cpt) = ""
                End If
         cpt = cpt + 1
        End If
    Next j

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2016] boucle sur controls MSFORMS
    Par esse2016 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 29/04/2023, 19h14
  2. Boucle sur Control : Ordre des controls dans la Liste
    Par juanpa dans le forum Général VBA
    Réponses: 5
    Dernier message: 05/02/2015, 00h16
  3. Boucle sur controles et .tag associé
    Par pleskyd dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/10/2011, 17h13
  4. [C#] Boucle sur les controles
    Par stailer dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/05/2006, 08h48
  5. [JSP/WebSphere] Boucle de controle sur un FTP
    Par benben13 dans le forum Websphere
    Réponses: 10
    Dernier message: 30/08/2005, 16h18

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