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 :

Lire un contrôle situé dans une feuille de classeur chargée dynamiquement [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 22
    Points : 48
    Points
    48
    Par défaut Lire un contrôle situé dans une feuille de classeur chargée dynamiquement
    Bonjour,

    Si je veux lire la valeur d'une boîte à cocher (CheckBox de type controle de formulaire, pas ActiveX) depuis une feuille active dans un classeur ouvert j'y arrive sans problème via un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes("CB_Duplication").ControlFormat.Value
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.CheckBoxes("CB_Duplication").Value
    Cependant ça ne marche pas si je veux accéder à un contrôle quand il est situé dans une feuille dont je charge le classeur dynamiquement (mais j'accède sans problème à ses .Range ou .Cells ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim wb2 As Workbook
    Set wb2 = Workbooks.Open("zeworkbook.xls", True, True)
    If wb2 Is Nothing Then
      MsgBox ("Impossible de charger le fichier")
    Else
      Dim cbValue As Long
      cbValue = wb2.Sheets(1).Shapes("CB_Duplication").ControlFormat.Value ' <== provoque erreur "ne trouve pas d'élément de ce nom"
      cbValue = wb2.Sheets(1).CheckBoxes("CB_Duplication").Value ' <== provoque erreur "ne trouve pas la propriété Checkboxes de la classe Worksheet"
    End If
    Le classeur ne contient qu'une seule feuille donc sheets(1).

    cdlt.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Merci de ne pas citer l'intégralité du message juste précédent, aucun intérêt à part un encombrement visuel inutile !


    Lignes de code n°8 & 9 : peut-être y-a-t-il une erreur quant au numéro d'index de la feuille !

    Essayer déjà avec son nom …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 22
    Points : 48
    Points
    48
    Par défaut
    Il n'y a pas d'erreur sur l'index car comme précisé il n'y a qu'un seule feuille dans la .xls qui est chargé dynamiquement et j'accède correctement aux cellules via .range ou .cells par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    src = wb2.Sheets(1).Range(sCellSrc).Value
    jusqu'à présent je n'avais besoin d'accéder qu'aux contenu des cellules mais maintenant il y a des contrôles qui ont été ajouté dans la feuille sachant que son nom peut varier d'où le sheets(1) qui est indépendant du nom.

    Cependant j'ai tout de même testé la suggestion et en effet j'ai un comportement différent ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cbValue = wb2.Sheets("20161206").Shapes("CB_Duplication").ControlFormat.Value ' <== OK !!!
     
    cbValue = wb2.Sheets("20161206").CheckBoxes("CB_Duplication").ControlFormat.Value ' <= erreur propriété ou méthode non gérée pour cet objet donc il ne trouve pas l'objet "checkbox" nommé
    En tout cas merci pour la suggestion, je vais passer par le nom en récupérant le .Name du .Sheet(1) et ça ira bien même si je ne comprends toujours pas pourquoi le problème se pose.

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

Discussions similaires

  1. Lire un wav intégré dans une feuille excel
    Par BruceBoc dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/12/2012, 15h41
  2. Réponses: 6
    Dernier message: 18/07/2012, 10h08
  3. Affecter une couleur à un contrôle placé dans une feuille de calculs
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2008, 20h22
  4. Identifier le contrôle actif dans une feuille de calculs
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 04/03/2008, 19h47
  5. Identifier le contrôle actif dans une feuille de calculs
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/03/2008, 19h08

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