Microsoft 365 Convertir du texte en Date

famu

XLDnaute Occasionnel
Bonjour à tous,
Je bute sur un code en VBA qui pourrait convertir du texte en date.
J'ai joint un fichier pour être plus clair...
Merci d'avance pour votre aide,
Famu
 

Pièces jointes

  • Test_Date_VBA.xlsx
    11.4 KB · Affichages: 21

TooFatBoy

XLDnaute Barbatruc
Une proposition de macro :
VB:
Sub test()
    Set CelDepart = Sheets("Feuil1").Range("A4")
    MaSemaine = 1 * Mid(CelDepart.Value, 5, 2)
    MonAnnee = 1 * Right(CelDepart.Value, 4)
    MonLundi = DateSerial(MonAnnee, 1, 4) - Weekday(DateSerial(MonAnnee, 1, 4), 3) + 7 * (MaSemaine - 1)
    For i = 0 To 6
        CelDepart.Offset(i, 2).Value = MonLundi + i
    Next i
End Sub
 

famu

XLDnaute Occasionnel
Bonjour à tous, bonjour TooFatBoy,
C'est Top de chez Top ! Jamais je n'aurais trouvé ce code.
Je remets le fichier avec le code, ça peut servir à d'autres...
Un GRAND merci TooFatBoy !
Très bonne journée à tous,
Famu
 

Pièces jointes

  • Test_Date_VBA.xlsm
    17.5 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
bonsoir juste en passant
on peu le faire en formule directement
=DATE(CNUM(DROITE(A4;4));1;1)+(CNUM(STXT(A4;5;2)*7)-(JOURSEM(DATE(CNUM(DROITE(A4;4));1;1);2)-(LIGNE()-3)))
étendre vers le bas
demo.gif
 

Gégé-45550

XLDnaute Accro
Une proposition de macro :
VB:
Sub test()
    Set CelDepart = Sheets("Feuil1").Range("A4")
    MaSemaine = 1 * Mid(CelDepart.Value, 5, 2)
    MonAnnee = 1 * Right(CelDepart.Value, 4)
    MonLundi = DateSerial(MonAnnee, 1, 4) - Weekday(DateSerial(MonAnnee, 1, 4), 3) + 7 * (MaSemaine - 1)
    For i = 0 To 6
        CelDepart.Offset(i, 2).Value = MonLundi + i
    Next i
End Sub
Hello ami @TooFatBoy, @famu
N'y aurait-il pas un petit schmill dans la macro ?
Chez moi, j'ai des résultats bizarres si je mets par exemple en A4 : Sem.4-2023 ;)
Qu'est-ce que ça donne chez vous ?
Amicalement,
 

TooFatBoy

XLDnaute Barbatruc
N'y aurait-il pas un petit schmill dans la macro ?
Chez moi, j'ai des résultats bizarres si je mets par exemple en A4 : Sem.4-2023 ;)
Qu'est-ce que ça donne chez vous ?
Oui, c'est "normal" : j'ai considéré que le numéro de la semaine était toujours sur deux caractères. 😉

Si tu mets 04, je n'ai pas testé, mais je pense que ça devrait fonctionner.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Mais ce serait mieux de prévoir le cas direct dans la macro, non ?
Enfin, c'est à famu de voir ça, après tout, c'est pour lui ;)
Oui, ce serait mieux. Mais comme tu dis très justement, c'est à famu de voir s'il faut modifier ou non.

J'ai fait au plus simple, en me disant que s'il y avait un problème pour les mois inférieurs à 10, alors je modifierais.
Mais franchement, c'est juste une ligne de plus, donc faut peut l'ajouter lui-même. Sinon tu peux lui faire. 😉

Mais franchement, pourquoi "compliquer" le truc si ça fonctionne bien chez lui ? 😉
 
Dernière édition:

natorp

XLDnaute Accro
re
Bonjour même si je suis passé inaperçu visiblement
avec formule 1 chiffre ou 2 pour la semaine
le texte des jours en "B" aussi en formule
Regarde la pièce jointe 1157874
bonne journée a tous
Bjr le fil
Patricktoulon : je me permets une incursion, si l'on choisit l'année 2023 en A11 et Lundi en B11, cela donne 30/01/2023, or le Lundi de la 4ème semaine de 2023 est le 23/01/2023

Qu'en pensez-vous ?

Cordialement, Gérard
 

TooFatBoy

XLDnaute Barbatruc
Puisqu'on est parti dans les délires formulesques inutiles :
Code:
=DATE(DROITE(A4;4);1;4)-JOURSEM(DATE(DROITE(A4;4);1;4);3)+7*STXT(A4;5;TROUVE("-";A4;5)-5)+EQUIV(B4;{"lundi";"mardi";"mercredi";"jeudi";"vendredi";"samedi";"dimanche"};0)-8
 

Pièces jointes

  • Test_Date_Formule_(TooFatBoy-v1) .xlsx
    12 KB · Affichages: 2

Discussions similaires

Réponses
13
Affichages
359

Statistiques des forums

Discussions
312 207
Messages
2 086 252
Membres
103 166
dernier inscrit
ZAHRAA