> Tous les forums > Forum Bureautique
 Format date dans une cellule
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
BZH35
  Posté le 16/08/2023 @ 12:16 
Aller en bas de la page 
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]
Windows 10
Firefox 116.0

Publicité
corinthien
 Posté le 16/08/2023 à 14:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

tlm

Private Sub CommandButton1_Click()
Worksheets("Feuil1").Range("A1") = Format(TextBox1.Value, "dddd dd mmm yyyy")
End Sub

galopin01
 Posté le 17/08/2023 à 02:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Private Sub CommandButton1_Click()
Worksheets("Feuil1").Range("A1") = CDate(TextBox1.Value)
Worksheets("Feuil1").Range("A1").NumberFormat = "[$-x-sysdate]dddd, mmmm dd, yyyy"
End Sub

A+

BZH35
 Posté le 17/08/2023 à 08:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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.

DLUC
 Posté le 17/08/2023 à 09:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  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
galopin01
 Posté le 17/08/2023 à 10:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  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.
La solution de Corinthien renvoie un Texte mis en forme de telle manière que toi tu puisses lire une date. Mais Excel ne comprend pas cela comme une date : Pour être certain qu'Excel affiche bien une date quel que soit le mode d'alignement, il faut que si tu mets ta cellule au format nombre tu lises un nombre de l'ordre de 45155 (pour la date d'aujourd'hui)

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
BZH35
 Posté le 18/08/2023 à 11:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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

Nostradamus8
 Posté le 19/08/2023 à 07:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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.

Pegase7845
 Posté le 24/08/2023 à 08:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour

.... Aussi je considère ce post comme résolu. ....

Et si tu donnais ton code, cela pourrait servir à d'autres.

Merci pour eux



Modifié par Pegase7845 le 24/08/2023 13:50
BZH35
 Posté le 25/08/2023 à 17:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Ventes flash de printemps sur Amazon
-40% -1 -%
@Amazon
Carte mère ASUS TUF Gaming B850-E WiFi (Wifi 6e, 2.5Gb, PCIE 5.0) + Resident Evil Requiem
163,99 € 200 € -18%
@Amazon
Stop-Rouille Facom 125 ml
7,64 € 14,90 € -49%
@Amazon
Mini PC GEEKOM AX8 Max (Ryzen 7 8745HS, 16 Go RAM DDR5, SSD NVMe 1 To, Radeon RX 780M, Windows 11 Pro)
593,77 € 729 € -19%
@Amazon
Imprimante laser multifonction Brother MFC-L2835DW (monochrome, recto-verso automatique, USB, WiFi, Ethernet)
204,99 € 235 € -13%
@Amazon
Jean homme Amazon Essentials
13,38 € 23 € -42%
@Amazon

Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique