Gestion de date : extraction de jour, mois, année qui plante

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sebast

XLDnaute Impliqué
Bonjour à tous,

je me heurte à un problème de date que je n'arrive pas à extraire
Par un userform avec un calendrier, je collecte la date souhaitée, sous forme 17/03/2012
et pour mes besoins ultérieurs, je dois "découper" cette date en 3 morceaux dont je me sers par la suite, du style
"17 mars 2012", c'est-à-dire je dois afficher le mois en toutes lettres

Je pensais qu'avec les lignes suivantes, c'était OK mais ça bugge … est-ce parce que je suis en userform ? je veux en effet que le découpage se fasse quand je valide la saisie
Merci d'avance pour vos lumières !

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Private Sub OK_Taste_Click() ' code du userform quand on valide
Sheets("Paramètres").Activate ' je me positionne dans l'onglet qui recueille la date via userform

Range("J105").Select ' c'est en j105 que la date "brute" est transférée (ex 17/03/2012)
ActiveCell.Value = Kalendar ' Kalendar est la valeur "prélevée" via le calendrier intégré, genre 'Date&Time Picker

Dim Ma_Date As variant ' je ne sais pas trop si c'est obligatoire mais comme je suis en option explicit …
Dim Mon_Mois As variant
Ma_Date = Range("j105").Value ' ici, je définis que Ma_Date prend la valeur donnée par le D&T Picker
Mon_Mois = MonthName(Month(Ma_Date)) ' pour extraire le mois en ttes lettres

Range("f106").Select ' dans cette cellule, je veux extraire le jour
ActiveCell.Value = Day(CDate(Ma_Date)) ' j'attends donc comme résultat "17"

Range("g106").Select ' dans cette cellule, je veux placer le mois, en toutes lettres
ActiveCell.Value = StrConv(Mon_Mois, vbProperCase) 'vbproper pour gérer les min/majuscules, j'attends comme 'résultat "Mars"

range("h106").select ' dans cette cellule, je veux placer l'année
ActiveCell.Value = Year(CDate(Ma_Date)) ' j'attends comme résultat "2012"

Unload Me

End Sub
 
Re : Gestion de date : extraction de jour, mois, année qui plante

Bonsoir Sebast,

Difficile d'être précis quant à la réponse que tu attends : tu ne dis pas à quel niveau du code se produit l'erreur. De plus, un fichier exemple avec l'UserForm incriminé serait préférable pour cerner le problème.

Il apparaît également que bien des lignes pourraient être supprimées sans nuire à l'efficacité de la macro : il est inutile de sélectionner des cellules pour les manipuler.

En attendant donc davantage de précisions de ta part.

Cordialement.
 
Re : Gestion de date : extraction de jour, mois, année qui plante

RE :

Bonsoir xhudi69, Habitude,

@ Sebast,

J'ai testé ton code, apparemment il fonctionne parfaitement.

Toutefois, comme je te le disais précédemment, il est possible de le simplifier en nombre de lignes, comme dans l'exemple ci-dessous :

Code:
Private Sub CommandButton1_Click()
Dim Ma_Date As Variant ' je ne sais pas trop si c'est obligatoire mais comme je suis en option explicit …
Dim Mon_Mois As Variant
Sheets("Paramètres").Activate ' je me positionne dans l'onglet qui recueille la date via userform
Kalendar = Calendar1.Value
Range("f106").Value = Day(Kalendar) ' j'attends donc comme résultat "17"
Range("g106").Value = StrConv(MonthName(Month(Kalendar)), vbProperCase) 'vbproper pour gérer les min/majuscules, j'attends comme 'résultat "Mars"
Range("h106").Value = Year(Kalendar) ' j'attends comme résultat "2012"
Unload Me
End Sub
Par ailleurs, il n'est pas nécessaire d'affecter la valeur de Kalendar à la cellule J105. A moins que celà te soit utile dans la suite de ton programme ?

Cordialement.
 
Dernière édition:
Re : Gestion de date : extraction de jour, mois, année qui plante

Bonjour à tous,

Remplaces -peut être- la ligne du code :
Code:
ActiveCell.Value = StrConv(Mon_Mois, vbProperCase)
par la ligne:
Code:
ActiveCell.Value = Format(StrConv(Mon_Mois, vbProperCase), "mmm")
ou par la ligne:
Code:
ActiveCell.Value = StrConv(Format(Mon_Mois, "mmm"), vbProperCase)

Cordialement
 
Dernière édition:
Re : Gestion de date : extraction de jour, mois, année qui plante

Bonsour®
Bonjour à tous,

