[Résolu] Valeur & Index des CheckBox (OLEObjects)

Valeur & Index des CheckBox (OLEObjects) [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 21-10-2005 à 10:01:34    

Salut,   :hello:  
J'utilise des CheckBox sur une feuille Excel et je souhaite connaître les instructions permettant de forcer une valeur dans une checkBox ou bien de tester sa valeur.
Mes CheckBox s'appelle "CheckBox1", "CheckBox2", etc... mais j'ai eu beau essayé les instructions suivantes mais sans résultat:
   
     -  If CheckBox1.Value = True Then
            CheckBox2.Value = False
            CheckBox3.Value = False
            CheckBox4.Value = False
        End If
 
      - ActiveSheet.Shapes("CheckBox1" ).Value = True
 
Mais lorsque j'exécute j'ai des messages d'erreurs du type: "Objet requis" ou "Propriété ou méthode non gérée par cet objet"  :fou:  
 
C'est bien sur du VBA que j'utilise (Excel 2003), avez vous des suggestions d'instructions?  :??:


Message édité par Orocher le 24-10-2005 à 14:38:51

---------------
Tout vient à point à qui sait se détendre
Reply

Marsh Posté le 21-10-2005 à 10:01:34   

Reply

Marsh Posté le 21-10-2005 à 10:54:30    

Je comprends pas très bien d'où vient mon erreur parce qu'en parcourant quelques sites & forums, je retrouve bien des instructions comme celles ci: (copier/coller à partir du forum)

Citation :

If CheckBox9.Value = True Then
Cells(3, 5) = "OUI"
Else
Cells(3, 5) = "NON"
End If


Je me dis alors que mon problème viens peut être lors de la création des checkbox et qu'après la création il ne reconnais pas les instructions "ChekBox1.Value = True"
Pour créer mes CheckBox j'ai utilisé ce code:

Citation :

Do While Cells(i, 1).Value <> ""
          Worksheets("Dictionary" ).Activate
          Cells(i, 4).Select
          t = ActiveCell.Top
          l = ActiveCell.Left
          ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
               DisplayAsIcon:=False, Left:=l + 43, Top:=t + 2, Width:=12, Height:=11 _
               ).Select

          i = i + 1
     Loop


 
Après la fin de cette partie de code j'ai bien des CheckBox de créées ayant pour nom CheckBox1, CheckBox2, CheckBox3, etc...
Vous voyez d'où viens mon erreur?   :pt1cable:  :pt1cable:  :pt1cable:  
Parce que moi je nage complet dans la semoule  [:nul_olive] [:rm -rf]


---------------
Tout vient à point à qui sait se détendre
Reply

Marsh Posté le 21-10-2005 à 13:58:12    

-  If CheckBox1.Value = 1Then  
            CheckBox2.Value = 0
            CheckBox3.Value = 0
            CheckBox4.Value = 0
    End If  
 
 - ActiveSheet.CheckBox1.Value = 1
 
Les valeurs :
0 - décoché
1 - coché
2 - Desactivé

Reply

Marsh Posté le 21-10-2005 à 15:33:27    

Merci ça marche! Mais seulement avec l'instruction:
ActiveSheet.CheckBox1.Value = ...
   True -> Coché
   False -> Décoché
   Null -> Désactivé     (Grisé & coché)
 
Les chiffres j'ai pas l'impression que ça marche.
 
J'ai une autre question à présent. Je veux effectuer un test des CheckBox l'un à la suite de l'autre un peu comme ça:

Citation :

For i = 1 To loop_number
     
        If ActiveSheet.CheckBox1.Value = 0 Then
            Label = Cells(i + 4, 1).Value
            default_value = Cells(i + 4, 5).Value
            Call Remplissage_entrée(Label, default_value)
            Worksheets("Dictionary" ).Activate
        End If
         
        iR = iR + 1
        Cells(iR, iC).Select
                 
    Next i

Mais à la place de "CheckBox1" je voudrais mettre quelque chose du style "CheckBoxi" "i" étant la variable d'incrémentation de la boucle. En gros comment gérer les index des CheckBox?
Vous avez une idée?  :??:  Plusieurs???  :D


---------------
Tout vient à point à qui sait se détendre
Reply

Marsh Posté le 21-10-2005 à 16:26:08    

essaie avec  "checkbox" & i

Reply

Marsh Posté le 21-10-2005 à 16:47:45    

Il y a 3 valeur pour un checkbox en VB:
vbChecked
vbUnChecked
vbGrayed


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 21-10-2005 à 17:09:09    

tunisiano8 a écrit :

essaie avec  "checkbox" & i


Marche pô  :(  
J'ai essayé ça:  
If ActiveSheet."checkbox" & i.Value = True Then
L'erreur me dis "Erreur de compilation:   Attendu: identificateur ou expression entre crochets
 
J'avais déjà essayé des choses du même style mais sans succès. Je ne désespère pas trouver un jour   ;)  
 
Mais si vous avez d'autres idées n'hésitez surtout pas... J'suis preneur  :D


---------------
Tout vient à point à qui sait se détendre
Reply

Marsh Posté le 24-10-2005 à 10:27:50    

Je n'arrive toujours pas à changer l'index des CheckBox dans une boucle. Pensez vous qu'il y a une solution? Y'a t'il un moyen de contourner ce problème?  :heink:


---------------
Tout vient à point à qui sait se détendre
Reply

Marsh Posté le 24-10-2005 à 14:17:34    

Salut orocher,
 
D'abord petite question, si tu ne veux qu'un choix possible pourquoi n'utilises tu pas les optionbuttons, il sont d'entrée de jeux "programés" pour ne permettre qu'un choix (un seul choix sur chaque feuille) ?
le code pour les mettre en place est quasiment identique :

Code :
  1. ActiveSheet.OLEObjects.Add(classtype:="Forms.OptionButton.1", Link:=False, _
  2.                DisplayAsIcon:=False, Left:=l + 43, Top:=t + 2, Width:=12, Height:=11). _
  3.                Select


ton test sur les "value" il doit pour fonctioner passer par la méthode object de l'oleobject :

Code :
  1. MsgBox(ActiveSheet.OLEObjects(i).Object.Value)

et là tu peux incrémenter tes objects par i et les valeur renvoyées sont bien true ou false.
Ta boucle sur le test donnes au peu près ça :

Code :
  1. Sub test()
  2. Dim i, label, default_value
  3.      i = 1
  4.      For i = 1 To ActiveSheet.OLEObjects.Count
  5.         If ActiveSheet.OLEObjects(i).Object.Value = True Then
  6.             label = Cells(i + 4, 1).Value
  7.             default_value = Cells(i + 4, 5).Value
  8.             MsgBox ("i : " & i & "     /   label :" & label & "     /     dv :" & default_value)
  9.         End If
  10.      Next
  11. End Sub


(j'ai mis une msgbox pour le résultat car je n'ai pas la fonction que tu appelles)
Si tu tiens a utiliser des checkbox plutôt que des optionbuttons ça marche de la même manière.
bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 24-10-2005 à 14:37:39    

Je te remercie WaTaShi, ça marche o poil!!!  ;)   :D  
 
Par contre comme chaque OLEObjects peux être coché ou non (plusieurs choix) je dois bel et bien utiliser des CheckBox.  
 
Encore une fois merci parce que je n'aurais jamais trouvé ça tout seul.  
 
 :hello:


---------------
Tout vient à point à qui sait se détendre
Reply

Marsh Posté le 24-10-2005 à 14:37:39   

Reply

Marsh Posté le 24-10-2005 à 14:40:31    

de rien :):D


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed