Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Monthview control 6.0 (SP6)

117 views
Skip to first unread message

Chris Col

unread,
Sep 18, 2010, 4:03:57 AM9/18/10
to
Bonjour à tous,
Quelqu'un aurait-il un exemple d'utilisation directe de Monthview control
dans une feuille ce calcul (Excel 2010) sans passer par l'insertion dans un
UserForm ?

Il est en effet possible d'insérer directement ce contrôle sur la feuille
par :
Développeur, Insérer, Autres contrôles.
- Si je positionne le calendrier au milieu de la page par exemple, dés que
je quitte le mode création
un second calendrier apparait en haut à gauche de la page et c'est ce
dernier qui est actif.
Le premier inséré reste visible et inutile.
- Si j'enregistre la macro d'insertion cela donne :

Sub Macro1()
ActiveSheet.OLEObjects.Add(ClassType:="MSComCtl2.MonthView.2",
Link:=False _
, DisplayAsIcon:=False, Left:=465, Top:=90.75, Width:=166.5,
Height:= _
156).Select
End Sub

Comment la modifier pour fixer la cellule liée et rendre le contrôle
immédiatement
utilisable car Excel reste en mode création.

Ce n'est pas un réel besoin, c'est juste pour comprendre et apprendre.
Merci d'avance.

Cc.

michdenis

unread,
Sep 18, 2010, 6:53:29 AM9/18/10
to
Bonjour,

L'appellation du contrôle : "Microsoft Monthview Control 6.0 (Sp6)

Tu peux utiliser ce contrôle : "Microsoft Date And Timer Picker Control 6.0 (Sp6)
ou "Calendar Control 1X.0"

Pour insérer le contrôle à un endroit désiré dans la feuille, j'ai utilisé
la référence à la cellule de mon choix, propriété Top and Left de la cellule.
'---------------------------------
Sub test()
With Worksheets("Feuil1")
.OLEObjects.Add ClassType:="MSComCtl2.MonthView.2", _
Link:=False, DisplayAsIcon:=False, _
Left:=.Range("A10").Left, _
Top:=.Range("A10").Top
.Range("A1").Select
End With
End Sub
'---------------------------------

--
MichD
--------------------------------------------


"Chris Col" <chri...@free.fr> a écrit dans le message de groupe de discussion :
4c947261$0$8979$426a...@news.free.fr...

michdenis

unread,
Sep 18, 2010, 7:37:49 AM9/18/10
to
La procédure pour insérer un tel contrôle est plutôt ceci
dans un module standard. Pour que le contrôle apparaisse
sur la feuille, Excel doit passer en "mode création" et revenir
en "mode normal". C'est ce que fait la macro : "Mode_Création"

Et pour situer le contrôle dans la feuille, tu utilises les références
des propriétés "top" et "left" d'une cellule de ton choix. Ceci va
devenir le coin supérieur gauche du contrôle.

'------------------------------
Sub test()
With Worksheets("Feuil1") 'Nom de la feuille à adapter
.OLEObjects.Add(ClassType:="MSComCtl2.MonthView.2", _


Link:=False, DisplayAsIcon:=False, _
Left:=.Range("A10").Left, _

Top:=.Range("A10").Top).Visible = True
Mode_Création
End With
End Sub
'------------------------------
Sub Mode_Création()
With ThisWorkbook.VBProject.VBE.CommandBars
With .FindControl(ID:=212)
.Enabled = True
.Execute
End With
.FindControl(ID:=212).Execute
End With
End Sub
'------------------------------

--
MichD
--------------------------------------------


"michdenis" <mich...@hotmail.com> a écrit dans le message de groupe de discussion : i725nf$8jg$1...@speranza.aioe.org...

Chris Col

unread,
Sep 18, 2010, 9:16:26 AM9/18/10
to
Salut MichD et merci,
Le Sub Mode_Création renvoi l'erreur d'exécution '1004':
Erreur définie par l'application ou par l'objet.

