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 qui parcourt checkbox


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
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut Boucle qui parcourt checkbox
    Bonjour,

    J'ai 800 checkbox sur ma feuille, de la checkbox1 à checkbox800.

    Il me faut une boucle me permettant de recopier la valeur de la checkbox dans la cellule.

    mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub mail()
     
    Dim i as integer
     
    x=12
    For i=1to800
    worksheets("planning maintenance").Cells(x,12)=worksheets("planning maintenance").checkbox1.value
    x=x+1
    Next
    End sub
    J'ai tenter d'écrire ("checkbox")&i.value mais cela ne fonctionne pas.

    Merci de votre aide
    Cordialement

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur ce Forum,

    Merci de baliser ton code avec les bornes #. Il sera plus lisible ainsi

    i est une variable VBA donc pas de .Value

    Si les cases à cocher sont intégrés à ta feuille, alors ils doivent être considérés comme Objets Ole

    A adapter à ton cas de figure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
     
    Public Sub valcheck()
    Dim i As Integer
    For i = 1 To 800
            MsgBox ActiveSheet.OLEObjects("CheckBox" & i).Object.Value
    Next i
    End Sub

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Une remarque.

    Plutôt que d'utiliser une formule du type
    =Si(A2=3;1;0)
    J'utilise souvent
    = (A2= 3) * 1
    Valeur booléenne * 1

    Cette méthode pourrait s'appliquer aux cases à cocher (CheckBox).
    A ceci près. La valeur d'une case à cocher * 1 donne comme résultat -1 (si la case est cochée) ou 0 si elle ne l'est pas.
    Pour obtenir donc 1 ou 0, il faut écrire
    (d'après le code ci-dessus)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Abs(ActiveSheet.OLEObjects("CheckBox" & i).Object.Value * 1)

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Salut

    Avant d'écrire une macro il faudrait se poser la question «mais où vais-je l'écrire ?».
    Celle que je propose sous-entend qu'elle est dans la Fenêtre de Codes de la feuille contenant le contrôle (Alt F11).

    Lors de l'écriture de la macro, ma version me propose pour un contrôle ActiveX* dans l'onglet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub mail()
      x = 12
      For i = 1 To 800
        Cells(x + i, 12) = Me.CheckBox1  'le nom est dans la liste affichée juste après la frappe du point
      Next
    End Sub


    Si l'on veut la mettre dans un Module Standard, car, par exemple lancée d'un autre Onglet, la feuille cible doit être référencée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub mail()
        x = 12
        With Sheets("planning maintenance")
          For i = 1 To 80
            .Cells(x + i, 12) = .CheckBox1
          Next
        End With
      End Sub
    *cela se complique avec un Contrôle de Formulaire d'autant plus que la portabilité mais pas toujours au rendez-vous !
    Images attachées Images attachées  

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

Discussions similaires

  1. Comment faire une boucle qui parcourt plusieurs feuilles d'un classeur
    Par fanta09 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/11/2017, 09h46
  2. [AC-2003] Boucle for each qui parcourt une liste
    Par caesar23 dans le forum IHM
    Réponses: 2
    Dernier message: 10/06/2010, 14h48
  3. [MySQL] Césure dans la boucle qui parcourt la table
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/01/2010, 12h34
  4. Boucle qui parcourt tout les ligne d'un fichier text
    Par accro-macro dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/05/2007, 20h21
  5. Réponses: 1
    Dernier message: 28/07/2005, 14h21

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