Excel - Monthview control 6.0 (SP6)

Asked By Chris Col on 18-Sep-10 04:03 AM
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 replied to Chris Col on 18-Sep-10 06:53 AM
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
--------------------------------------------


4c947261$0$8979$426a34cc@news.free.fr...
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 replied to michdenis on 18-Sep-10 07:37 AM
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
--------------------------------------------


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
--------------------------------------------


4c947261$0$8979$426a34cc@news.free.fr...
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.
Chris Col replied to michdenis on 18-Sep-10 09:16 AM
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 replied to Chris Col on 18-Sep-10 09:42 AM
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
--------------------------------------------


4c94bb97$0$13377$426a34cc@news.free.fr...
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.
Chris Col replied to michdenis on 18-Sep-10 12:02 PM
La Macro "mode_cr?ation" qui plante emp?che d'aller plus loin.
le DateClicked est donc toujours inop?rant.
Cc.

discussion : i72fl6$q22$1@speranza.aioe.org...
isabelle replied to Chris Col on 18-Sep-10 12:36 PM
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 :
Chris Col replied to isabelle on 18-Sep-10 01:56 PM
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:

Cc.

i72ppb$ed2$1@speranza.aioe.org...
isabelle replied to Chris Col on 18-Sep-10 02:13 PM
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 replied to isabelle on 18-Sep-10 02:40 PM
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 mthemp?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
--------------------------------------------


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 :
isabelle replied to michdenis on 18-Sep-10 03:00 PM
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



Le 2010-09-18 14:40, michdenis a ?crit :
michdenis replied to isabelle on 18-Sep-10 03:07 PM
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
--------------------------------------------


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



Le 2010-09-18 14:40, michdenis a ?crit :
isabelle replied to michdenis on 18-Sep-10 03:15 PM
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 :
Chris Col replied to isabelle on 18-Sep-10 03:35 PM
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 replied to isabelle on 18-Sep-10 03:47 PM
| 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
--------------------------------------------


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 :
michdenis replied to isabelle on 18-Sep-10 03:48 PM
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
--------------------------------------------


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 :
isabelle replied to michdenis on 18-Sep-10 04:40 PM
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

Le 2010-09-18 15:48, michdenis a ?crit :
michdenis replied to isabelle on 18-Sep-10 05:27 PM
Merci pour le test.

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


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

Le 2010-09-18 15:48, michdenis a ?crit :