none
Etat d'ubn checkbox avec excel RRS feed

  • Question

  • Bonjour à tous,

    Je voudrais vous soumettre mon probleme en espérant que vous auriez une solution.

    Je dispose de plusieurs fichers excel.

    Ces fichiers sont tous basé sur un fichier modèle.

    Dans ces fichiers se trouve des données que je veux rassemble sous forme de lignes.

    J'ai donc crée des fonctions VBA qui ouvrent les fichiers sources, lisent les données et les mettent en formes dans un fichier excel, puis referment le fichier source pour ouvrir le suivant, et ainsi de suite.

    Une des information contenue dans les fichiers excel sources sont des checkbox.

    Malgré toutes mes recherche, je n'arrive pas à lire l'état des checkbox (cocher ou non).

    il semble que l'on ne puissse pas acceder à la fonction .value sur un controle formulaire.

    y a t-il ne solution pour verifier l'état de ces checkBox?

     

    D'avance merci

    bonne journée

     

    mardi 26 juillet 2011 20:45

Réponses

  • bonjour,
     
    voici un exemple pour obtenir les informations adresse et numéro de ligne du "CheckBox" ainsi que sa valeur (Vrai, Faux),
    il faudra remplacer ActiveWorkbook et .ActiveSheet par les objets appropriés
     
    With ActiveWorkbook
    With .ActiveSheet
     For Each Shp In .Shapes
      If Left(Shp.Name, 8) = "CheckBox" Then
        Adresse = Shp.TopLeftCell.Address
        Ligne = Shp.TopLeftCell.Row
        LaValeur = .OLEObjects(Shp.Name).Object.Value
      End If
     Next
     End With
    End With
     
    --
    isabelle
     
     
    mardi 26 juillet 2011 22:03
  • Bonjour,
    Avec une case à cocher de formulaire, la syntaxe est :
     
    LaValeur = ActiveSheet.Shapes(shp.Name).OLEFormat.Object.Value
     
    Cordialement.
    Daniel
     
    --
    Pour plaus de facilité, veuillez préciser votre version d'Excel
    Cordialement.
    Daniel
     
     
     
    mercredi 27 juillet 2011 12:51
  • Non, je pense que la syntaxe d'Isabelle fonctionne avec un contrôle
    ActiveX alors que la mienne fonctionne avec une case à cocher (contrôle
    de formulaire).
     
    --
    Pour plaus de facilité, veuillez préciser votre version d'Excel
    Cordialement.
    Daniel
     
     
     
    mercredi 27 juillet 2011 14:07

Toutes les réponses

  • bonjour,
     
    voici un exemple pour obtenir les informations adresse et numéro de ligne du "CheckBox" ainsi que sa valeur (Vrai, Faux),
    il faudra remplacer ActiveWorkbook et .ActiveSheet par les objets appropriés
     
    With ActiveWorkbook
    With .ActiveSheet
     For Each Shp In .Shapes
      If Left(Shp.Name, 8) = "CheckBox" Then
        Adresse = Shp.TopLeftCell.Address
        Ligne = Shp.TopLeftCell.Row
        LaValeur = .OLEObjects(Shp.Name).Object.Value
      End If
     Next
     End With
    End With
     
    --
    isabelle
     
     
    mardi 26 juillet 2011 22:03
  • Bonjour Isabelle,

    ton code fonctionne sauf pour la fonction

        LaValeur = .OLEObjects(Shp.Name).Object.Value
    lorsque VBA execute ce code, j'ai un runtime error 1004   Application non-defined or object-defined error
    les deux ligne au dessus fonctionnent
    dans l'explorateur d'espion, j'ai aussi une erreur dès que je demande
    Activeworkbook.Activesheet.shapes.oleobject(shp.name)
    j'utilse excel 2007 et la version de VBA qui va avec.
    mnque -t-il des reference dans le VBA ??
    Merci
    mercredi 27 juillet 2011 12:08
  • bonjour,
     
    je n'arrive pas à reproduire cet erreur,
    peux tu essayer comme ca,
    ActiveSheet.OLEObjects(shp.name).Object.Value
     
    --
    isabelle
     Le 2011-07-27 08:08, michmais a écrit :
    > Bonjour Isabelle,
    >
    > ton code fonctionne sauf pour la fonction
    >
    > LaValeur = .OLEObjects(Shp.Name).Object.Value
    > lorsque VBA execute ce code, j'ai un runtime error 1004 Application non-defined or object-defined error
    > les deux ligne au dessus fonctionnent
    > dans l'explorateur d'espion, j'ai aussi une erreur dès que je demande
    > Activeworkbook.Activesheet.shapes.oleobject(shp.name)
    > j'utilse excel 2007 et la version de VBA qui va avec.
    > mnque -t-il des reference dans le VBA ??
    > Merci
     
    mercredi 27 juillet 2011 12:50
  • Bonjour,
    Avec une case à cocher de formulaire, la syntaxe est :
     
    LaValeur = ActiveSheet.Shapes(shp.Name).OLEFormat.Object.Value
     
    Cordialement.
    Daniel
     
    --
    Pour plaus de facilité, veuillez préciser votre version d'Excel
    Cordialement.
    Daniel
     
     
     
    mercredi 27 juillet 2011 12:51
  • Bonjour Daniel,

    Avec OLEFormat, cela fonctionne......

    J'ai -4146 lorsque la case est decochée et 1 lorsuq'elle est cochée

    Est ce les version d'excel qui font que cela marche avec OLEObject ou OLEFormat ??

    Moi je travaille sous 2007 .

    Un grand merci de toute façon

     

    mercredi 27 juillet 2011 13:56
  • Non, je pense que la syntaxe d'Isabelle fonctionne avec un contrôle
    ActiveX alors que la mienne fonctionne avec une case à cocher (contrôle
    de formulaire).
     
    --
    Pour plaus de facilité, veuillez préciser votre version d'Excel
    Cordialement.
    Daniel
     
     
     
    mercredi 27 juillet 2011 14:07
  • merci Daniel, je n'utilise jamais cette barre d'outils c'est pourquoi je l'oublie,
     
    --
    isabelle
     
     
    mercredi 27 juillet 2011 14:57
  • D'autant plus que michmais a indiqué "checkbox" qu'on réserve
    traditionnellement aux ActiveX...
    Par contre, ce contrôle "case à cocher" est beaucoup plus net à
    l'écran, je ne sais pas pourquoi.
    Daniel
     
    --
    Pour plaus de facilité, veuillez préciser votre version d'Excel
    Cordialement.
    Daniel
     
     
     
    mercredi 27 juillet 2011 15:10
  • Pour entretenir le fil,

    j'avais bien vu que les case à cocher pouvaient se situer à deux niveaux, formulaire ou activeX (sans doute pour faciliter la recherche :-)  )

    Mais dans le help de VBA, il n'et pas clair de trouver les procedure et les propriete de chaque element.

    Dans mon excel VBA, j'avais bien trouvé la procedure OLEFORmat(nom), mais comment deviner qu'il faut encore

    demander le .object, puis enfin le .value

    C'est certainement la raison de ces forums.......

    On ne saurait trop remercier les personnes qui passent du temps à lire les questions et à repondre.....

     

    Merci a vous

     

    mercredi 27 juillet 2011 15:57
  • Certainement, tu n'es pas en cause, simplement, le fait est qu'en
    général et sans que rien ne soit précisément codifié, on parle plutôt
    de "case à cocher" quand il s'agît du contrôle de formulaire et de
    "checkbox" quand il s'agît d'ActiveX. Mais d'autre part, tu avais bien
    précisé "contrôle formulaire".
     
    --
    Pour plus de facilité, veuillez préciser votre version d'Excel
    Cordialement.
    Daniel
     
     
     
    mercredi 27 juillet 2011 16:36
  • oui c'est bien vrai qu'il y a de quoi à s'emmêler les pinceaux puisque
    le Shape créer à partir de la barre d'outils Controls est: Shapes("CheckBox1")
    le Shape créer à partir de la barre d'outils Formulaire est: Shapes("Check Box 1")
     
    %-)
    --
    isabelle
     
     
    mercredi 27 juillet 2011 22:40
  • En effet, surtout que si l'on veut assigner une macro a ce type de controle de formulaire, le nom

    proposé par defaut est "CheckBox74_Click", alors qu'il devrait être "Check Box 74_Click"

    Mais là, on aurait d'autre problèmes......

    Cela permet de rester éveillé, attentif et réactif....... bref le cerveau reste en activité, et Alzheimer s'éloigne,

    enfin ne se rapproche pas trop vite......

     

    Encore merci a vous

    bonne journée

    jeudi 28 juillet 2011 06:43