Meilleur auteur de réponses
Etat d'ubn checkbox avec excel

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
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ésWith ActiveWorkbookWith .ActiveSheetFor Each Shp In .ShapesIf Left(Shp.Name, 8) = "CheckBox" ThenAdresse = Shp.TopLeftCell.AddressLigne = Shp.TopLeftCell.RowLaValeur = .OLEObjects(Shp.Name).Object.ValueEnd IfNextEnd WithEnd With--isabelle
- Marqué comme réponse Ciprian Duduiala lundi 1 août 2011 09:28
-
Bonjour,Avec une case à cocher de formulaire, la syntaxe est :LaValeur = ActiveSheet.Shapes(shp.Name).OLEFormat.Object.ValueCordialement.Daniel--Pour plaus de facilité, veuillez préciser votre version d'ExcelCordialement.Daniel
- Marqué comme réponse Ciprian Duduiala lundi 1 août 2011 09:29
-
Non, je pense que la syntaxe d'Isabelle fonctionne avec un contrôleActiveX alors que la mienne fonctionne avec une case à cocher (contrôlede formulaire).--Pour plaus de facilité, veuillez préciser votre version d'ExcelCordialement.Daniel
- Marqué comme réponse Ciprian Duduiala lundi 1 août 2011 09:29
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ésWith ActiveWorkbookWith .ActiveSheetFor Each Shp In .ShapesIf Left(Shp.Name, 8) = "CheckBox" ThenAdresse = Shp.TopLeftCell.AddressLigne = Shp.TopLeftCell.RowLaValeur = .OLEObjects(Shp.Name).Object.ValueEnd IfNextEnd WithEnd With--isabelle
- Marqué comme réponse Ciprian Duduiala lundi 1 août 2011 09:28
-
Bonjour Isabelle,
ton code fonctionne sauf pour la fonction
LaValeur = .OLEObjects(Shp.Name).Object.Valuelorsque VBA execute ce code, j'ai un runtime error 1004 Application non-defined or object-defined errorles deux ligne au dessus fonctionnentdans l'explorateur d'espion, j'ai aussi une erreur dès que je demandeActiveworkbook.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 -
bonjour,je n'arrive pas à reproduire cet erreur,peux tu essayer comme ca,ActiveSheet.OLEObjects(shp.name).Object.Value--isabelleLe 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
-
Bonjour,Avec une case à cocher de formulaire, la syntaxe est :LaValeur = ActiveSheet.Shapes(shp.Name).OLEFormat.Object.ValueCordialement.Daniel--Pour plaus de facilité, veuillez préciser votre version d'ExcelCordialement.Daniel
- Marqué comme réponse Ciprian Duduiala lundi 1 août 2011 09:29
-
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
-
Non, je pense que la syntaxe d'Isabelle fonctionne avec un contrôleActiveX alors que la mienne fonctionne avec une case à cocher (contrôlede formulaire).--Pour plaus de facilité, veuillez préciser votre version d'ExcelCordialement.Daniel
- Marqué comme réponse Ciprian Duduiala lundi 1 août 2011 09:29
-
-
D'autant plus que michmais a indiqué "checkbox" qu'on réservetraditionnellement 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'ExcelCordialement.Daniel
-
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
-
Certainement, tu n'es pas en cause, simplement, le fait est qu'engénéral et sans que rien ne soit précisément codifié, on parle plutôtde "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 bienprécisé "contrôle formulaire".--Pour plus de facilité, veuillez préciser votre version d'ExcelCordialement.Daniel
-
-
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