| ||||||||
Petit astucien | Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;} Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;} Bonjour à tous et à toutes,Je capitule après avoir passé un certain temps sur les différents forums. Je suis sous Windows 10 et j'utilise Excel 2016 Dans Userform1 il y a un TextBox1 et un CommandButton1 Je contrôle la saisie de la date comme ci-dessous Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If TextBox1.Value = "" Then Cancel = True If TextBox1.Value <> "" Then If Not IsDate(TextBox1.Value) Then MsgBox "Date incorrecte.", vbCritical + vbOKOnly, "Erreur" TextBox1.Value = "" Cancel = True End If End If End Sub
Quand je clique sur CommandButton1, Je souhaiterai que cette date s'affiche dans la cellule A1 de la Feuil1 au format jjjj jj mmm aaaa (mercredi 16 août 2023) J'avoue ne pas savoir comment faire. Merci d'avance pour vos réponses Cordialement BZH35
[Configuration automatique à compléter]
| |||||||
Publicité | ||||||||
|
| ||||||||
Petit astucien |
| |||||||
Astucien | Bonjour, Private Sub CommandButton1_Click() A+ | |||||||
Petit astucien | Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;} Bonjour à tous et toutes,Merci pour vos réponses qui ont répondues à ma question. Toutefois je ne comprends pas ce qu'il se passe. Je m'explique : Je saisi la date dans les TextBox1 de l'Userform1 sous la forme 15/08/2023, Je clique sur le CommandButton1 de l'Userform1, La valeur s'inscrit dans la cellule A1 de la Feuil1 sous la forme 15/08/2023, Sheets("Feuil1").Cells(1, 1) = UserForm1.TextBox1 Je saisi dans la cellule B1 de la Feuil1 la même date 15/08/2023, Je constate que : La date de la cellule A1 est alignée à gauche et le format est Standard, La date de la cellule B1 est alignée à droite et le format est Date, Je sélectionne les 2 cellules A1 et B1, je fais Format de cellule, puis Personnalisée, Je saisi jjjj jj mmm aaaa pour avoir mardi 15 août 2023, La date de la cellule A1 reste avec 15/08/2023 et est alignée à gauche, La date de la cellule B1 affiche jeudi 15 août 2023 et est alignée à droite, Pour calculer ne nombre de jours entre 2 dates (31/08/2023 - 15/08/2023) pour obtenir 16 jours, avec votre formule j'ai le message Incompatibilité de type. D'autre part si : Je saisi dans la cellule A1 31/08/2023 et dans la cellule A2 15/08/2023, Et que je sélectionne les 2 cellules, puis format Personnalisé jjjj jj mmm aaaa , j'obtiens Cellule A1 jeudi 31 août 2023 et cellule A2 mardi 15 août 2023. Si je fais en cellule A3 la formule =B1-B2 j'obtiens bien 16. Si je clique sur l'une des 2 cellules A1 ou A2 qui affiche la date au format jjjj jj mmm aaaa dans la barre de formule la date s'affiche 31/08/2023 pour la cellule A1 et 15/08/2023 pour la cellule B1. Il est vrai qu'à 76 ans les neurones ne fonctionnent plus très bien mais j'avoue ne plus comprendre entre l'affichage et les calculs et la programmation en VBA et les feuilles. Merci d'avance pour me fournir quelques explications par vous-même ou des liens pour mieux comprendre ce phénomène. Cordialement BZH35.
| |||||||
Maître astucien | Bonjour, " Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;}" Tu as ça c'est parce que tu as fait un copier collé d'une feuille "excel" ou "Word", pour ne pas avoir tout ça tu re ouvres ton message envoyé, tu supprimes tout ça et tu fais "publier le message". A+
Modifié par DLUC le 17/08/2023 09:50 | |||||||
Astucien | Bonjour, Quand elle est alignée à gauche une date n'est pas reconnue comme une date mais comme un texte simple. En soit l'alignement ne caractérise pas forcément une date : L'alignement trahit seulement le format de la cellule. Si au départ la cellule n'était pas formaté alors la position trahit ce qu'Excel à compris. Sinon Ecel affiche de la manière ou il est formaté sauf si tu utilises la Fonction NumberFormat... C'est probablement ce que fait la solution de corinthien. en effet la fonction format renvoie un texte. Pour qu'un texte renvoie une date il faut utiliser la fonction CDate. Il y a différentes manières de le faire mais ça revient toujours à ça : Un Textbox que tu rajoutes ou pas " .Value " , renvoie toujours du Texte. A plus forte raison si tu le combines seulement avec Format. Il faut bien comprendre que cette fonction Format ne renvoie qu'un visuel. Si tu veux avoir quelque chose d'exploitable par Excel pour faire des calculs, il faux lui donner Une date stockée sous forme de nombre. C'est ce que fait la fonction CDate. On pourrait faire bien d'autre commentaires car le travail sur les dates est complexe... La solution de corinthien ne peux plus rien donner car il n'existe aucune fonction qui permette de transformer une date du type "jjjj jj mmm aaaa" en date classique ou en nombre ! A+ Modifié par galopin01 le 17/08/2023 10:25 | |||||||
Petit astucien | Bonjour à tous et toutes, Merci pour vos réponses rapides et précises. J'ai fait plusieurs essaies pour comprendre les différentes possibilités de travailler les dates, ce que est loin d’être facile mais à force de persévérance on trouve la solution. De ce fait j'ai pu résoudre mon problème et aborder la notion d'objet range, la propriété numberformat, format etc... Aussi je considère ce post comme résolu. Cordialement BZH35 | |||||||
Astucien | BZH35 a écrit : .... Aussi je considère ce post comme résolu. .... Salut BZH35 Alors faut le passer en résolu. C'est pas automatique. | |||||||
Astucien | Bonjour
Et si tu donnais ton code, cela pourrait servir à d'autres. Merci pour eux Modifié par Pegase7845 le 24/08/2023 13:50 | |||||||
Petit astucien | Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;} Bonjour Pegase7845,Suite à ta demande à laquelle je m'empresse d'y répondre. C'est en désespoir de cause que j'ai changé de tactique. Plutôt que d'utiliser des fonctions de date et conversion, pour être sûr d'avoir une bonne date j'utilise le contrôle DTPicker qui correspond à mes besoins. En fichier ci-joint un exemple où il faut entrer 2 dates et cliquer sur le bouton OK. https://www.cjoint.com/c/MHzpiUfRfZz Le résultat s'affiche correctement sur la Feuil1 et je calcul le nombre de jours séparant ces 2 Dates. Cordialement BZH35
| |||||||
| ||||||||
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
| |||||||||||||||||||
| Sujets relatifs | ||
|