Icône de la ressource

Calendrier pour multi userform V4

Alain79

XLDnaute Nouveau
Bonsoir Youky(BJ)
J'ai téléchargé la nouvelle version V5.
Comptant m'en servir pour une petite application, j'ai fait un essai (voir fichier joint) et je rencontre 2 problèmes dont je n'arrive pas à en connaître les causes.

Le premier, (en cliquant sur le bouton "Saisir les dates") et en utilisant : Private Sub TextBox1_Enter(), le calendrier apparaît avant mon userform. Par contre, (en cliquant sur le bouton "Saisir Dates") et en utilisant le double clic, l'userform apparaît directement.

Le deuxième, lorsque je clique dans le calendrier sur les jours à 1 chiffre, la date est reportée au format MM/JJ/AAAA et non au format JJ/MM/AAAA.

A part ça, c'est très pratique mais impossible à réaliser pour un néophyte que je suis.

Un grand merci de faire un tel travail et le mettre à la disposition des autres.

Cordialement
 

youky(BJ)

XLDnaute Barbatruc
Bonsoir Alain,
Pour la 1ère cause la textbox ou l'on va mettre la date ne doit pas recevoir le focus dès l'ouverture.
Sur le fichier exemple j'ai mis le bouton de l'user(Fermer) en propriété TabIndex=0
C'est indiqué dans le fichier. Prévoir un bouton nommé CommandButton1 et son TabIndex=0
Cela évite l'ouverture du dateur avant ton userform et aussi la sortie.
Pour les dates à l'Anglaise je pense que tu possèdes un Office Anglais sinon je ne vois pas.
Chez moi et chez beaucoup cela fonctionne bien.
Bruno
 

Alain79

XLDnaute Nouveau
Bonsoir Alain,
Pour la 1ère cause la textbox ou l'on va mettre la date ne doit pas recevoir le focus dès l'ouverture.
Sur le fichier exemple j'ai mis le bouton de l'user(Fermer) en propriété TabIndex=0
C'est indiqué dans le fichier. Prévoir un bouton nommé CommandButton1 et son TabIndex=0
Cela évite l'ouverture du dateur avant ton userform et aussi la sortie.
Pour les dates à l'Anglaise je pense que tu possèdes un Office Anglais sinon je ne vois pas.
Chez moi et chez beaucoup cela fonctionne bien.
Bruno
Bonjour Youky(BJ),
Merci pour la rapidité de la réponse.
Pour la 1ére cause, effectivement j'ai raté l'info indiqué dans ton modèle mais j'en ai pris note pour l'avenir.
Pour la 2éme cause, je possède un Office Français et je ne m'explique pas la cause. Toutefois, après avoir ajouté en fin de macro une commande de mise en forme (Selection.NumberFormat = "mm/dd/yyyy") le problème a disparu même après avoir supprimé cette commande lors des essais suivants. C'est quelque fois les mystères d'Excel.
Désolé de t'avoir dérangé, mais encore une fois je tiens vraiment à te remercier.
Cordialement
Alain
 

Alain79

XLDnaute Nouveau
Bonsoir Youky(BJ)
Je reviens vers toi car je rencontre un petit problème.
Lorsque j'utilise le calendrier dans mon fichier Excel d'essai et en tenant compte de la réponse que tu m'as apportée précédemment, tout fonctionne correctement.
En revanche, lorsque j'ai voulu l'intégrer dans un autre fichier qui comporte divers usform et commandes, après avoir lancé la macro qui appelle l'Userform contenant les textbox et lorsque je clique pour appeler le calendrier j'obtiens le message d'erreur suivant : "Erreur de compilation - Nom ambigu : usf".
Dans le code de Usform du calendrier, j'ai essayé de mettre en tête : "Public usf As Object" mais là j'obtiens le message d'erreur "Erreur d'exécution '13' : Incompatibilité de type".
Observation que j'ai bien mis au début du module qui la commande appelant l'Usform contenant les textbox : Public usf As Object
N'étant pas féru en la matière, je n'arrive pas à comprendre ce qui ne va pas.
Éventuellement si cela ne te dérange pas pourrais-tu essayé de voir où est le problème.
Si non je continuerai à saisir mes dates directement dans les textbox.
Par avance je te remercie.
Cordialement
Alain
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Public usf As Object
Cette ligne est à mettre en tête de Module1 ou du nom du module si il a été renommé.
Il ne doit pas être mis ailleurs
Regarde à nouveau le fichier dateur comment je procède.
Bruno
 

youky(BJ)

XLDnaute Barbatruc
Petit complément et précision,
Il est impératif d'avoir dans chaque userform un bouton nommé "CommandButton1"
Ce bouton peut être n'importe quel bouton Quitter ou Valider ou Fermer ou autres
Mettre TabIndex=0 dans les propriétés de ce bouton (pas obligatoire ou mettre le tabindex=0 sur un control qui ne reçois pas de date)
J'utilise donc ce bouton pour lui donner le focus à la sortie du textbox qui reçois la date
Si pas ce bouton bug . . .
Bruno
 

