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 :

Activation d'un autre classeur déjà ouvert [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut Activation d'un autre classeur déjà ouvert
    Bonjour,

    Je cherche a récupérer certaines données d'un classeur pour les insérer dans un autre. Je dois tout d'abord effectuer une requête de tri dans le classeur source avant d'en récupérer les données. Cependant je n'arrive pas a l'activer.

    Voici mon code, situé dans le classeur destination :
    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
     
    Private Sub STL()
        Dim appExcel As Excel.Application
        Dim wbExcel As Excel.Workbook
        Dim wsExcel As Excel.Worksheet
        Dim Path As String 
        'Dim RSE As Integer                  'Dernière ligne du fichier source
        'Dim CSE As Integer                  'Dernière colonne du fichier source
     
     
        Path = Application.GetOpenFilename("Nom fichier,*.xls")
        Set appExcel = CreateObject("Excel.Application")
        Set wbExcel = appExcel.Workbooks.Open(Path)
        Set wsExcel = wbExcel.Worksheets(1)
     
        'RSE = wsExcel.Range("A65536").End(xlUp).Row
        'CSE = wsExcel.Range("IV1").End(xlToLeft).Column
     
        wbExcel.Activate       '=> Probleme : wbExcel ne s'active pas !!!!!!
        MsgBox (ActiveWorkbook.Name)
     
        'ActiveWorkbook.Cells(RSE, CSE).Select
        'Range(Selection, "A1").Select
        'puis requête de tri
     
        '(...)
     
        wbExcel.Close False
        Set wsExcel = Nothing
        Set wbExcel = Nothing
        appExcel.Quit
        Set appExcel = Nothing
    End Sub
    Dans la Msgbox s'affiche le nom du fichier destination (ThisWorkbook) alors que je souhaiterais obtenir le nom du fichier source (wbExcel).

    Merci de m'avoir lu et merci pour votre aide,
    Sébastien

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé 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 : 72
    Localisation : France

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

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

    Peut-être en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppExcel.Visible = True
    ?

    PGZ

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Merci pour ta réponse PGZ. j'ai placé cette ligne de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AppExcel.Visible = True
    wbExcel.Activate
    MsgBox (ActiveWorkbook.Name)
    Rien à faire, il ne me renvoie toujours pas le nom du fichier que je veux activer.

    Sébastien


    Edit : Ça t'aide si je te dis que ce code est placé dans un module ?

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,

    Pourquoi passer par un activate s'il pose problème alors qu'il parfaitement possible de le supprimer? (il faudra virer tous les select qui vont suivre mais tu verra c'est une bonne habitude a prendre)
    Bon dans ton cas il va sans doute faloir retravailler un peux les choses mais bon
    essaye quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbExcel.Range(Cells(RSE, CSE),"A1").CeQueTuVeux

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Bonjour,

    J'essaie de faire un tri sans passer par Select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim RSE As Integer
    Dim CSE As Integer
    Dim CTS as String
     
    wsExcel.Range(Cells(RSE, CSE), "A1").Sort _
    Key1:=Range(CTS & "1", CTS & RSE), Order1:=xlDescending
    J'obtiens une erreur 1004 : Method 'Range' of Object '_Worksheet' failed
    Je précise que l'objet wsExcel fonctionne sans problème dans les précédentes lignes de code.

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour sans pouvoir tester précise le classeur et la feuille popur chaque range (la feuille c'est un oublie de ma part)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wsExcel.worksheets("NomFeuille").Range(Cells(RSE, CSE), "A1").Sort _
    Key1:=wsExcel.worksheets("NomFeuille").Range(CTS & "1", CTS & RSE), Order1:=xlDescending
    Par contre je doute que CTS soit bien al lettre qui corespond a la colonne et non le numéro. je te laisse vérifier si c'est le numéro de colonne utilise cells

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(wsExcel.worksheets("NomFeuille").cells(1,CTS), wsExcel.worksheets("NomFeuille").cells(RSE,CTS)),
    Comme tu le voi l'criture devient lourde je te conseil l'utilisation utilise un with

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 13/08/2010, 10h07
  2. [XL-2003] Fermeture d'un classeur "sans croix active" depuis un autre
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/07/2010, 09h55
  3. Réponses: 29
    Dernier message: 21/10/2008, 17h36
  4. Réponses: 5
    Dernier message: 01/07/2008, 14h30
  5. [VBA-E] copier une fiche active dans un autre classeur.
    Par Little-Freud dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 15/03/2006, 10h51

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