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] Parcourir les checkbox d'une feuille avec une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut [VBA-E] Parcourir les checkbox d'une feuille avec une boucle
    Bonjour a tous,
    Comme dit dans le titre, je souhaiterais pouvoir boucler sur les 48 checkbox que contient ma feuille lors de l'event calculate pour changer leur etat si besoin apres mise a jour des donnees (les etats sont ensuite utilises dans une autre macro).

    J'ai pense utiliser un truc comme ca seulement control n'est pas une propriete valide pour les sheets . Devant le nombre ca m'embete un peu d'ecrire un code pour chaque Checkbox (qui a dit flemmard ?), surtout que ca risque d'augmenter.
    La solution sans checkbox consisterais en 48 msgbox vbYesNo , et lire la valeur d'une cellule serait un peu trop aleatoire etant donne que plusieurs personnes vont utiliser le fichier...

    Donc voila, quelqu'un a une idee ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    bonjour,

    Il ya la réponse dans les tuto.
    http://silkyroad.developpez.com/VBA/...UserForm/#LI-B
    Là c'est un ex. pour les textbox mais c'est le même principe pour les checkbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim Ctrl As Control
     
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.TextBox Then MsgBox Ctrl.Object.Value
    Next Ctrl
    Voilà

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Merci mais j'avais deja lu ca, ca ne marche que pour des userform. Or mes checkbox sont dans une feuille je n'ai donc pas acces a Me.Controls pour boucler (ni a Sheets(1).Controls qui n'existe pas)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Je ne suis pas dans une form et ce code-ci fonctionne.
    Ma vérification pour savoir si c'est une checkbox n'est pas très "pro", mais ça marche, à condition que tes checkBox soient nommés de façon adéquates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim obj As OLEObject
     
     For Each obj In ActiveSheet.OLEObjects
           If Left(obj.Name, 5) = "Check"  Then
                     obj.Object.Caption = "test"
           End If
     Next obj
    Voilà

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    OLEObjects, c'etait donc ca...
    Ca marche impeccable merci beaucoup

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Juste pour ajouter qu'il existe une methode plus propre pour tester le genre de controle que c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TypeOf obj.Object Is msforms.CheckBox Then
    De meme on peut apres les manipuler comme s'ils etaient dans un form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    obj.Object.Value = True
    obj.Object.Caption = "Checkbox1"
    obj.Object.Name = "Vas y coche moi si t'es un homme"
    Merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. VBA : copier une image d'une feuille excel à une autre
    Par Equus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2005, 14h01

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