Chechbox sur excel et bouton

Résolu
cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007 - 20 juin 2007 à 20:12
 cs_Nicko11 - 21 juin 2007 à 22:38
Bonjour,

Je souhaite mettre tous mes contrôles sur une feuille excel (et non pas un formulaire). Mais je n'arrive pas à paramétrer mes checkbox (aprés de maintes recherches sur le web).
Voici mon pb = si mes checkbox sont cochés et que je clique sur un bouton, une formule est lancée. Pour être plus claire voici mon code (qui ne fonctionne pas...):

Sub CalculRDT_Click()
Dim CAC40 As Checkbox
Dim Nasdaq100 As Checkbox
Dim Nikkei225 As Checkbox
Dim DowJones30 As Checkbox
'Création d'une feuille intitulée "Rendements de l'étude"If CAC40.Value True Or Nasdaq100.Value True Or Nikkei225.Value = True Or DowJones30 = True Then
Sheets.Add.Name = "Rendements de l'étude"
Else: MsgBox "Veuillez selectionner au moins un indice"
End If

Avez-vous une idée de mon erreur? Je pense que VBA ne reconnait pas mes checkbox mais je n'arrive pas à les paramétrer (j'ai même modifier les noms dans chaque propriété)...

Merci par avance à ceux qui éclaireront ma lanterne..

42 réponses

cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007
20 juin 2007 à 22:49
Je ne comprends pas la variable OBJ (c'est seulement dans le cas d'une seule checkbox?), dans mon cas j'ai 4 checkbox nommées CAC40, NASDAQ100, NIKKEI225 et DOWJONES30.
En gros, si je clique sur mon bouton (via un commandbutton tout simple) et qu'au moins l'une de 4 cases est cochées alors, ma macro s'execute.