je me heurte à un problème de date que je n'arrive pas à extraire
Par un userform avec un calendrier, je collecte la date souhaitée, sous forme 17/03/2012
et pour mes besoins ultérieurs, je dois "découper" cette date en 3 morceaux dont je me sers par la suite, du style
"17 mars 2012", c'est-à-dire je dois afficher le mois en toutes lettres


VB:
Private Sub OK_Taste_Click()                                  ' code du userform quand on valide
Sheets("Paramètres").Activate
' je me positionne dans l'onglet qui recueille la date via userform
Range("J105") = Kalendar    ' Kalendar est la valeur "prélevée" via le calendrier intégré, genre 'Date&Time Picker
Range("f106")=Format(Kalendar,"dd")'dans cette cellule, je veux extraire le jour
Range("g106")=Format(Kalendar,"mmmm")' dans cette cellule, je veux placer le mois, en toutes lettres
range("h106")=Format(Kalendar,"yyyy")' dans cette cellule, je veux placer l'année

Unload Me

End Sub
 
Dernière édition:
Re : Gestion de date : extraction de jour, mois, année qui plante

Bonsoir à tous et merci pour vos efforts dont j'ai tiré les éléments nécessaires pour finalement résoudre le problème ...
Grâce aux contributions des un(e)s et des autres, j'ai corrigé comme suit et ça marche parfaitement :

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub OK_Taste_Click()
Sheets("Paramètres").Activate
Range("J105") = Kalendar
Range("f106") = Format(Kalendar, "dd")
Range("g106") = Format(Kalendar, "mmmm")

mois_choisi = Range("g106") ' correction ici, pour pouvoir convertir à la ligne suivante et mettre la 1ère lettre en majuscule
Range("g106") = StrConv(mois_choisi, vbProperCase) ' l'instruction pour afficher uniquement la 1ère lettre du mois en majuscule

Range("h106") = Format(Kalendar, "yyyy")

Unload Me
End Sub

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

pour répondre aux questions soulevées, voici mes remarques :
Papou-net : le code, s'il reste en l'état, plante malheureusement car je reçois le message "Tableau attendu" ...
mais tu as raison, à l'avenir je joindrais un fichier
Modeste geedee et Papou-net : vous avez raison, il vaut mieux simplifier et ne pas sélectionner à tort et à travers ... (voyez comme je me suis inspiré de vos remarques ...)
hbenalia : ta formule de conversion est la bonne
Habitude : je ne m'étais pas assez expliqué, en fait je voulais pouvoir affiche rla 1ère lettre du mois en majuscule


encore merci à tous et bonne soirée
 
Re : Gestion de date : extraction de jour, mois, année qui plante

Re :

Bonsoir à tous,

Oups, Sebast,

Je viens de relire mon code car l'erreur que tu me signales m'interpelle. J'ai mal corrigé le code suite à mes essais, donc il fallait lire :

Code:
Private Sub CommandButton1_Click()
Sheets("Paramètres").Activate ' je me positionne dans l'onglet qui recueille la date via userform
Range("f106").Value = Day(Kalendar) ' j'attends donc comme résultat "17"
Range("g106").Value = StrConv(MonthName(Month(Kalendar)), vbProperCase)  'vbproper pour gérer les min/majuscules, j'attends comme 'résultat  "Mars"
Range("h106").Value = Year(Kalendar) ' j'attends comme résultat "2012"
Unload Me
End Sub
Bonne soirée.

Cordialement.
 
Re : Gestion de date : extraction de jour, mois, année qui plante

Bonsour®
Bonsoir à tous et merci pour vos efforts dont j'ai tiré les éléments nécessaires pour finalement résoudre le problème ...
Grâce aux contributions des un(e)s et des autres, j'ai corrigé comme suit et ça marche parfaitement :
VB:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub OK_Taste_Click()
Sheets("Paramètres").Activate
Range("J105") = Kalendar
Range("f106") = Format(Kalendar, "dd")
Range("g106") = Application.Proper(Format(Kalendar, "mmmm"))
Range("h106") = Format(Kalendar, "yyyy")
Unload Me
End Sub
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
Re : Gestion de date : extraction de jour, mois, année qui plante

Bonjour à toutes et à tous,

merci à vous deux pour votre réponse si rapide, je n'ai pas eu le temps de vous répondre hier soir !
Modeste geedee : ça marche parfaitement et c'est même beaucoup plus simple et lisible que ce que j'avais réussi à reconstituer hier soir, donc j'adopte !
papou-Net : j'ai toujours ce satané message "erreur de compilation ... Tableau attendu ...". Je ne sais pas trop à quoi ça correspond !

Encore merci à vous deux
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour