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 :

Problème boucle sur checkbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 313
    Points : 176
    Points
    176
    Par défaut Problème boucle sur checkbox
    Bonjour à tous,
    Voilà je vous expose mon problème.

    Dans un fichier excel j'ai une macro qui ouvre une Userform.
    Sur cette Userform, il y a 10 checkbox. Chaque checkbox est associé à une liste déroulante et un champ de texte.

    Lorsque l'on clique sur le bouton valider de l'userform, je voudrais que si la checkbox est cocher les valeur de la listebox et de la zone de texte correspondantes soient écrite dans une cellule excel.

    J'ai réussi à écrire un code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if checkbox1.value = true then ...
    if checkbox2.value = true then ...
    if checkbox3.value = true then ...
    ....

    N'y aurait-il pas moyen de faire plus simple avec une boucle du genre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 to 10 
     if checkboxi.value = true then...
    Next i
    Le problème est que je ne vois pas trop la synthaxe avec le i.

    Merci d'avance pour vos réponses et vos idées

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    Salut

    En utilisant la collection Controls.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i = 1 to 10
      if controls("checkbox" & i).value = true then...
    next i

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonsoir
    voici comment boucler sur les CheckBoxes de la boite à outils Contrôles sur un UserForm (ActiveX), la bibliothèque Forms 2.0 doit être cochée (auto si le projet contient un UserForm)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    Dim cntrl As Control
      For Each cntrl In UserForm1.Controls
        If TypeOf cntrl Is MSForms.CheckBox Then
          If cntrl.Value Then
            'traitement ici si vrai (cochée)
          End If
        End If
      Next
    End Sub
    Abed_H

  4. #4
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 313
    Points : 176
    Points
    176
    Par défaut
    OK merci pour vos réponses ca marche nickel.

    Par contre avec la seconde solution je ne vois pas comment je peux ajouter dans le traitement la valeur de la zone de texte associé au checkbox.
    Voici le code créer avec la solution à babaothe


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton1_Click()
    For i = 1 To 10
      If Controls("checkbox" & i).Value = True Then
      ActiveCell.Value = Controls("TextBox" & i).Value
      ActiveCell.Offset(0, 1).Select
      End If
     
    Next i
     
    End Sub
    Est ce possible de faire avec la seconde solution.

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    tu peu simplifier, et sans les select
    ici par exemple, sur la ligne 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
    Dim i As Byte, j As Byte
    For i = 1 To 10
      j = IIf(Controls("checkbox" & i).Value, j + 1, j)
      Cells(2, j).Value = Controls("textbox" & i).Value
    Next i
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. Boucle sur checkbox et label
    Par rakhann974 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 23/10/2013, 07h49
  2. [XL-2007] Boucle sur Checkbox
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2011, 16h47
  3. boucle sur checkbox
    Par kOrt3x dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/04/2011, 21h20
  4. Probleme de boucle sur checkbox
    Par nuFox dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/12/2008, 14h25
  5. [vba-E2003] problème boucle sur colonne
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2007, 19h57

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