IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insérer date de création de fichier [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut Insérer date de création de fichier
    Bonjour tout le monde,

    Je voudrais insérer la date de création du fichier dans une cellule.
    Les solutions que j’ai trouvé dans les multiples posts ne m’ont pas convenu et la solution que j’ai mis en place ne me convient aussi qu’á moitié.
    Le problème: l’utilisateur ouvre un fichier-modèle et l’enregistre sous un autre nom. Une date doit s’insérer, celle de la création de ce fichier.
    J’ai essayé de passer par BuiltinDocumentProperty, mais la date renvoyée est celle du fichier original, soit la date de création du fichier modèle.

    Finalement ma solution est une macro appelée par un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub Recup_Date_Creation()
     
    Dim date_crea As Date
    Dim date_sauv As Date
     
    ‘Crea_Date est le nom de la cellule ou s’inscrit la date
    date_crea = [Crea_Date]
     
    date_sauv = FileDateTime(chemin)
     
    ‘sur le fichier-modele, la date est vide, il faut donc en inscrire une a la creation du fichier
    If date_crea = 0 Then
    date_crea = date_sauv
    End If
     
    ‘la date ne doit pas changer ni en sauvegardant le fichier, ni en le reouvrant
    If date_sauv < date_crea Then
    date_sauv = date_crea
    End If
     
     Range("e5").Select
      ActiveCell.FormulaR1C1 = date_sauv
     
    End Sub
    Je ne trouve pas cette solution satisfaisante car en cas de fausse manip, une mauvaise date sera sauvegardée.
    Je suis donc preneur de toutes les suggestions.
    Merci

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut
    Merci kiki29 de cette réponse rapide.
    J'ai effectivement trouvé mon bonheur dans ce tutoriel que j'avais tout d'abord mal exploité. J'en ai déduit ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Workbook_Open()
        Dim PathHoto As String
        Dim machin As String
        PathHoto = ThisWorkbook.path
        HoTo = ThisWorkbook.Name
        PathHoto = PathHoto & "\" & HoTo
        proprietesFichier_getFile PathHoto
    End Sub
    Sub proprietesFichier_getFile(Fichier As String)
        '
        'Nécessite d'activer la référence Microsoft Scripting Runtime
        '
        Dim Cible As Scripting.FileSystemObject
        Dim Valeur As Scripting.file
        Dim Date_Crea As Date
     
        Set Cible = CreateObject("Scripting.fileSystemObject")
        Set Valeur = Cible.GetFile(Fichier)
        Date_Crea = Valeur.DateCreated & Chr(10) & Chr(10)
     
        Range("e5").Select
        ActiveCell.FormulaR1C1 = Date_Crea
     
    End Sub
    Je l'ai mis en Auto Open, mais en fait d'habitude l'utilisateur enregistre l'ancien fichier sous un nouveau nom avant de travailler dessus.
    Comment pourrais-je automatiser la création de la cellule sur cette action ?
    Là, je cale
    Merci

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut une idée
    bonjour

    partant d'un model une simple macro appelé a l'open

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub creation_fichier()
    Application.DisplayAlerts = False
     
    Dim chemin As String
    Dim mois, jour, annee As Variant
    mois = Format(Now, "mmmm")
    jour = Format(Now, "d")
    annee = Format(Now, "yyyy")
     
    chemin = "C:\Users\Patrick\Desktop\fichier cré le " & jour & mois & annee & ".xls"
        Cells(1, 1).FormulaR1C1 = "=TODAY()"
        Cells(1, 1).Copy
        Cells(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
           Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:=chemin, FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
     
     
     
     
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cells(1, 1).FormulaR1C1 = "=TODAY()"     
    Cells(1, 1).Copy     
    Cells(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False        
    Application.CutCopyMode = False
    Font la même chose, non?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour mercatog

    c'est parce que je voulais me servir des variables pour etablir le nom de destination

    sinon une autre solution toute simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub truc()
    Application.DisplayAlerts = False
     
    Dim madate As String
    Dim chemin As String
    madate = Replace(Date, "/", "-")' j'evite les simbole dans le nom de destination
    chemin = "C:\Users\Patrick\Desktop\fichier cré le "
    Cells(1, 1) = Date
    ActiveWorkbook.SaveAs Filename:=chemin & madate & ".xls", FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    End Sub
     
    la quelle préfere tu??
     
     
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par Stutak Voir le message
    d'habitude l'utilisateur enregistre l'ancien fichier sous un nouveau nom avant de travailler dessus.
    Comment pourrais-je automatiser la création de la cellule sur cette action ?
    Là, je cale
    Merci
    Tu ne pourrais pas faire un truc du style
    • mémoriser le chemin et le nom du fichier dans une cellule
    • vérifier à l'ouverture du fichier si son chemin et son nom correspondent au contenu de la cellule
    • si c'est différent, on insère la date actuelle et on actualise la cellule avec le nouveau chemin et/ou nom

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour fring

    pourquoi faire cette vérification puisque a chaque ouverture le nom doit changer si j ai bien compris

    puisque selon mon exemple le nom de sortie ="zzzzz" & la date

    de toute facon si le fichier est ouvert 20 fois par jour il le fera 20 fois

    mais c'est vrai que je ne connais pas le fichier je ne sais pas ce qu'il y a dedans

    a moins de concidérer que dans ce fichier on ajoute regulierement des lignes ,des objets ou je ne sais quoi la macro est sufisante

    mais ca n'est plus a l'open qu'il faut l'appeler mais a la fermeture


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut
    Tout d'abord merci à tous les intervenants !

    A l'origine, les utilisateurs ouvraient le dernier fichier en date, le sauvegardaient à la date du jour et je voulais que la date de sauvegarde s'insère.
    Bon

    Avec les idées de Patricktoulon et Mercatog, j'ai gardé l'idée de créer un fichier du jour à partir d'un fichier modèle en automatisant la création.

    Donc maintenant l'utilisateur ouvre le fichier modèle qui lui génère le fichier du jour. La disparition des macros sur le fichier ainsi créé permet de le réouvrir à l'infini sans craindre de perdre les données.

    je vais juste rajouter une fenêtre pour le cas où le fichier du jour a déja été créé et éviter une re-création qui effacerait les données antérieures.

    Juste une précision pour ceux qui voudraient utiliser l'effacement de fichier, il faut aller dans Outils/Macro/Sécurité puis dans l'onglet Editeur , aller cocher dans l'onglet Editeurs approuvés la case Faire confiance au projet Visual BAsic. Sinon l'effacement bloque avec l'erreur 1004.

    Donc pour moi, résolu et encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2007, 21h02
  2. Impossible de copier la date de création du fichier source
    Par azerazerazer dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/11/2007, 20h13
  3. Recopie de fichiers :date de création du fichier perdue
    Par mugwump dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2007, 16h17
  4. Problème de précision sur date de création des fichiers
    Par Bruno Orsier dans le forum Delphi
    Réponses: 2
    Dernier message: 07/06/2007, 14h26
  5. Date de création de fichiers
    Par bov13 dans le forum VBScript
    Réponses: 27
    Dernier message: 19/09/2006, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo