cs_malika_i
Messages postés38Date d'inscriptionmercredi 20 juin 2007StatutMembreDernière intervention29 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..
cs_malika_i
Messages postés38Date d'inscriptionmercredi 20 juin 2007StatutMembreDernière intervention29 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.
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 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 ?
cs_malika_i
Messages postés38Date d'inscriptionmercredi 20 juin 2007StatutMembreDernière intervention29 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" /??>
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 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 ?
cs_malika_i
Messages postés38Date d'inscriptionmercredi 20 juin 2007StatutMembreDernière intervention29 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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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"
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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"