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 le dernier fichier Excel enregistré


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut Ouvrir le dernier fichier Excel enregistré
    Bonjour,
    Depuis quelques jours je développe sous VBA pour Excel.
    Avec Internet j'ai réussi à trouver énormément d'information mais cela prend du temps.
    Voici donc mon problème :
    J'ai un fichier qui contient 4 onglets dans lesquels l'utilisateur doit importer des données venant de Business Object.
    Ces données sont utilisées pour le calcul de productivité des employés. J'ai plusieurs problèmes :

    • j'ai utilisé l'enregisteur pour convertir les colonnes des 4 onglets. Maintenant l'action est plus rapide. Le soucis avec l'enregisteur c'est que si pour un besoin quelconque il faut rajouter une colonne, ma macro ne fonctionne plus. Comment faire en sorte de convertir que les colonnes non vides?


    • Ensuite comment masquer les lignes ne contenant que des "0" en sachant que les 5 première colonnes ont toujours des données (nom, prénom, log, nom du responsable ...)?


    • Je dois aussi, dans ce fichier insérer des données d'un autre fichier excel qui change tous les jours. Le nom du fichier est du type "stats 22-11-2007". comment puis-je faire pour ouvrir le fichier de la veille (donc le dernier fichier enregistré).
      Pour cela il faut que le fichier de la veille soit bien présent.
      J'arrive à ouvrir le fichier du 22 novembre, mais demain ce sera le même puisque le nom du fichier est fixe dans le chemin : ("\\nomduserveur\Services\nomduservice\Reporting\Reporting PJ\Historique J-1\stats 22-11-2007.xls"]


    Merci de votre aide ...
    En attendant je continue mes recherches.

    GalJin

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NomDuDernierFichierEnregistré = _
         Application.RecentFiles(1).Name
    Par contre, celà ne te donne pas le chemin. Pour l'avoir, j'ai vu le code passer sur le forum cette semaine. Je regarde mais je ne promets rien
    A+

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Merci pour le code ouskel'n'or, je peux effectivement ouvrir le dernier fichier enregistré. J'ai testé en enregistrant un autre fichier et c'est bien ce dernier qui s'est ouvert.
    Maintenant, comment vérifier que le dernier fichier enregistré a bien été enregistré aujourd'hui? Car si le fichier requis ne contient pas les données de la veille, cela ne sert à rien.

    Je continue mes recherches pour ne convertir que les colonnes qui ont des données et masquer les lignes qui contiennent que des 0 à partir de la 6 ème colonne.

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonour,

    recherche du coté de
    FileDateTime

    cordialement

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Petite information supplémentaire :
    J'ai créé, sur la base du fichier d'hier, un fichier avec la date d'aujourd'hui pour voir si celui-ci était pris en compte. Cela marche très bien.
    J'ai supprimé ce fichier et lorsque je lance la macro il me demande le fichier que j'ai supprimé.

    La question est la suivante : où a été enregistré le nom du fichier et comment supprimer ce nom de la mémoire d'Excel?

    Merci d'avance.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux faire ça en dévalidant l'option DisplayRecentFiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayRecentFiles = False
    Ce qui aura pour effet de supprimer tous les noms de la liste
    Ensuite, tu remets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Application
      .DisplayRecentFiles = True
      .RecentFiles.Maximum = Le nombre que tu veux de 1 à 9
    End With
    Malheureusement je ne pense pas que tu puisses renseigner RecentFiles(n) du nom des fichier effacés sauf le dernier et donc tu n'auras plus rien dans ta liste.
    C'est toi qui vois
    A+

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Merci pour cette précision ouskel'n'or, c'est exactement ce que je voulais.

    Je continue toujours mes recherches sur :
    comment masquer le lignes qui sont vides à partir de la colonne n°5 de mon tableau?

    Bonne soirée.

    GalJin

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NomDuDernierFichierEnregistré = _
         Application.RecentFiles(1).Name
    Par contre, celà ne te donne pas le chemin. Pour l'avoir, j'ai vu le code passer sur le forum cette semaine. Je regarde mais je ne promets rien
    A+
    Bonjour,
    Une question à propos du code ci-dessus : est ce qu'il le dernier fichier utilisé est celui de la liste Recent files de Windows ou le dernier fichier enregistré dans le dossier que j'ai indiqué? Car depuis vendredi soir ma macro ne fonctionne plus et j'ai une erreur d'exécution code 9 : l'indice n'appartient pas à la sélection.

    pour ce qui est des lignes vides, le code fonctionne

    Je vais suivre la piste du FileDateTime ...

    Je vous tiens au courant.

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    En fait, comme je ne trouve pas de réponse à mon problème, j'ai décidé de faire autrement :
    En fait dans une cellule j'ai tapé la formule "=AUJOURDHUI()"
    Dans une autre cellule j'ai tapé le texte "Stats employés"
    Dans une 3ème et dernière cellule j'ai écrit : "=CONCATENER(Q2;" ";Q3)".
    Le problème est que cela me donne le résultat suivant : stats employés 37952.
    Dans la macro j'ai déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MaDate
        MaDate = [Q2]
    ChDir _
            "\\Serveur\Services\Management\Reporting\Historique employes J-1" & Range("J5").Text & Format(MaDate, "dd-mm-yyyy")
    Mes question sont les suivantes :
    - comment convertir le résultat "stats employés 37952" en "stats emplyés 28-11-2007"?
    - comment insérer le nom du fichier (qui change tous les jours) dans ma macro?

    Merci par avance pour votre aide.
    En attendant je continue mes recherches ...

  10. #10
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour

    formate la date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     maDate = format(Date,"dd-mm-yy")
    cordialement

  11. #11
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Bonjour,
    En fait voici la solution que j'ai trouvé :

    Le problème que j'avais été d'ouvrir le fichier des stats employés de la veille pour en extraire certaines données. La date me posait un problème car lorsque je concatenais le nom du fichier avec celui de la date, la date était au format 37992.
    Voici donc le code qui m'a permis de résoudre mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim MaDate ' déclaration de la variable MaDate
        Dim Fichier As Variant ' Déclaration de la variable Fichier
        Chemin = "\\NomDuServeur\Services\NomDuService\Reporting\Reporting PJ\Historique employés J-1\" ' déclaration du chemin où se trouvent archivées les données
        MaDate = Range("J2").Text ' dans la cellule J2 je déclare la date du jour - 1
        Fichier = "Stats employés " & MaDate & ".xls"
    Workbooks.Open Filename:= _
        Chemin & Fichier, _
        UpdateLinks:=0
    Auparavant je vérifie que le fichier utilisé ne soit pas ouvert et si c'est le cas, je le ferme sans enregistrer les changements par le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each WB In Workbooks
                If WB.Name = Fichier Then
                    Windows(Fichier).Activate
                    Workbooks(Fichier).Close SaveChanges:=False
                End If
              Exit For
             Next WB
    Mais là j'ai un problème car hier ça fonctionnait très bien, le fichier ouvert était fermé. Mais aujourd'hui, le fichier était ouvert et j'ai eu une erreur d'exécution me signalant que le fichier était déjà ouvert et qu'il devait être fermé.

    Comment puis-je faire?

Discussions similaires

  1. ouvrir le dernier fichier enregistré
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2010, 14h18
  2. Fermer le processus du dernier fichier Excel ouvert
    Par azertix dans le forum VBA Access
    Réponses: 12
    Dernier message: 27/06/2008, 15h34
  3. Ouvrir le dernier fichier cree ?
    Par M4tthieu dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/06/2007, 19h27
  4. Ouvrir directement un fichier Excel avec un bouton bascule
    Par The_Super_Steph dans le forum VBA Access
    Réponses: 8
    Dernier message: 14/05/2007, 11h02
  5. Réponses: 2
    Dernier message: 16/12/2006, 12h34

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