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-Excel]Copier des cellules vers un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut [VBA-Excel]Copier des cellules vers un autre classeur
    Bonjour,

    Je souhaite copier le contenu d'une feuille dans une autre feuille qui se trouve dans un autre classeur. J'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Windows("MonFichier.xls"). Activate
        Sheets("Sheet1").Select
        Cells.Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("MonAutreFichier.xls").Activate
        Sheets("Sheet1").Select
        Cells.Select
        ActiveSheet.Paste
    Cela fonctionne correctement.

    Maintenant je dois utiliser cette fonction plusieurs fois donc au lien d'utiliser des noms de fichiers/feuilles en dur j'utilise des variables que je passe a la fonction:

    les variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ShtToCopy = "Sheet1"
     
    SourceFile = "c:\files\source.xls"
    ThisFile= "c:\other files\dest.xls"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
        Workbooks.Open SourceFile
        Windows(SourceFile).Activate
        Sheets(ShtToCopy).Select
        Cells.Select
        Application.CutCopyMode = False
        Sheets(ShtToCopy).Select
        Selection.Copy
        Windows(ThisFile).Activate
        Sheets(ShtToCopy).Select
        Cells.Select
        ActiveSheet.Paste
    Mais ca ne fonctionne pas, il bloque sur l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows(SourceFile).Activate
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    run-time error 9, subscript out of range
    J'ai l'impression que l'objet "Windows" ne supporte pas le nom de variable en tant qu'argument...

    Merci pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    Voici un code que j'ai testé, et ça marche!
    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
    Dim SourceFile As String, ThisFile As String, ShtToCopy As String
    Dim Ws As Workbook, wf As Workbook
     
     
        SourceFile = Dir("H:\Excel\Essai004.xls")
        ThisFile = Dir("H:\Excel\Essai002.xls")
        ShtToCopy = "Feuil1"
     
        On Error Resume Next
        Set Ws = Workbooks(SourceFile)
        If Ws Is Nothing Then Workbooks.Open SourceFile
     
        Set wf = Workbooks(ThisFile)
        If wf Is Nothing Then Workbooks.Open ThisFile
        On Error GoTo 0
     
        Workbooks(SourceFile).Worksheets(ShtToCopy).Activate
        Cells.Copy
        Workbooks(ThisFile).Worksheets(ShtToCopy).Activate
        Range("A1").Select: ActiveSheet.Paste: Range("A1").Select
        Application.CutCopyMode = False
        Range("A1").Select
    Un test est effectué afin de savoir si les 2 fichiers sont déjà ouverts, ainsi qu'une gestion d'erreur. J'ai utilisé mon dossier, ainsi que mes fichiers d'essai.

    Cordialement

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Merci pour la reponse!
    Malheureusement, j'ai la meme erreur sur la meme ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(SourceFile).Worksheets(ShtToCopy).Activate
    J'ai l'impression qu'il n'aime pas le activate!?

    Cela doit venir de mon environement...mais je ne vois pas quoi! Une idee?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    ta essayer avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Windows("Essai004.xls").Activate
    Sheets("sheet1").copy
    Windows("Essai002.xls").Activate
    Sheets("sheet1").select
    activesheet.paste

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Tartenpion
    Merci pour la reponse!
    Malheureusement, j'ai la meme erreur sur la meme ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(SourceFile).Worksheets(ShtToCopy).Activate
    J'ai l'impression qu'il n'aime pas le activate!?

    Cela doit venir de mon environement...mais je ne vois pas quoi! Une idee?

    chez moi, il refuse tout workbooks("").worksheets("").activate

    de meme un workbooks("").worksheets("").range(cells,cells).select ne lui convient pas.

    Je dois tout séparer ligne par ligne
    activer le workbook
    activer le worksheet
    etc..

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    Je modifie le code me mon poste précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton1_Click()
    Windows("Essai002.xls").Activate
    Sheets("sheet1").Range("A1:Z6666").Copy
    Windows("Essai004.xls").Activate
    Sheets("sheet1").Select
    ActiveSheet.Paste Range("A1")
    End Sub
    Sa fonctionne j'ai testé mais bon la t'es obligé de stipuler une range donc a toi de voir après

    PS: Ce code suppose que tes deux fichiers sont ouvert au préalable

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Gerard6969
    ta essayer avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Windows("Essai004.xls").Activate
    Sheets("sheet1").copy
    Windows("Essai002.xls").Activate
    Sheets("sheet1").select
    activesheet.paste
    Meme chose, bloque sur le activate avec la meme erreur

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 66
    Points : 30
    Points
    30
    Par défaut
    nono n'utilise pas ce code la (il ne marche pas) prend le dernier que j ai posté je l ai testé et il fonctionne

    utilise celui la :
    PS: Ce code suppose que tes deux fichiers sont ouvert au préalable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton1_Click()
    Windows("Essai002.xls").Activate
    Sheets("sheet1").Range("A1:Z6666").Copy
    Windows("Essai004.xls").Activate
    Sheets("sheet1").Select
    ActiveSheet.Paste Range("A1")
    End Sub

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup, en effet cela marche. Je l'ai legerement adapte et finalement il marche meme sans le range. Voici le 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
    Sub test2()
     
    SourceFile = "MySourceFile.xls"
    ShtToCopy = "MySheet"
    ThisFile = "MyMacroFile.xls"
     
    Windows(SourceFile).Activate
    Sheets(ShtToCopy).Select
    Cells.Select
    Selection.Copy
    Windows(ThisFile).Activate
    Sheets(ShtToCopy).Select
    ActiveSheet.Paste Range("A1")
     
    End Sub

    Merci encore

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

Discussions similaires

  1. [XL-2010] Copier des plages d'un classeur a un autre
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2018, 20h32
  2. [XL-2010] copier des cellules vers une autre feuille
    Par fredplusvar dans le forum Excel
    Réponses: 1
    Dernier message: 22/03/2014, 12h34
  3. [VBA]comment copier une ligne vers un autre classeur
    Par iboulaye1980 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2007, 18h22
  4. VBA EXCEL - Copier des ligne vers un autre calseur.
    Par patine31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2007, 12h46
  5. [VBA-Excel] copier des lignes de données d'un fichier à un autre
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2006, 10h17

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