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 :

Activer un classeur ouvert manuellement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut Activer un classeur ouvert manuellement
    Bonjour à tous,

    Afin de générer une macro de copie des données d'un classeur à un autre, je n'arrive pas à sélectionner (activer) un classeur lorsque celui-ci est ouvert manuellement. J'ai lu sur divers sites que excel différenciait les classeurs ouverts manuellement, et ceux ouverts à l'aide d'une macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Dim wb_classeur_donnees As Workbook
        Dim wb_classeur_cible As ThisWorkbook
     
    '(ICI UNE MACRO QUI M'OUVRE UN CLASSEUR VIA EXPLORATEUR)
     
            wb_classeur_donnees.Activate
            Rows(var_arbo_debut + 1 & ":" & var_arbo_fin).Select
            Selection.Copy
            'wb_classeur_cible.Activate 
            'ThisWorkbook.Activate
            [A200].Select
            ActiveSheet.Paste
    Classeur donnees étant un fichier ouvert à l'aide de la macro via l'explorateur windows, et classeur cible un fichier excel ouvert manuellement et comportant 4 feuilles.

    En bidouillant un peu, j'arrive à naviguer jusqu'au Workbook "PERSO" (celui ou sont mes macros) mais pas à ce que je veux...

    Merci d'avance!
    Benjamin

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut
    Bonjour,

    La macro est lancée depuis quel classeur ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    que le classeur soit ouvert par macro, ou manuellement, ils sont pilotés de la même manière dans une macro

    je comprend pas bien la raison d'être de ta variable wb_classeur_cible

    tu la type en "ThisWorkbook", cela n'a pas d'intérêt

    ThisWorkbook représente le classeur qui contient la macro qui tourne.

    donc on peut simplifier tout ça, et sans activer les classeurs

    je pars du principe que wb_classeur_donnees est le classeur qui contient les données sources
    wb_classeur_cible reçoit les données

    En gros ça ressemblerait (à adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub toto()
    Dim wb_classeur_donnees As Workbook
    ' ouverture de wb_classeur_donnees par macro
    wb_classeur_donnees.Rows(var_arbo_debut + 1 & ":" & var_arbo_fin).Copy ThisWorkbook.ActiveSheet.Range("A200")
    End Sub
    La copie est réalisée dans la feuille active du classeur qui contient les macro

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut
    J'ai un classeur (celui que j'ouvre et qui doit contenir les données), et un autre qui contient les macros (masqué), j'ai inséré la fonction dans mon classeur qui contient les données, afin de ne pas avoir à l'activer via le Workbook.

    En utilisant le code, j'obtiens l'erreur 438: Propriété ou méthode non gérée par cet objet.

    Benjamin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    wb_classeur_donnees.Activate
            Rows(var_arbo_debut + 1 & ":" & var_arbo_fin).Select
            Selection.Copy
            ThisWorkbook.Activate
            [A4].Select
            ActiveSheet.Paste
    En utilisant ce code, j'arrive bien à copier mes données de mon fichier source vers mon fichier de destination, mais la macro doit être dans le fichier de destination...

    Benjamin

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut
    Tu peux mettre tes macros dans le fichier source en faisant sélectionner le fichier de destination par l'utilisateur par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Application.FileDialog(msoFileDialogOpen)
       .AllowMultiSelect = False
       If .Show = 0 Then Exit Sub
       nom = .SelectedItems(1)
    End With
    puis en l'ouvrant (il ne faut pas qu'il soit déjà ouvert!) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wb = Workbooks.Open(nom)
    et en faisant ensuite ta recopie de la même manière que ci-dessus

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/09/2012, 08h16
  2. Activer un classeur ouvert sans connaitre son nom
    Par djjilou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2012, 17h47
  3. activer un classeur ouvert sans connaitre son nom
    Par touriste01 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 24/02/2011, 09h05
  4. [VBA-E] Probleme avec l'activate d'un classeur ouvert pour un copy paste
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/08/2006, 22h31
  5. [VBA-E] activer un classeur et rendre une page visible
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2006, 14h34

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