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 :

Ouverture conditionnelle sur nom de fichier


Sujet :

Macros et VBA Excel

  1. #1
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut Ouverture conditionnelle sur nom de fichier
    Bonjour,

    Nom des fichiers :
    CR866_HISTO_03-07-2008.xls
    CR866_HISTO_03-08-2008.xls

    Il faudrait que je puisse ouvrir un fichier suivant la date du fichier. En l'occurence faut que j'ouvre le fichier le plus recent.

    1/ parcours des fichiers commencant par cr866_histo
    2/ date
    3/ fichier le plus recent, l'ouvrir.

    Merci pour votre reponse.

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    utilise avec DIR dans VBA, regarde l'exemple et tu apprendras comment faire pour trouver tes fichiers.

    Et puis avec RIGHT (ou split puis right) tu extrais ta date , tu la convertis dans un format exploitable (je te laisse trouver comment faire ) pour tester si elle est plus récente ou pas, et tu gardes toujours le nom du fichier le plus récent.

    A la fin de ta boucle (DIR) tu ouvres le fichier mémorisé (le plus récent).

    Facile non ?

  3. #3
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut je vais regarder
    auh...je vais regarder ce que tu me dis mais je suis debutant en vba..c pas bine mon truc la programmation donc bon...je regarde en tout cas la fonction DIR..

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    si tes fichiers se trouvent dans un seul répertoire :
    Parcours donc ce répertoire avec la fonction Dir et le filtre CR866_HISTO_*.xls
    Pour chaque fichier trouvé :
    extrais dans une variable toto sa partie date ( mid(nom-fichier,13,140) ) et compare avec date du fichier précédemment trouvé ===>> si plus grande ==>> dans la variable toto et le nom_fichier dans une variable trouve (si plus petite ===>> tu ne fais rien)
    A la fin de ta boucle, tu auras forcément ton fichier dans la variable trouve.
    Voilà les rails ... ===>> à toi de jouer avec.

  5. #5
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    je vais essayer mais je sens que je vais rien panné..

    Il faudrait que ce soit le repertoire par defaut ou se trouve la macro.

    Je ne connais donc pas l'endroit exaact des fichiers...

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Citation Envoyé par cchampion2fr Voir le message
    auh...je vais regarder ce que tu me dis mais je suis debutant en vba..c pas bine mon truc la programmation
    Voilà justement une opportunité d'apprendre car le forum, ce n'est pas "les resto du code"

    Bonjour ucfoutu.

  7. #7
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    Quand je fais la fonction Myfile, ca me retourne un seul fichier??? il faudrait l'ensemble non?
    Apres pour ma variable toto, c'est en string donc pour coparer pas evident... il me faut la valeur la plus grande.
    Si je passe ma valeur toto en date ou integer, ca bugge...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ouverture()
     
    Dim toto As String
     
    Myfile = Dir("C:\DONNEE\Perso\CR866_HISTO_*.xls")
     
    toto = Mid(Myfile, 13, 140)
     
    End Sub

  8. #8
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Il y a de l'idée, vraiment.
    Tu progresses.

    Tu as cependant lu un peu vite les réponses. Fais TOUT ce qu'on te dit et tu y arriveras.

  9. #9
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    je ne comprends pas comment je peux comparer 2 fichiers si je ne peux en avoir qu'un seul dans ma variable toto!

    et en plus c en string...???

  10. #10
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Relis les réponses.

    tout y est.

    Dans l'aide de DIR (ma réponse) on parle de boucle.

    Ucfoutu t'a expliqué comment faire ton code. tout y est.

    S'il manque quelquechose, regarde les exemples dans le forum ou dans la faq.

    C'est en codant qu'on devient ...... capable de le faire seul.

  11. #11
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    desole mais je vois bien de quoi tu parles mais je ne comprends pas trop coment faire avec la fonction DIR et apres faire la boucle sur le test de la date qui est en string.

    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
    25
    26
    27
    28
    29
    Sub ouverture()
     
     
    Dim toto As String
     
     
    ' Affiche les noms dans C:\ représentant des dossiers.
    MyPath = "C:\DONNEE\Perso\"    ' Définit le chemin d'accès.
     
    Myname = Dir(MyPath, vbDirectory)    ' Extrait la première entrée.
    Do While Myname <> ""    ' Commence la boucle.
        ' Ignore le dossier courant et le dossier
        ' contenant le dossier courant.
        If Myname <> "." And Myname <> ".." Then
            ' Utilise une comparaison au niveau du bit pour
            ' vérifier que MyName est un dossier.
            If (GetAttr(MyPath & Myname) _
                And vbDirectory) = vbDirectory Then
                Debug.Print Myname    ' Affiche l'entrée uniquement si elle
            End If    ' représente un dossier.
        End If
        Myname = Dir    ' Extrait l'entrée suivante.
     
     
        toto = Mid(Myfile, 13, 140)
    Loop
     
     
    End Sub

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par cchampion2fr Voir le message
    (((( personne...

    je dois le rendre demain et je bloque la dessus...comprends la demarche ecrite mais je suis perdu avec le nom des fichers a parcourir un à un et la fonction DIR..rien ne marche!
    Bon...
    Si tu "dois le rendre demain", c'est qu'il s'agit d'un exercice (pour t'évaluer, pas pour m' évaluer)....
    Je veux bien m'y mettre, mais ce sera la toute dernière fois (car tu avais tout pour y parvenir) :

    1) regarde le nom de tes fichiers : on va s'en sortir sans même extraire la date du fait qu'ils se terminent tous par ....._jj-mm-aaaa.xls, ce qui fait que si on lit la chaine à l'envers, on peut tout simplement faire une comparaison alphabétique
    2) on va utiliser dir, mais pas "au hasard", comme tu l'as fait, en recopiant sans rien comprendre ou essayer de comprendre un exemple qui allait à la pêche de .... sous-répertoires !!!

    Voilà donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim monrep As String, monfiltre As String, monfic As String, trouve As String
      monrep = "c:\a virer\essai" ' <<<<==== mets ici ton répertoire à toi, hein ....
      monfiltre = "CR866_HISTO_*.xls"
      trouve = ""
      monfic = Dir(monrep & "\" & monfiltre, vbNormal Or vbHidden)
      Do While monfic <> ""
         If strrev(monfic) > strrev(trouve) Then trouve = monfic
         monfic = Dir
      Loop
      MsgBox "voilà le fichier cherché " & monrep & "\" & trouve
    Puis-je maintenant te faire remarquer un petit point ?
    En réfléchissant un peu avant de nommer tes fichiers et compte tenu de ce que tu voulais en faire, tu aurais nommé tes fichiers sous la forme CR866_HISTO_AAAA-MM-JJ, qui nous aurait permis de faire l'économie de l'utilisation de la fonction StrRev !!!!
    Le développement est souvent avant tout une affaire de réflexion..
    Par honêteté, tu devrais (c'est évident) signaler à ton correcteur que tu as été aidé...

    Edit :
    Excuse-moi ... En lisant la chaîne à l'envers, on va se heurter au fait que septembre va devenir 90 et sera donc plus grand que décembre (21 ) l'envers)... Tu vois l'intérêt d'utiliser la forme AAAA-MM-JJ ? Nous n'aurions pas besoin d'extraire et la comparaison alphabétique directe était bonne telle quelle !!!

    Bon ... on extrait la date ... machine arrière toute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim monrep As String, monfiltre As String, monfic As String, trouve As String, date0 As Date, ladate As Date
      monrep = "c:\a virer\essai" ' <<<<==== mets ici ton répertoire à toi, hein ....
      monfiltre = "CR866_HISTO_*.xls"
      trouve = "": date0 = DateValue("01/01/1980")
      monfic = Dir(monrep & "\" & monfiltre, vbNormal Or vbHidden)
      Do While monfic <> ""
         ladate = DateValue(Replace(Mid(monfic, 13, 10), "-", "/"))
         If ladate > date0 Then
           trouve = monfic
           date0 = ladate
         End If
         monfic = Dir
      Loop
      MsgBox "voilà le fichier cherché " & monrep & "\" & trouve

  13. #13
    Débutant
    Inscrit en
    Septembre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    ok merci.
    en fait c'est pour le travail mais je ne suis aps un pro de la programmation...
    donc j'apprends sur le tas mais avec des delais à respecter..

    ca marche ta comparaion de date , cool!

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

Discussions similaires

  1. [XL-2007] Lien hypertexte sur nom de fichier incomplet
    Par zoilgust dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 29/11/2013, 14h18
  2. [Débutant] Tri sur noms de fichiers
    Par Invité dans le forum C#
    Réponses: 1
    Dernier message: 27/03/2013, 10h08
  3. Filtre sur nom de fichier
    Par Pgs dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 12/09/2010, 11h27
  4. indirection sur nom de fichier/rubrique ?
    Par scarface38 dans le forum WinDev
    Réponses: 2
    Dernier message: 09/03/2009, 09h47
  5. séparation d'extension sur nom de fichier
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/02/2008, 22h50

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