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 :

Ligne de commande sélection fichiers ouverts avec nom aléatoire


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Ligne de commande sélection fichiers ouverts avec nom aléatoire
    Bonjour tout le monde !

    J'ai dans le cadre de mon travail mis en place une fichier d'analyse.
    La macro de ce fichier utilise des fichiers de notre système, générés en xls et une fois générés, sauvegardés dans un repertoire précis.

    Ce que je souhaiterais, c'est pouvoir m'abstenir de devoir sauvegarder ces fichiers dans un emplacement précis, et permettre à ma macro de les sélectionner une fois générés par le système et encore actifs sous Excel. Genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Windows("xxxx.xls").Activate ==> "xxx.xls" étant le fichier généré par notre système
    Range (A1:O52").Select
    Selection.Copy
    Windows("yyy.xls").Activate ==> Fichier contenant ma macro
    Sheets("aaa").Select
    ActiveSheet.Paste
    Windows("xxxx.xls").Activate
    ActiveWindow.Close
    Le problème étant que les trois fichiers générés ont un nom aléatoire commençant toujours par "simdd" pour le premier, "histovl" pour le second et "hisdvd" pour le troisième suivis de caractères alphanumérique aléatoire.

    Je suis bloqué

    D'avance merci pour votre aide.

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    L'objet Range a une méthode copy qui évite d'avoir à faire successivement "Select, Copy, Paste".
    EN ce qui concerne ta question, il faudrait savoir si les classeurs XL que tu veux instancier sont ouverts dans une application qui réside sur ta machine, s'il y en a une ou plusieurs, et si c'est la même que celle du classeur qui contient le code que tu veux mettre au point, et enfin s'il peut aussi y avoir d'autres classeurs XL ouverts, qui n'ont rien à voir avec ton pb.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour PGZ,

    Merci pour le début de réponse.

    Les fichiers générés par le logiciel du boulet sont ouverts par défaut dans la même application Excel que mon fichier contenant la macro.
    Oui, il peut y avoir d'autres classeurs ouverts en même temps.

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Si les classeurs sont ouverts dans la même application que celle du classeur qui contient ton code, tu peux trouver tous ces classeurs dans la collection Workbooks.
    Par contre, s'il peut y en avoir d'autres, il faut pouvoir reconnaître les "bons". Les classeurs que tu cherches ont-ils un signe distinctif?

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Re,

    Oui. Chacun des classeur a un nom différent dont le début est fixe et le reste variable. Genre histovllkaz20100226.xls ==> "histovl" étant la partie fixe le reste étant les initiales du user ainsi que la date de lancement du rapport.
    Les deux autres rapports commencent par "simdd" et "hisdvd". La partie variable ayant la même structure que mon premier exemple.

    Merci encore pour le temps pris pour m'aider !

  6. #6
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Alors ce n'est pas trop difficile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim wbk as Excel.Workbook
    for each wbk in Application.Workbooks
        If wbk.name like "histovl*" then
            'en voilà un
            wbk.Worsheets("NomFeuille").Range("...").copy Thisworkbook.Worksheets("...").Range ("...")
        Elseif wbk.name like "hisdvd*" Then
            'en voilà un autre
            ....
        Elseif wbk.name like "simdd*" then
            'le dernier
            ...
        End if 'les autres ne nous intéressent pas
    next wbk
    Tu vois l'idée?

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    M-A-G-N-I-F-I-Q-U-E !!!

    Je te remercie.

    Je vois très bien l'idée. J'hésitais car ne maîtrise pas encore assez bien VBA.
    Je vais tester ça de suite ^^

    Bonne fin de journée à toi ^^

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/08/2014, 11h11
  2. [DATA] Importation d'un fichier plat avec nom de colonnes en lignes
    Par Invité dans le forum SAS Base
    Réponses: 3
    Dernier message: 21/12/2011, 12h49
  3. [XL-2010] Sélection d'une cellule vide dans un fichier "ouvert" avec GetOpenFilename
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/12/2010, 14h40
  4. Réponses: 4
    Dernier message: 14/08/2009, 12h22
  5. [DOS] Execution de fichier simultané avec nom aléatoire
    Par noabeuh dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 04/03/2007, 14h47

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