Date et heure dans nom de fichier

Résolu
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 27 oct. 2011 à 15:18
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 29 oct. 2011 à 01:56
Bonjour à tous,

J'ai besoin d'intégrer la date et heure présente dans une cellule dans un nom de fichier par une Sub (VBA Excel 2003): Evidemment le caratère ":" bloque!
J'ai fait un truc " pas beau" qui consite à préalablement copier la cellule en question dans une autre au format "Standard" et non "date heure", pour en récupérer le contenu sous format série...
J'ai aussi essayé de remplacer les caractères espace entre date et heure, et 2points dans heure , mais j'ai un message d'erreur que je ne comprend pas...
Ma question: Comment récupérer cette date et heure sous la forme valeur série DIRECTEMENT dans la Sub de création de nom de fichier?
Application.WorksheetFunction.Dateserial(...) ne marche pas

'Sélection
    RW = ActiveCell.Row                     'Valeur de la ligne sélectionnée

'Si pré-Copie de F&RW au format standard
    'DateMod=Sheets("Archives").Range("IV" & RW).Value 'Date Heure "en chiffres"

'Remplace  : par - eu espace par £ dans la variable DateMod
    Dim DateMode As String
    DateMod = Sheets("Archives").Range("F" & RW)
    DateMod = Replace(DateMod, ":", "-")
    DateMod = Replace(DateMod, " ", "£")

'Extraction Nom Archive depuis feuille "Archives"
    NomArch = _
        Sheets("Archives").Range("B" & RW).Value & "$" & _
        Sheets("Archives").Range("C" & RW).Value & "$" & _
        Sheets("Archives").Range("D" & RW).Value & "$" & _
        Sheets("Archives").Range("E" & RW).Value & "$" & _
        DateMod

'Création du Fichier Excel "NomArch" dans C:\Temp
    Workbooks.Add
    ChDir "C:\Temp"
    'message d'erreur sur le nom du fichier avec "Replace"
    'OK avec pré-copie format standard
    ActiveWorkbook.SaveAs Filename:="C:\Temp" & NomArch & ".xls"



Merci d'avance du coup de main !
Amicalement à tous

Rataxes64

2 réponses

CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
29 oct. 2011 à 01:56
Salut jack,
Toujours autant sur la brèche !

J'ai regardé attentivement et cela reste assez lourd pour "simplement" récupérer la valeur date.
J'ai re-bataillé avec DateSerial, toujours sans succès...
Finalement, j'ai choisi de passer par une simple copie dans une cellule de report, dont je force ensuite le format, pour y récupérer la valeur série date + heure: ça ne prend que 2 lignes de code
    'Inséré dans une boucle For Next (Rw)
    'Date et Heure en colonne F ==> Date série xxxxxx,ssssss en colonne IV
    'Reprise Date  Heure  en colonne F
    Range("IV" & Rw).FormulaR1C1 = "=RC[-250]"
    'Mise au format série en colonne IV
    Range("IV" & Rw).NumberFormat = "General"

Je n'ai pas trouvé comment faire plus court sans passer par une cellule...

Merci de ton aide

Amicalement
Rataxes64
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
27 oct. 2011 à 18:17
Salut

Tu peux utiliser la fonction décrite dans <cette source VB6> et ainsi récupérer un nom conforme sans problème.
Voir aussi la remarque de JonasVB dans les commentaires.

Quant à la sérialisation d'une date/heure, il y a les fonctions comme DateSerial qui font ça très bien.
Application.WorksheetFunction.Dateserial
est la fonction qui s'applique aux cellules : utilise le DateSerial de VBA, mais cette fonction ne te renverra qu'une date correctement formatée selon les options de présentation de date du système, c'est tout.
Tu peux aussi, par exemple, calculer le TimeStamp d'une date, c'est à dire le nombre de secondes écoulées depuis le 1/1/1970 00:00 (l'an 0 de l'informatique selon Apple).
Exemple :
DateDiff("s", #01/01/1970 00:00:00#, Now)
Tu obtiendras ainsi un chiffre de type Long.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous