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 :

Ouvrir ou non un fichier en fonction de la date d'enregistrement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Rédacteur technique
    Inscrit en
    Octobre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 5
    Par défaut Ouvrir ou non un fichier en fonction de la date d'enregistrement
    Bonjour,

    j'ai une macro qui ouvre tous les fichiers d'un dossier un par un et qui récupère des données pour les comparer et les copier dans une feuille "Bilan".
    Dans cette feuille j'ai comme info le chemin d"accès avec nom du fichier et la date d'enregistrement de ce fichier.
    Le dossier commence à être bien rempli cette macro dure maintenant une vingtaine de minutes.
    J'aimerai au lieu d'ouvrir un par un les fichiers qu'elle n'ouvre que ceux qui ne sont pas la feuille "Bilan" et dont la date d'enregistrement et identique à celle écrite dans la feuille "Bilan".
    Jusqu'à présent je n'ai réussi qu'à n'ouvrir que les fichiers non renseignés dans la feuille " Bilan" mais le problème c'est que je n'arrive pas à prendre en compte la date d'enregistrement.
    (cette macro est utilisé plusieurs fois par jour d'où l'importance de réduire son temps de fonctionnement)
    Si ce n'est pas assez clair ou qu'il faut plus de détail n'hésitez à me le dire.

    Si quelqu'un a une idée je lui en serai très reconnaissante , Merci par avance.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Afin que le forum puisse mieux t'orienter, le plus simple serait que tu soumettes un code en soulignant le(s) point(s) d'achoppement.

    Si 2 dates sont à comparer au sein du classeur, cette action ne devrait pas proposer de problème.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Rédacteur technique
    Inscrit en
    Octobre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 5
    Par défaut
    Bonjour,
    Ce n'est pas moi qui ai développé ce code, je débute en VBA mais je dois l'améliorer pour gagner du temps donc j'ai pensé qu'en arretant d'ouvrir à chaque fois tous les fichiers on aurait un gain de temps non négligeable.

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Coucou Phénix,

    J'oublais. Bienvenue sur le Forum.

    Ci-dessous une procédure générique argumentée par
    - le nom du répertoire à tester
    - l'extension souhaitée ("xls", "xlsx","xlsm")
    - la date de dernière modification. Ici 10/12/19

    NE PAS OMETTRE D'ACTIVER LA REFERENCE MICROSOFT SCRIPTING RUNTIME

    La procédure argumentée

    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
    Public Sub ouvrir_FichierDate(lerépertoire As String, extension As String, datemodif As Date)
     
    Dim objFso As Object
    Set objFso = CreateObject("Scripting.FileSystemObject")
     
    Dim fichier As Scripting.file
    Dim s As Variant
     
    For Each fichier In objFso.GetFolder(lerépertoire).Files
            s = Split(fichier.Name, ".")
            If InStr(s(1), extension) > 0 Then
                            'Debug.Print Format(fichier.DateLastModified, "dd/mm/yy") & " / " & fichier.Name
                            If Format(fichier.DateLastModified, "dd/mm/yy") = Format(datemodif, "dd/mm/yy") Then
                                    'Remolacement des caractères parasites dans l nom du fichier
                                    Workbooks.Open Filename:=Replace(fichier.Path, "~$", "")
                            End If
            End If
    Next fichier
     
    Set objFso = Nothing
     
    End Sub
    Exemple d'utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub Ouvre_fichier_sidate()
    Dim lerép As String
    lerép = "lenomcomplet du répertoire"
    Dim lextension As String
    'Pour ".xls",  "xlsx","xlsm
    lextension = "xls"
    Call ouvrir_FichierDate(lerépertoire:=lerép, extension:=lextension, datemodif:=CDate("10/12/19"))
    End Sub
    Bien entendu, à adapter.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Rédacteur technique
    Inscrit en
    Octobre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 5
    Par défaut
    Merci MarcelG , je vais essayer ça.

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour Marcel
    Citation Envoyé par MarcelG Voir le message
    NE PAS OMETTRE D'ACTIVER LA REFERENCE MICROSOFT SCRIPTING RUNTIME
    Je suis surpris du mélange LateBinding / EarlyBinding dans ta procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim objFso As Object
      Set objFso = CreateObject("Scripting.FileSystemObject")
    Dim fichier As Scripting.file
    En LateBinding, on peut se passer d'activer la référence, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim objFso As Object
    Dim fichier As Object
      Set objFso = CreateObject("Scripting.FileSystemObject")
    Et en EarlyBinding la référence est indispensable, il est préférable d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim objFso As Scripting.FileSystemObject
    Dim fichier As Scripting.file
      Set objFso = New Scripting.FileSystemObject

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour au Forum,

    Bonjour Patrice,

    Merci pour ton observation.

    Je le reconnais, les notions d'EarlyBinding et LateBinding ne me sont pas - pour le moins - familières.

    Un espace documentaire à ce sujet? Je vais regarder.

Discussions similaires

  1. Ouvrir un fichier en fonction de la date
    Par Bastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2009, 17h49
  2. Supprimer des fichiers en fonction de la date sous DOS
    Par charlix dans le forum Windows
    Réponses: 0
    Dernier message: 21/03/2008, 08h18
  3. suppression fichier en fonction d'une date
    Par kalyparker dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 02/07/2007, 14h19
  4. Script de suppression de fichiers en fonction de la date
    Par yellow174 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 06/02/2006, 11h57

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