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 :

[VBA-E] travailler sur deux classeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut [VBA-E] travailler sur deux classeurs
    bonjourà tous,

    je dois recopier à partir d'un fichier excel, F1, des plages de tableaux sur un autre fichier Excel, F2. Pour cela, je dois ouvrir les deux fichiers pour travailler dessus. Mais deja a cette étape, j'ai un pb. voici mon code :
    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
     
    Private Sub CommandButton1_Click()
    Dim objWorkbookSource As Workbook
    Dim objWorbookCible As Workbook
     
    Set xlapp = New Excel.Application
     
    objWorkbookSource = xlapp.Workbooks.Open("C:\Test\Test.xls")
    objWorbookCible = xlapp.Workbooks.Add
     
    objWorbookCible.Worksheets(2).Cells(1, 1) = objWorkbookSource.Worksheets(1).Cells(1, 1)
     
    objWorkbookSource.Close
    objWorbookCible.Close
     
    End Sub
    j'ai eu erreur dès "objWorkbookSource = xlapp.Workbooks.Open("C:\Test\Test.xls")", une erreur du type '91', variable objet non defini. Une idées, cela vien t il de "xlapp" ?
    Merci pour votre aide


  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Pourquoi tu utilises tout ce chariabia pour ouvrir un Classeur ?

    Essaye comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
    dim F1,F2 as string
    F1 = activeworkbook.name    'ici il faut mettre le classeur d'ou tu lance ta macro
    Workbooks.Open "C:\Test\Test.xls"
    F2 = activeworkbook.name
     
     
    F2.Worksheets(2).Cells(1, 1) = F1.Worksheets(1).Cells(1, 1)
     
    F1.Close
    F2.Close
     
    End Sub
    Après a toi de le mettre à ta sauce pour le faire dans le sens que tu veux

  3. #3
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    je veux pas ouvrir un classeur mais deux.

    Et j'ai regarder la FAQ de VBA avant, et il y a cette facon de faire expliquer...

    Je ne comprends pas ce que tu fais illight..
    peut tu m'expliquer stp ?
    j'ai fait cela et il me dit une erreur sur F2 : qualificateur incorrect
    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
     
    Private Sub CommandButton1_Click()
    Dim F1, F2 As String
     
    F1 = ActiveWorkbook.Name   'ici il faut mettre le classeur d'ou tu lance ta macro
    Workbooks.Open "C:\Test\Test.xls"
    F2 = ActiveWorkbook.Name
    Workbooks.Open "C:\Test\Document2.xls"
     
    F2.Worksheets(2).Cells(1, 1) = F1.Worksheets(1).Cells(1, 1)
     
    F1.Close
    F2.Close
     
    End Sub
    merci pour ton aide

  4. #4
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    qq'1 aurrai une idée ?
    je suis perdu....
    Je n'arrive pas à travailler en même temps sur les deux classeurs excel...
    help me please


  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Ah oui effectivement j'ai écrit un peu vite et je me suis planté désolé :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    workbooks(F2).Worksheets(2).Cells(1, 1) = workbooks(F1).Worksheets(1).Cells(1, 1)
     
    workbooks(F1).Close
    workbooks(F2).Close
    En fait, dans les variables F1 et F2 je met les noms des classeurs que tu ouvre de cette façon tu pourra naviguer entre tes 2 classeurs plus facilement ou copier des données ou autre

  6. #6
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    merci ca fonctionne mieux.
    Bon je vais continuer dans lmes developpements.
    Et au besoin...


  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    illight, tu devrais faire attention au code que tu proposes.

    Deux remarques.
    • La première ne porte pas vraiment à conséquence mais il est utile de le savoir.
      Dans la déclaration
      seul F2 sera du type String. F1 sera un Variant.
      Le code correct pour déclarer 2 Strings est:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Dim F1 As String, F2 As String
    • Pourquoi utilises-tu le nom des classeurs alors que tu peux en créer une instance?
      Voici le même code allégé en créant des instances de classeurs:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      Private Sub CommandButton1_Click()
        Dim F1 As Workbook, F2 As Workbook
        Set F1 = ActiveWorkbook 
        Set F2 = Workbooks.Open "C:\Test\Document2.xls"
       
        F2.Worksheets(2).Cells(1, 1) = F1.Worksheets(1).Cells(1, 1)
       
        F1.Close
        F2.Close
       
      End Sub

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    POur la déclaration, tu viens de m'apprendre quelquechose Alain, maintenant je le saurai et j'y ferai plus attention



    Pour les déclarations d'instance, je fais de cette manière car parfois j'ai besoin du nom des classeurs pour certaines fonctions et autres procédures que j'utilise

    A part alléger le code en les créant en instance, est-ce que ça a une incidence sur le mode de fonctionnement, ou la rapidité de la procédure en soi ?

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Le premier avantage c'est, au moins, la compacité du code.
    Le deuxième, c'est de s'habituer à utiliser des objets. Le passage (qui risque de nous être obligé, un jour ou l'autre) à DOT.NET n'en sera que plus facile.
    En terme de performance, l'accès à un pointeur (F2) est toujours plus rapide que l'interprétation d'une chaîne (Workbooks(F2) où F2 est une String) pour, en finale, retourner un objet.

    Et si tu as besoin du nom du classeur,

  10. #10
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Merci beaucoup pour tes explications

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

Discussions similaires

  1. [XL-2003] Travailler sur deux classeurs avec CITRIX
    Par Domimart dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/01/2011, 14h56
  2. Travailler sur deux classeurs différents
    Par Tyler Durden dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/07/2008, 09h42
  3. travailler sur deux classeurs
    Par TEXMAN1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/02/2008, 15h39
  4. [VBA-E]:copier entre deux tableaux sur deux classeurs
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 28/06/2006, 15h39
  5. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 10h59

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