Alain79

XLDnaute Nouveau
Petit complément et précision,
Il est impératif d'avoir dans chaque userform un bouton nommé "CommandButton1"
Ce bouton peut être n'importe quel bouton Quitter ou Valider ou Fermer ou autres
Mettre TabIndex=0 dans les propriétés de ce bouton (pas obligatoire ou mettre le tabindex=0 sur un control qui ne reçois pas de date)
J'utilise donc ce bouton pour lui donner le focus à la sortie du textbox qui reçois la date
Si pas ce bouton bug . . .
Bruno
Bonjour Youky(BJ)
Tout d'abord, merci de m'avoir répondu.
Effectivement, j'ai bien suivi des instructions, mais le problème subsiste à savoir lorsque je clique dans le textbox qui est censé appelé le calendrier, j'obtiens le message d'erreur suivant : "Erreur de compilation - Nom ambigu : usf", et fait référence au code du calendrier.
Je n'arrive pas à comprendre pourquoi puisque dans mon fichier d'essai tout fonctionne et j'ai transférer littéralement l'userfom Dateur et userform1 ainsi que le module1 et celui classe1.
Tant pis, j'essaierai de l'insérer dans un autre fichier qui utilise une textbox pour saisir une date.
Cordialement
Alain
 

Alain 79

XLDnaute Junior
Supporter XLD
Bonsoir,
Je souhaiterai utiliser ton dateur dans une seule cellule d'une feuille et non pas toutes les cellules d'une colonne, mais je n'arrive pas à modifier ton code pour arriver à ce résultat.
Pourrais-tu m'indiquer la modification à apporter.
Par avance, je t'en remercie.
Alain
 

youky(BJ)

XLDnaute Barbatruc
Bonsoir,
Dans l'onglet qui doit recevoir le dateur fait un click droit de souris en bas sur le nom de l'onglet
et Visualiser le code Remplace "$J$10" par l'adresse voulue ici donc J10
J'ai mis aussi une apostrophe sur la ligne en dessous pour quelle ne soit plus prise en compte
Bruno
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Target.Address <> "$J$10" Then Exit Sub
'If Target.Column <> 10 Or Target.Row = 1 Then Exit Sub
X = Target.Left - 187 'dateur.Width
X = IIf(X < 40, (Target.Left + 187 - 100), X)
Set usf = Nothing
dateur.Top = (Target.Top - 182 + 200) - ActiveWindow.ScrollRow * 15
dateur.Left = X
dateur.Show
End Sub
 

Alain 79

XLDnaute Junior
Supporter XLD
Bonjour,
Merci pour la réponse et cela fonctionne très lorsque je crée un nouveau fichier, mais qui ne fonctionne pas lorsque je l'installe dans un fichier déjà existant et qui comprend d'autres macros.
J'obtiens le message suivant : (Le "X =" encadré en rouge est surligné)
1676723378438.png

Et là, je bloque.
Désolé d'abuser de ta patience.
Cordialement
Alain
 

Pièces jointes

  • 1676723289083.png
    1676723289083.png
    29.4 KB · Affichages: 19

Alain 79

XLDnaute Junior
Supporter XLD
Bonjour,
Merci pour la réponse et cela fonctionne très lorsque je crée un nouveau fichier, mais qui ne fonctionne pas lorsque je l'installe dans un fichier déjà existant et qui comprend d'autres macros.
J'obtiens le message suivant : (Le "X =" encadré en rouge est surligné)
Regarde la pièce jointe 1163737
Et là, je bloque.
Désolé d'abuser de ta patience.
Cordialement
Alain
Petite précision :
J'ai supprimé en tête "Option explicit" et là je n'ai plus le message d'erreur, le pointeur d la souris se transforme en sablier mais aucun résultat. Alors pour moi, encore un mystère.
 

youky(BJ)

XLDnaute Barbatruc
De mon tel.
Mettre en début de macro
If target.count>1 then Exit sub
Si tu conserves option explicit Il faut déclarer les variable exemple Dim x et les autres aussi
Bruno
 

Alain 79

XLDnaute Junior
Supporter XLD
Merci pour la réponse, Mais maintenant j'ai un nouveau message d'erreur : Erreur d'exécution '424' : Objet requis.
Alors tant pis, je continuerai à saisir la date manuellement car le problème existe lorsque j'intègre mon fichier.
Si je créai un nouveau fichier qu'avec le dateur ça marche.
 

youky(BJ)

XLDnaute Barbatruc
Essayes de changer X par gauche ou autre nom comme tu veux il y en a 5 à changer.
La variable X est peut être déjà utilisée dans ton fichier.
Bruno
 

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87