Le calendrier s'insère bien sur la feuille mais le
. . . _Date_Click(. . . reste inopérant.

Cc.

michdenis

unread,
Sep 18, 2010, 9:42:57 AM9/18/10
to
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)

Range("A1") = DateClicked

End Sub
Utilise quelque chose comme ceci dans le module feuille où tu as inséré le contrôle

Tu choisis la cellule de ton choix où tu veux insérer la date
'------------------------------
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
With Range("A1")
'le format date que tu veux
.NumberFormat = "dddd, d mmmm yyyy"
.Value = DateClicked


End With
End Sub
'------------------------------

--
MichD
--------------------------------------------


"Chris Col" <chri...@free.fr> a écrit dans le message de groupe de discussion :

4c94bb97$0$13377$426a...@news.free.fr...

Chris Col

unread,
Sep 18, 2010, 12:02:25 PM9/18/10
to
La Macro "mode_création" qui plante empêche d'aller plus loin.
le DateClicked est donc toujours inopérant.
Cc.

"michdenis" <mich...@hotmail.com> a écrit dans le message de groupe de

discussion : i72fl6$q22$1...@speranza.aioe.org...

isabelle

unread,
Sep 18, 2010, 12:36:07 PM9/18/10
to
bonjour Chris,

la macro plante sur quel ligne de la macro "mode_création" ?

isabelle

Le 2010-09-18 12:02, Chris Col a écrit :
> La Macro "mode_création" qui plante empęche d'aller plus loin.

Chris Col

unread,
Sep 18, 2010, 1:56:43 PM9/18/10
to
Salut Isabelle,
Difficile de dire à quelle ligne car la Macro qui l'appelle ne supporte
pas d'être arrêtée avant la fin.
Si je la lance après que la Macro "Mère" soit exécutée, le message
d'erreur qui apparait est : Erreur d'exécution '1004':
La méthode 'VBProject' de l'objet '_Workbook' a échoué.

Le pointeur est alors sur la première ligne:
""With ThisWorkbook.VBProject.VBE.CommandBars""

Cc.

"isabelle" <i...@v.org> a écrit dans le message de groupe de discussion :
i72ppb$ed2$1...@speranza.aioe.org...


> bonjour Chris,
>
> la macro plante sur quel ligne de la macro "mode_création" ?
>
> isabelle
>
>
>
> Le 2010-09-18 12:02, Chris Col a écrit :

>> La Macro "mode_création" qui plante empêche d'aller plus loin.

isabelle

unread,
Sep 18, 2010, 2:13:26 PM9/18/10
to
as-tu activer la référence Microsoft Visual Basic for Applications Extensibility 5.3. ?
isabelle


Le 2010-09-18 12:02, Chris Col a écrit :

michdenis

unread,
Sep 18, 2010, 2:40:24 PM9/18/10
to
Est-ce que la macro s'exécute chez toi Isabelle ? (ajout du contrôle)

Cette section de la procédure peut être appelée et exécutée individuellement
et elle devrait fonctionner sur toutes les versions d'Excel 1997 à 2010.
'----------------------------------


Sub Mode_Création()
With ThisWorkbook.VBProject.VBE.CommandBars
With .FindControl(ID:=212)
.Enabled = True
.Execute
End With
.FindControl(ID:=212).Execute
End With
End Sub

'----------------------------------

Cependant, l'ajout d'un contrôle supplémentaire sur Excel 2007 et 2010 en utilisant VBA,
un minimum de décence m'empêche de dire ce que j'en pense réellement !!!!!!!!!!!!!!!!!!
Et dire que cela a pris toute une équipe de programmeur pour obtenir un tel résultat!!!!!!
Il vaut mieux utiliser un formulaire et insérer le contrôle dans ce formulaire???????????

--
MichD
--------------------------------------------


"isabelle" <i...@v.org> a écrit dans le message de groupe de discussion : i72vfo$uoi$2...@speranza.aioe.org...

isabelle

unread,
Sep 18, 2010, 3:00:17 PM9/18/10
to
salut Denis,

Sub Mode_Création()
With ThisWorkbook.VBProject.VBE.CommandBars
With .FindControl(ID:=212)
.Enabled = True

.Execute '<---------------------la macro s'arrête ici


End With
.FindControl(ID:=212).Execute
End With
End Sub

c'est quoi le id 212 ?

isabelle

michdenis

unread,
Sep 18, 2010, 3:07:56 PM9/18/10
to
212 représente le Id du bouton "mode création" de la barre du menu Standard de la fenêtre de l'éditeur de code.

On l'obtient par la commande suivante :
Le 13 c'est la position 13 dans la barre Standard
Je n'ai pas vérifié si ce id était le même pour toutes les versions
Tester seulement sur la version Excel 2007.
'---------------------------
sub test()
With ThisWorkbook.VBProject.VBE.CommandBars("Standard")
Sonnom = .Controls(13).Caption
sonid = .Controls(13).ID
MsgBox Sonnom & " , " & sonid
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"isabelle" <i...@v.org> a écrit dans le message de groupe de discussion : i7327l$81n$1...@speranza.aioe.org...

isabelle

unread,
Sep 18, 2010, 3:15:08 PM9/18/10
to
ok, il est à la même position sur xp,
j'ai mis une note dans la macro de mon message précédent, l'as-tu vue ?

isabelle

Le 2010-09-18 15:07, michdenis a écrit :
> 212 représente le Id du bouton "mode création" de la barre du menu Standard de la fenêtre de l'éditeur de code.
>
> On l'obtient par la commande suivante :
> Le 13 c'est la position 13 dans la barre Standard
> Je n'ai pas vérifié si ce id était le même pour toutes les versions
> Tester seulement sur la version Excel 2007.
> '---------------------------
> sub test()
> With ThisWorkbook.VBProject.VBE.CommandBars("Standard")
> Sonnom = .Controls(13).Caption
> sonid = .Controls(13).ID

> MsgBox Sonnom& " , "& sonid

Chris Col

unread,
Sep 18, 2010, 3:35:33 PM9/18/10
to
la référence Microsoft Visual Basic for Applications Extensibility 5.3.
est bien activée.

Heureusement que le même exercice avec un UserForm ne pose aucun problème.
Mais c'est dommage puisque il est permis d'insérer ce contrôle directement
sur la feuille de ne pas réussir à le déployer correctement et simplement.
Merci à tous les deux de partager vos lumières.

Cordialement Cc.


michdenis

unread,
Sep 18, 2010, 3:47:00 PM9/18/10
to
| as-tu activer la référence Microsoft Visual Basic for Applications Extensibility 5.3. ?

Si c'est à quoi tu fais référence, je n'en vois pas l'utilité.

--
MichD
--------------------------------------------


"isabelle" <i...@v.org> a écrit dans le message de groupe de discussion : i7333e$agj$1...@speranza.aioe.org...

michdenis

unread,
Sep 18, 2010, 3:48:14 PM9/18/10
to
Ce bout de macro fonctionne très bien sur 2003-2007-2010

Je ne vois pas pourquoi elle ne fonctionnerais pas bien sur Excel 2002.

--
MichD
--------------------------------------------


"isabelle" <i...@v.org> a écrit dans le message de groupe de discussion : i7333e$agj$1...@speranza.aioe.org...

isabelle

unread,
Sep 18, 2010, 4:40:26 PM9/18/10
to
salut Denis,

j'ai relancé le pc et refait un test avec,

Sub Mode_Création()
With ThisWorkbook.VBProject.VBE.CommandBars
With .FindControl(ID:=212)
.Enabled = True
.Execute
End With
.FindControl(ID:=212).Execute
End With

MsgBox "test"
End Sub

et tout va bien, le message "test" apparait et et pas de message d'erreur.

isabelle

michdenis

unread,
Sep 18, 2010, 5:27:30 PM9/18/10
to
Merci pour le test.

--
MichD
--------------------------------------------


"isabelle" <i...@v.org> a écrit dans le message de groupe de discussion : i7383d$oj3$1...@speranza.aioe.org...

0 new messages