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 :

récupérer les noms des cases à cocher


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut récupérer les noms des cases à cocher
    Bonjour,

    J'ai un formulaire avec plusieures cases à cocher et je voudrais récupérer les noms des coches qui sont coché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    if me.AA = true then 
    var=var +"AA" 
    end if 
     
    if me.BB = true then 
    var=var +"BB" 
    end if 
     
     
    etc


    par contre le probleme c'est qu"il est possible de cocher environ 30 cases
    donc pour recupere les nom de toutes les cases cochées par l'utilisateur
    il faudrait ecrire environ 30 condiions IF

    y aurait-il un moyen de tous les recuperer rapidement?

    par ailleurs, dans le code vba, j'ai insérer des debug.print pour afficher les commentaires dans la fenetre d'exécution.

    je voudrais faire un ZOne de texte dans le formulaire pour afficher tous ces commentaires mais le souci c'est que je ne sais pas comment récupérer tous les Debug.print pour les afficher .


    merci de votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    donne le même nom (toto, par exemple) suivi d'un nombre en série continue à toutes tes cases à cocher ===>> toto1, toto2, toto3,...., toto29, toto30

    La collection controls te permet ensuite de t'y référer

    par exemple, se réfère à ta case à cocher toto3

    Te reste à faire une boucle du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 to 30
      if controls("toto" & i) = true then
      tavariable = tavariable & controls("toto" & i).Name
    next

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    je suis d'accord avec ucfoutu sauf que tu devrais utiliser une bouche For...Each sur tous les Controls ou Shapes.
    Ca devrait ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each ctrl In Feuil1.Controls
            If Left(ctrl .Name, 4) = "toto"  and ctrl .selected = true Then
                .....
            End If
    Next ctrl
    De cette facon, tu peux changer le nombre de cases et ca marchera toujours

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut
    Merci bcp


    ca marche ucfoutu , il manque juste un End if
    par contre avec le code de radagast35 il mecrit 'propriéte ou methode non géré par cet objet à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     If Left(ctrl.Name, 4) = "toto" And ctrl.Selected = True Then
    savez vous pourquoi?

    sinon comme les cases à cocher sont déja nommés serait -il possible de recupere r leur nom sans les renommer une par une?

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par moimemessssssssss Voir le message
    par contre avec le code de radagast35 il mecrit 'propriéte ou methode non géré par cet objet
    savez vous pourquoi?
    Parce que le code proposé par radagast concerne les contrôles insérés sur une feuille, ce qui n'est pas ton cas

    Concernant le nom de tes CheckBox, tu peux éventuellement tous les parcourir sans te soucier de leurs noms et récupérer le Caption de ceux qui sont cocher

    Exemple via un bouton de commande sur le UserForm en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    Dim Ctrl As Control, Var As String
     
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.CheckBox Then
            If Ctrl = True Then Var = Var & Chr(10) & Ctrl.Caption
        End If
    Next
     
    MsgBox Var
     
    End Sub

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut
    merci beaucoup

    au lieu de récupérer les caption je recupere les noms avec ctrl.name
    et ca marche

    sinon quelqu'un sait-il comment recuperer les textes de la fenetre d'exécution?
    merci

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    En espérant ne de pas dire encore de betises

    Si tu as du texte dans la fenetre d'execution c'est que tu dois avoir des Debug.print non?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    oui effectivement, j'ai des DEbug.print dans la macro et je voudrais recupérer le résultat de tous les debug.print dans la zone de texte du formulaire ce qui m"evite d'ouvrir la fenetre de code et celle d'éxécution pour avoir ces textes
    est -ce possible?

    merci

  9. #9
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu ouvre un fichier texte et au lieu de mettre debug.print GnaGnaGna, tu mets
    Print #1 "gagnagna"
    'Tu crées ton txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Open "D:\txt\LeFichier.txt" For Output As #1
     
     
                'Dans le code et à la place de debug.print GnaGnaGna, tu mets
                Print #1 "gagnagna"
     
     
        'et à la fin de ta procédures, tu fermes
        Close #1
    End Sub

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    merci pour ta solution ouskel'n'or
    elle marche
    mais je preférais avoir le commentaires dans la zone de texte de l'userform

    quelqu'un sait il comment faire ?
    merci

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    n'aurais-tu pas l'impression de ce que cette nouvelle question révêle que tu as besoin (et grandement besoin) de commencer à apprendre certains rudiments ?

    Si ta "zone de texte" sur ton userForm s'appelle toto :

    écrira blabla dans ta zone de texte

    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.text = toto.text et vbcrlf & "blablaencore"
    y ajoutera une nouvelle ligne blablaencore, etc...
    Je me refuse en ce qui me concerne à aller plus loin ...
    A toi de jouer avec ces (je le répète) rudiments !

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut
    Bonsoir,

    merci beaucoup de vos aides ,c 'est bon ca marche la

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/12/2013, 08h22
  2. [MySQL] Récupérer les valeurs des cases à cocher
    Par frankiboy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/12/2008, 17h40
  3. [PostGreSQL] Récupérer les noms des colonnes
    Par Olivier14 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/02/2006, 18h51
  4. ShellListView : comment récupérer les noms des fichiers?
    Par Lolo1988 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/12/2005, 23h19
  5. Réponses: 2
    Dernier message: 03/02/2005, 13h21

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