Et oui je suis bien une fille
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 22:59
T'as testé mon code ?
Le premier MsgBox te donne le nom, le second la valeur.
Suffit de mettre un If pour ce que tu veux

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
20 juin 2007 à 23:03
Non Mortalino, je suis sûr de moi, il reconnait bien MSForms (ajouté automatiquement lorsque j'ai ajouté un userform pour un test...) et même si ce n'était pas le cas, il passerait au moins sur mon Beep, ce qui n'est pas le cas, et comme je l'ai écrit plus haut, le Count de la collection = 0.

Malika_i > Cool une vraie fille qui programme ^^, tu travailles avec quel Office ?

<hr width="100%" size="2" />Julien.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:07
Ben je sais pâs d'où vient ton Office 2007 mais en rajoutant la lib, mon code fonctionne bien !
Encore un bug Microsoft ? 

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:08
Julien pourquoi tu parles de UserForm ?
Les checkbox sont sur une feuille Excel.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007
20 juin 2007 à 23:13
Oui  Julien, je fais de la programmation mais à un niveau débutant et je suis bien obligée de connaitre VBA, le monde de la finance étant cruel

Désolée Mortalino,
je ne comprends pas ton code dans je n'arrive pas à l'appliquer à ce que je veux faire, comme j'ai plusieurs checkbox, je n'arrive pas à les faire varier à avec ton code et mon code initial :

Sub CalculRDT_Click()
Dim CAC40 As Checkbox
Dim Nasdaq100 As Checkbox
Dim Nikkei225 As Checkbox
Dim DowJones30 As Checkbox
'Création d'une feuille intitulée "Rendements de l'étude"If CAC40.Value True Or Nasdaq100.Value True Or Nikkei225.Value = True Or DowJones30 = True Then
Sheets.Add.Name = "Rendements de l'étude"
Else: MsgBox "Veuillez selectionner au moins un indice"End If<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
0
cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007
20 juin 2007 à 23:15
juste pour précision, CalculRDT_Click() est un commandbutton

Merci

Malika
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:20
Sub CalculRDT_Click()



Dim Obj as oleobject

For Each Obj In Worksheets("NOM_FEUILLE").OLEObjects  'NOM_FEUILLE à remplacer par le bon nom
    If TypeOf Obj.Object Is MSForms.CheckBox Then
        If Obj.Name = ("CAC40" OrNasdaq100" Or Nikkei225" Or DowJones30 ") Then
                If Obj.Object.Value = True Then
            MsgBox Obj.Object.Value
    End If
Next Obj
End Sub

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:20
et remplace MsgBox Obj.Object.Value
par   Exit For

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
20 juin 2007 à 23:23
Non je parle d'un userform parce que la lib se rajoute automatiquement quand on en rajoute un, et j'en ai rajouté un pour des test précédents, rien à voir avec ceci, pas d'embrouilles...
Tu as Office 2007 aussi ?
Et toi Malika ?

<hr width="100%" size="2" />Julien.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:27
Testé sur les deux

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007
20 juin 2007 à 23:39
j'utilise la version Office 2002

Mortalino, voici mon code :

Sub CalculRDT_Click()
Dim Obj As OLEObject
Dim outil As Worksheet



For Each Obj In Worksheets("outil").OLEObjects
    If TypeOf Obj.Object Is MSForms.CheckBox Then
        If Obj.Name = ("CAC40" Or "Nasdaq100" Or "Nikkei225" Or "DowJones30") Then
                If Obj.Object.Value = True Then
                Sheets.Add.Name = "Rendements de l'étude"
                Sheets("Rendements de l'étude").Range("A1:a474").Value = Sheets("Données").Range("A1:a474").Value
                Else: MsgBox "Veuillez selectionner au moins un indice"
                End If
         End If
    End If
Exit For
Next Obj
End Sub

Mais il ne se passe rien, vois -tu une erreur?

Mal
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:54
Corrigé et testé :

Sub CalculRDT_Click()
Dim Obj As OLEObject, bVerif As Boolean
'Dim outil As
Worksheet

For Each Obj In Worksheets("outil").OLEObjects
    If TypeOf Obj.Object Is MSForms.CheckBox Then
        If Obj.Object.Value = True Then
            If Obj.Name = "CAC40" Or Obj.Name = "Nasdaq100" Or Obj.Name = "Nikkei225" Or Obj.Name = "DowJones30" Then
                Sheets.Add.Name = "Rendements de
l'étude"
                Sheets("Rendements de l'étude").Range("A1:a474").Value = Sheets("Données").Range("A1:a474").Value
                bVerif = True
                Exit For
                End If
         End If
    End If
Next Obj

If Not bVerif Then MsgBox "Veuillez selectionner au moins un indice"
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2007 à 23:59
Juste pour info (pour toi apprendre) :

Dim outil As Worksheet

WorkSheet("outil").....

>> inutile ton Dim. Soit tu fait un Objet (en l'occurence une feuille, soit tu utilises la collection Sheets de VB, en passant le nom en caractères (donc de type String)

Donc soit :

Dim outil As WorkSheet
Set outil = WorkSheets("outil")

outil.Select    OU    outil.Range("A1").Value = "abc"

Soit :
Dim outil As String
outil = "outil"

WorkSheets(outil).Select    OU    WorkSheets(outil).Range("A1").Value = "abc"

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
21 juin 2007 à 00:22
Mouaip, je vais checker les paramètres de mon excel demain... Ou plutot samedi, j'ai encore un examen d'économie politique vendredi...
C'est bizarre quand même cette histoire...
Petite remarque sur la correction, (si je peux me permettre ) :
Comme je l'ai dit plus haut,
If Obj.Object.Value
= True Then
Equivalent, plus propre et sans doute une chouilla plus rapide, mais surtout plus pro :
If Obj.Object.Value
Then

<hr width="100%" size="2" />Julien.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 juin 2007 à 00:27
Equivalent, plus propre et sans doute une chouilla plus rapide, mais surtout plus pro

>> ça change rien   Plus pro, oui, mais vu qu'elle est débutant, je décompose pour qu'elle comprenne (pour une fois que je ne fais pas le barbare) 

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 juin 2007 à 08:04
Salut,
Ce qu'il est important de savoir c'est QUEL checkbox elle à insérer dans la feuille

- Si ce sont des checkbox de la barre d'outil Boite à outils Controles, ce sont bien des OLEObjects (je rejoint [auteurdetail.aspx?ID=347460 fiko81]ils sont normalement accessible par NomDeFeuille.NomDuCheckBox (exemle Feuil1.Checkbox1))

- MAIS Si ce sont des checkbox de la barre d'outil "Formulaires" il faut aller les chercher dans la collection CheckBoxes de l'objet Feuille.

(le tout testé et fonctionnant avec Excel 2000)

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007
21 juin 2007 à 12:28
merci beaucoup pour votre aide, je vais checker ça cette aprém.

Bye
0
cs_malika_i Messages postés 38 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 29 juin 2007
21 juin 2007 à 13:33
hello

re-pb...

Mortalino,
j'ai testé ton code mais seul le msgbox s'affiche quelque soit la situation (0 à 4 checkbox cochées...)...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 juin 2007 à 20:34
Ah, bizarre. vois en mode pas à pas la valeur de bVerif. Sinon tente comme ceci mais ça revient au même :
If bVerif = False
Then MsgBox "Veuillez selectionner au moins un indice"

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Rejoignez-nous