Microsoft Calendar Control 10.0 et versions ultérieures utilisent une valeur incorrecte pour la propriété FirstDay
Numéro de la base de connaissances d’origine : 826761
Remarque
Cet article s’applique à un fichier de base de données Microsoft Access .MDB ou .ACCDB. Vous devez disposer de connaissances de base en macro, codage et interopérabilité avant de commencer.
Symptômes
Dans Microsoft Access, un jour incorrect s’affiche pour le premier jour du contrôle calendrier. Ce problème se produit lorsque vous insérez un contrôle de calendrier Microsoft 10.0 ou une version ultérieure dans un formulaire ou un état, puis que vous définissez la FirstDay
propriété du contrôle calendrier à l’aide de constantes intrinsèques Microsoft Visual Basic pour Applications (VBA).
Par exemple, vous définissez la FirstDay
propriété du contrôle calendrier sur vbMonday ou vbTuesday. Lorsque vous définissez la FirstDay
propriété du contrôle calendrier sur vbTuesday, le calendrier utilise mercredi comme premier jour de la semaine.
Remarque
Lorsque vous utilisez les versions antérieures du contrôle Calendrier, vous pouvez définir la FirstDay
propriété correctement.
Cause
Ce problème se produit parce que les constantes intrinsèques pour les jours définis dans Microsoft Visual Basic, telles que vbSunday et vbMonday, ne sont pas associées à la valeur de jour correcte.
Solution de contournement
Pour contourner ce problème, procédez comme suit :
Déterminez l’association entre les jours, les constantes intrinsèques VBA et les valeurs numériques associées aux valeurs de jour et aux constantes intrinsèques VBA correctes. Pour cela, procédez comme suit :
Démarrez Access.
Ouvrez l’exemple de base de données Northwind.
Dans la fenêtre Base de données, cliquez sur Formulaires sous Objets.
Remarque
Dans Access 2007, cliquez sur l’onglet Créer , puis sur Création de formulaire dans le groupe Formulaires .
Dans le volet droit, double-cliquez sur Créer un formulaire en mode Création.
Remarque
Dans Access 2007, ignorez cette étape.
Dans le menu Insertion , cliquez sur Contrôle ActiveX.
Remarque
Dans Access 2007, cliquez sur l’onglet Création , puis sur Insérer un contrôle ActiveX dans le groupe Contrôles .
Dans la boîte de dialogue Insérer un contrôle ActiveX , sélectionnez Calendar Control 10.0 ou version ultérieure dans la zone de liste Sélectionner un contrôle ActiveX , puis cliquez sur OK.
Ajoutez un bouton de commande au formulaire dont les propriétés sont définies comme suit :
Propriété Valeur Name
testFD Caption
Modifier le premier jour Dans le menu Fichier, cliquez sur Enregistrer.
Remarque
Dans Access 2007, cliquez sur le bouton Microsoft Office, puis sur Enregistrer.
Dans la boîte de dialogue Enregistrer sous , tapez Form1 dans la zone Nom du formulaire, puis cliquez sur OK pour enregistrer le formulaire Form1.
Dans le menu Affichage, cliquez sur Code.
Remarque
Dans Access 2007, cliquez sur l’onglet Création , puis sur Afficher le code dans le groupe Outils .
Dans le Rédacteur Visual Basic, tapez ou collez le code suivant :
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
Ouvrez Form1 en mode Formulaire.
Cliquez sur le bouton Modifier le premier jour .
Remarque
Si la première colonne du contrôle calendrier n’est pas définie sur Mardi, notez le jour dans la première colonne.
Dans le Rédacteur Visual Basic, cliquez sur Fenêtre Exécution dans le menu Affichage.
Dans la fenêtre Exécution, tapez ?vbTuesday, puis appuyez sur Entrée.
Notez la valeur numérique.
Répétez l’étape j à l’étape o en remplaçant vbTuesday par d’autres constantes intrinsèques VBA, telles que vbMondayet vbWednesday.
Notez que vous aurez le tableau suivant pour afficher l’association entre les jours, les constantes intrinsèques VBA et les valeurs numériques associées aux valeurs de jour correctes et aux constantes intrinsèques VBA.
Jour de la semaine Constante intrinsèque VBA Valeur numérique associée Lundi vbSunday 1 Mardi vbMonday 2 Mercredi vbTuesday 3 Jeudi vbWednesday 4 Vendredi vbThursday 5 Samedi vbFriday 6 Dimanche vbSaturday 7
Créez une énumération personnalisée globale qui est correctement mappée aux jours de semaine. Pour cela, procédez comme suit :
Dans la fenêtre Base de données, cliquez sur Module sous Objets.
Remarque
Dans Access 2007, cliquez sur l’onglet Créer , sur la flèche sous Macro dans le groupe Autre , puis sur Module.
Dans le menu Insertion, cliquez sur Module.
Remarque
Dans Access 2007, ignorez cette étape.
Tapez ou collez le code suivant dans le Rédacteur Visual Basic :
Option Explicit Public Enum nwFirstDay nwMonday = 1 nwTuesday = 2 nwWednesday = 3 nwThursday = 4 nwFriday = 5 nwSaturday = 6 nwSunday = 7 End Enum
Remarque
Créez l’énumération comme décrit dans la colonne « Jour de semaine » et dans la colonne « Valeur numérique associée » correspondante de la table qui se trouve à l’étape 1r.
Nommez le module Day_Association et enregistrez-le.
Fermez Visual Basic Editor.
Remplacez les constantes intrinsèques VBA dans votre application par les constantes qui se trouvent dans l’énumération personnalisée décrite à l’étape 2.
Par exemple, si votre code d’origine est
Calendar0.FirstDay = vbTuesday
modifiez votre code pour utiliser l’énumération personnalisée comme suit :
Calendar0.FirstDay = nwTuesday
Exécutez l’application.
Informations supplémentaires
Les constantes intrinsèques VBA ne dépendent pas des informations locales du système. Par exemple, sur un ordinateur dont le système d’exploitation est localisé en allemand, le premier jour de la semaine est lundi. La valeur numérique associée à Lundi sur l’ordinateur est toujours 0.
Étant donné que le contrôle Calendar Control 10.0 ou version ultérieure est un contrôle Microsoft ActiveX mondial, vous ne pouvez pas contrôler les valeurs numériques associées aux constantes intrinsèques VBA en fonction des spécifications de votre ordinateur. Par conséquent, le problème mentionné dans la section « Symptômes » de cet article se produit.
Procédure pour reproduire le problème
Démarrez Access.
Ouvrez l’exemple de base de données Northwind.
Dans la fenêtre Base de données, cliquez sur Formulaires sous Objets.
Remarque
Dans Access 2007, cliquez sur l’onglet Créer , puis sur Création de formulaire dans le groupe Formulaires .
Dans le volet droit, double-cliquez sur Créer un formulaire en mode Création.
Remarque
Dans Access 2007, ignorez cette étape.
Dans le menu Insertion , cliquez sur Contrôle ActiveX.
Remarque
Dans Access 2007, cliquez sur l’onglet Création , puis sur Insérer un contrôle ActiveX dans le groupe Contrôles .
Dans la boîte de dialogue Insérer un contrôle ActiveX , sélectionnez Calendar Control 10.0 ou version ultérieure dans la zone de liste Sélectionner un contrôle ActiveX , puis cliquez sur OK.
Ajoutez un bouton de commande au formulaire dont les propriétés sont définies comme suit :
Propriété Valeur Name
testFD Caption
Modifier le premier jour Dans le menu Affichage, cliquez sur Code.
Remarque
Dans Access 2007, cliquez sur l’onglet Création , puis sur Afficher le code dans le groupe Outils .
Dans le Rédacteur Visual Basic, tapez ou collez le code suivant :
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
Dans le menu Fichier, cliquez sur Enregistrer.
Remarque
Dans Access 2007, cliquez sur le bouton Microsoft Office, puis sur Enregistrer sous.
Dans la boîte de dialogue Enregistrer sous , tapez Form1 dans la zone Nom du formulaire, puis cliquez sur OK pour enregistrer le formulaire Form1.
Ouvrez Form1 en mode Formulaire.
Cliquez sur le bouton Modifier le premier jour .
Bien que vous définissez la
FirstDay
propriété du contrôle calendrier sur vbTuesday, le calendrier sélectionne Mercredi comme premier jour de la semaine.
References
Pour plus d’informations sur le contrôle de calendrier et les propriétés du contrôle calendrier, ouvrez Mscal.hlp, puis recherchez la rubrique appropriée. Mscal.hlp se trouve dans les dossiers suivants :
Microsoft Access 2002
Lecteur d’installation : \Program Files\Microsoft Office\Office10
Microsoft Office Access 2003
Lecteur d’installation : \Program Files\Microsoft Office\Office11
Remarque
Le lecteur d’installation est un espace réservé pour le nom de votre lecteur d’installation.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour