Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Calendrier pour macro...

fanfan38

XLDnaute Barbatruc
Bonjour
Je viens de faire ma 1ère macro complémentaire que je vous soumet (rien n'est protégé)
fonctionne sous 64 bits...

enregistrer le fichier Calendar.xlsm sous : type : complément Excel (*.xlam)

Dans Excel cliquer sur Développeur
Choisir complément Excel
cocher calendar

Dans l’userform1 mettre un textbox
Double clic pour visualiser le code
Copier la macro ci-dessous :

Private Sub TextBox1_Enter()
If IsDate(Me.TextBox1.Value) Then
Workbooks("Calendar.xlam").Sheets("Feuil1").Range("A1").Value = CDate(Me.TextBox1.Value)
Else
Workbooks("Calendar.xlam").Sheets("Feuil1").Range("A1").Value = Date
End If
Application.Run "Calendar.xlam!calendrier"
Me.TextBox1.Value = Workbooks("Calendar.xlam").Sheets("Feuil1").Range("A1").Value
Me.TextBox2.SetFocus
End Sub

La dernière ligne peut être changée le but étant de quitter textbox1…
Exemple : Me.BoutonOk.SetFocus

A+ François
 

Pièces jointes

  • Calendar.xlsm
    32.4 KB · Affichages: 43

Staple1600

XLDnaute Barbatruc
Bonjour le fil

=>Excel2013
J'ai pu afficher l'userform
Changer les années, les mois
Mais quand je clique sur un jour, l'userform se hide
(cf Resultat_Change)

NB: Même remarque que patricktoulon
Des références cochées (pourquoi? quels usages pour le calendrier ?)
J'ai donc décoché les références idoines.
 

fanfan38

XLDnaute Barbatruc
Bonjour et merci de vos réponses...
Je n'ai coché aucune référence... donc peuvent être décochées....
Théoriquement quand tu clic sur un jour l'userform se ferme et le textbox est mis à jour...
A+ François
 

Staple1600

XLDnaute Barbatruc
Re

=>fanfan38
Non, j'ai du faire quelques modifs dans ton code pour voir la date "cliquée"
PS: Il y avait aussi un control Treeview sur la feuille 1 (inutilisé donc je l'ai supprimé)

Et il y avait bien des références cochées.
Je te fais la liste et je redis
 

Staple1600

XLDnaute Barbatruc
Re

•>patricktoulon
Non pas sur Excel 2013.
Je ne reproduis pas ton bug
(Voir mes messages précédents)
Test OK sur Excel 2013
(pour ce qui est de lancer l'userform et d'avoir la date cliquée)
PS; Tu n'as apparemment pas fait ce qu'indique Fanfan dans son premier message
(2ième phrase)
PS: moi, non plus mais j'ai alors adapté le code en conséquence.
Et il fonctionne
 

patricktoulon

XLDnaute Barbatruc
re
pour commencer Fanfan38 si ça t’intéresse
le initialise
VB:
Private Sub UserForm_Initialize()
  Dim i As Integer, dat As Date

  For i = Year(Date) - 50 To Year(Date) + 10 ' les années pas en dur!!!!
      Me.ComboBox1.AddItem i
  Next

  For i = 1 To 12
    Me.ComboBox2.AddItem Format(DateSerial(2020, i, 1), "mmmm")
  Next

  'For i = 1 To Me.Controls.Count - 1'pas vraiment utile vu que tu les hide au change du combo mois
   ' If Left(Me.Controls(i).Name, 13) = "CommandButton" Then Me.Controls(i).Caption = ""
 ' Next

  'gestion du non date en A1!!!!!! avec Date si A1 pas de date
  If IsDate(Sheets("Feuil1").Range("A1").Value) Then dat = CDate(Sheets("Feuil1").Range("A1").Value) Else dat = Date
   Me.ComboBox1.Value = Year(dat)
   Me.ComboBox2.ListIndex = Month(dat) - 1
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

•>patricktoulon
Je n'ai rien eu à faire de ce que tu décris pour tester le classeur de Fanfan38
1) une date en A1
2) juste modifier le code (remplacer Workbooks("Calendar.xlam").Sheets("Feuil1")
par Sheets("Feuil1") partout où cela est nécessaire.
3) ce qui prend moins d'une minute
(Et accessoirement j'ai décoché les références sans soucis parce j'ouvre toujours d'abord sans activer les macros un classeur tiers)
PS: Pour le contrôle Treeview, cf le message#5
 

fanch55

XLDnaute Barbatruc
Salut à Tous,
le fichier de Fanfan fonctionne également sur mon Excel 2016, moyennant les replaces de Staple .

Si c'est pour exploiter un genre de pickdate, je me sers depuis excel 2010 d'un module qu'a développé (euh, je ne me rappelles plus ) mais qui est fonctionnel et adaptatif.

Ci-joint un exemple de mise en œuvre ( le code de l'userform est un peu fouillis, il est resté dans son jus ).
 

Pièces jointes

  • Test Calendar.xlsm
    45.4 KB · Affichages: 40

fanfan38

XLDnaute Barbatruc
Bonjour et merci de vos réponses...
Patricktoulon c'est un userform que je veux remplir et j'utilisai la cellule A1 de la feuille du fichier calendar pour pouvoir récupérer la date...
Merci Staple... peux t'on avoir ton fichier corrigé?
Fanch 55 j'avais fait une recherche pour un contrôle qui marche sous excel 2019 en 64 bits et je n'en ai pas trouvé...
Bonne journée à tous
A+ François
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

Fanfan38
Je n'ai pas "corrigé" ni ton code, ni ton fichier.
Juste modifier quelques lignes
(Et ce parce que j'ai testé en *.xlsm et pas en *.xlam)

1) J'ai ajouté ceci à la fin de la procédure Private Sub ComboBox2_Change()
Resultat.Visible = True
2) J'ai supprimé les références dans le code à Calendar.xlam
(partout où elles apparaissaient)
3) J'ai inhibé le Me.Hide (juste pour le test)
Ci-dessous ton code avec mes modifications
(qui n'en sont pas vraiment, donc )
VB:
'Private Sub Resultat_Change()
' Me.Hide
'End Sub
Private Sub UserForm_Deactivate()
   If notIsDate(Me.Resultat.Value) Then
      Me.Resultat.Value = CDate(Sheets("Feuil1").Range("A1").Value)
   End If
End Sub

Private Sub UserForm_Initialize()
  Dim i As Integer
  For i = 2020 To 2030
    Me.ComboBox1.AddItem i
  Next
  For i = 1 To 12
    Me.ComboBox2.AddItem Format(DateSerial(2020, i, 1), "mmmm")
  Next
  For i = 1 To Me.Controls.Count - 1
    If Left(Me.Controls(i).Name, 13) = "CommandButton" Then Me.Controls(i).Caption = ""
  Next
  If IsDate(Sheets("Feuil1").Range("A1").Value) Then
   Me.ComboBox1.Value = Year(Sheets("Feuil1").Range("A1").Value)
   Me.ComboBox2.ListIndex = Month(Sheets("Feuil1").Range("A1").Value) - 1
  End If
End Sub

Sub Reponse(monjour)
On Error Resume Next
calendar1.Resultat.Value = CDate(DateSerial(Me.ComboBox1.Value, Me.ComboBox2.ListIndex + 1, monjour))
End Sub
 

fanch55

XLDnaute Barbatruc
Fanfan, j'ai un Excel 2016 en 64 bits sur mon fixe et un autre en 32 bits sur mon portable, le fichier que je t'ai joint fonctionne sur les 2.

Effectivement, je ne l'ai pas testé sur 2019, mais il me semble que ni Stapple ni Patrick non plus.

Si tu as ouvert mon fichier, t'a-t-il rendu une erreur en cliquant dans la zone date ?

Peut-être n'ai-je pas bien cerné ton besoin et que tu désires développer ton propre pickdate pour le fun et ton enrichissement Excel .

J'approuve

Le contrôle existait en vb6 et ne fonctionnait qu'en 32 bits. Dans le temps, Microsoft intégrait et blindait certains compléments développés par des tiers, il semblerait que ce ne soit plus dans l'air du temps depuis le 64bits ...
 

Staple1600

XLDnaute Barbatruc
Bonjour fanch55

•>fanch55
[Pour infos]
1) J'ai testé le classeur de Fanfan38 sur un Excel 2013 32bits sur un W10/64 bits
2) Le contrôle Monthview fonctionne sur mon PC

ci-dessous code utilisé pour mon test
VB:
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
MsgBox Application.Proper(Format(MonthView1.Value, "dddd dd mmmm yyyy")), vbInformation
End Sub
 

fanch55

XLDnaute Barbatruc
Stapple,
Oui, en Excel 32 bits, on peut toujours utiliser certains anciens compléments traditionnels. C'est en 64 bits qu'il faut palier à ce manque.


Le pb, c'est Excel 64 bits, pas Windows. Microsoft s'en lave les mains en préconisant l'installation en 32 bits d'office.
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
535
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…