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 :

Nom de fichier variable sur VBA


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
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut Nom de fichier variable sur VBA
    Bonjour,

    J'ai besoin dans le cadre de mon travail de mettre à disposition de mes collègues un fichier qui permet de réaliser une extraction d'un fichier vers un autre.
    Ci-dessous le code en VBA (il y a surement à redire c'est mon premier VBA).
    Seulement mes collègues risque de modifier le nom du fichier source et le nom du fichier de destination.

    Comment mettre le nom du fichier en variable sachant que "extraction seirich.xlsx" est le nom du fichier ouvert précédemment par sub Ouvre() et que Outils "rapport risque chimique.xlsm" est le fichier d'où est exécuté la macro?

    Merci beaucoup pour votre aide !


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub Ouvre()
    Dim wbMyWb As Workbook
    Dim Nom_Fichier As Variant
     
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx")
    If Nom_Fichier <> False Then
       Set wbMyWb = Workbooks.Open(Nom_Fichier)
      wbMyWb.Activate
     
    End If
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Produits").Select
        Sheets("Produits").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(2)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Substances").Select
        Sheets("Substances").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(3)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Zones").Select
        Sheets("Zones").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(4)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Tâches").Select
        Sheets("Tâches").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(5)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Produit dans une zone").Select
        Sheets("Produit dans une zone").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(6)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Agent chimique dans une zone").Select
        Sheets("Agent chimique dans une zone").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(7)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Produit dans une tâche").Select
        Sheets("Produit dans une tâche").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(8)
     
        Windows("Extraction seirich.xlsx").Activate
        Sheets("Agent chimique dans une tâche").Select
        Sheets("Agent chimique dans une tâche").Move After:=Workbooks("Outils rapport risque chimique.xlsm").Sheets(9)
     
        Sheets("Feuil2").Select

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Déjà pour le classeur contenant le code utiliser sa référence ThisWorkbook (cf aide VBA interne) …

    Pour les deux autres leur associer une variable de type Workbook, cf aide VBA des instructions Set et Dim

    Et libérer ces variables via Nothing en fin de procédure.

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour votre réponse mais je suis un peu à la rue car je débute.
    Avez vous un exemple à me proposer pour que je puisse comprendre?

    Merci beaucoup

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Et les exemples pourtant dans l'aide VBA ?

    Parmi les tutoriels de ce forum :   Utiliser les variables en VBA Excel   …

    Sinon dans ton code les lignes de code comme la n°13 ne servent à rien si ce n'est à ralentir la procédure : à supprimer !

    Pour les lignes comme la n°14, en indiquant devant la feuille son classeur comme pour le paramètre After,
    les lignes comme la n°12 sont aussi inutiles !

    Enfin en sélectionnant les feuilles ensemble, elles peuvent être déplacées globalement en une seule instruction !
    En activant l'Enregistreur de macro puis en opérant la manipulation, une base de code est livrée sur un plateau !
    En la postant ensuite ici, on pourra la corriger afin d'éviter la sélection en opérant directement sur les feuilles …

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut
    J'ai trouvé merci beaucoup !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2015, 09h07
  2. [VBA]-Enregistrement d'un nom de fichier variable
    Par marc56 dans le forum Excel
    Réponses: 2
    Dernier message: 10/08/2007, 08h54
  3. Ouvrir fichier ( nom du fichier variable )
    Par kilian dans le forum C++
    Réponses: 2
    Dernier message: 24/05/2006, 11h21
  4. Nom de fichier variable!
    Par melphit dans le forum C++
    Réponses: 1
    Dernier message: 16/04/2006, 10h37
  5. Nom de fichier variable.
    Par ::Fistons dans le forum Langage
    Réponses: 4
    Dernier message: 05/04/2006, 11h32

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