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 un classeur en variable [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut Ouvrir un classeur en variable
    Bonjour à tous,

    Je travaille sur la réalisation d'une Macro VBA. Le but est de travailler sur deux classeurs, le classeur A étant déjà ouvert et le classeur B qui doit être ouvert par l'utilisateur, et de pouvoir passer d'un classeur à l'autre grâce au code VBA.
    À ce titre j'entre une variable pour le nom de mon classeur B (puisqu'en fonction du classeur choisi, le nom de celui-ci peut varier). Cependant, une fois que j'essaye de retourner sur ce classeur B la variable ne semble pas être reconnue.


    Peut-être que mon code sera plus explicite:

    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
    Sub Ouvrir
     
    Application.Dialogs(xlDialogOpen).Show             -------> ouverture du classeur B
    Dim M1 As Workbook                                     
    Set M1 = ThisWorkbook
     
    End Sub
     
    Sub test
     
    Workbooks(M1).Activate                       -----> la ou ça coince
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "test"
     
     
    End Sub
    merci pour vos réponses

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Tu déclares M1 dans la Sub Ouvrir.
    Seule cette Sub va reconnaître cette variable. La Sub Test n'a aucune idée de ce qu'est M1...
    Si tu la déclares en entête de module, elle sera reconnue par les 2 sub

    Et ne pas oublier que ThisWorkbook est le classeur qui contient ces macros...

  3. #3
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut
    Merci pour ces réponses

    Pourrais-tu me détailler un peu plus amplement la démarche à suivre? La variable M1 doit être contenue dans la "Sub Ouvrir" puisqu'elle fait suite à l'ouverture du classeur Excel par l'utilisateur n'est-ce pas? Ou dois-je la placer pour qu'elle soit reconnue par les autres Sub?

    Pourrais-tu également me dire quoi mettre à la place de ThisWorkbook?

    @PMO2017 : Merci pour cette réponse, cependant quand je copie colle le code dans la Macro, la partie 'Option Explicit Dim M1 As Workbook' n'est contenue dans aucune Sub donc il me l'insère directement dans la Sub précédente et le problème persiste. Avez vous une solution?

    Danke schon!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
     
    Dim M1 As Workbook    '///mettre ici pour une portée de variable au niveau Module
     
    Sub Ouvrir()
    Application.Dialogs(xlDialogOpen).Show
    Set M1 = ActiveWorkbook '///
    End Sub
     
    Sub test()
    M1.Activate   '///
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "test"
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut
    D'accord il suffisait de copier la partie en question au début du module.

    Merci à vous,

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

Discussions similaires

  1. ouvrir un classeur excel à partir d'un nom variable
    Par abu143 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/10/2006, 21h53
  2. [vba-excel] ouvrir des classeurs excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2006, 15h28
  3. [vb6]ouvrir un classeur excel
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/09/2006, 10h33
  4. Excel Comment ouvrir un classeur à la Feuil1
    Par Lexot2 dans le forum Excel
    Réponses: 4
    Dernier message: 30/08/2006, 11h45
  5. [VBA-E]PB attribuer classeur à une variable
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/07/2006, 17h05

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