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 :

Copie d'un range d'un workbook vers un autre [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 67
    Par défaut Copie d'un range d'un workbook vers un autre
    Bonjour,

    Je cherche à automatiser la copie d'une partie d'une feuille d'un classeur source vers une feuille d'un classeur destination. La macro se trouve sur le classeur destination. J'ai cherché à le faire sans ouvrir le fichier source mais ça me semble tellement plus simple en l'ouvrant que j'ai choisi cette méthode. Ma feuille source contient 21 colonnes mais je ne veux copier que les 7 premières. De même, ma feuille destination contient 21 colonnes mais je ne veux écraser que les 7 premières. Le nombre de lignes est variable.
    Voila le code que j'ai écris :
    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
    Private Sub CommandButton1_Click()
    Dim Chemin As String, Fichier As String
    Dim Wrdarray() As String
     
    'Recuperation du chemin complet (chemin + nom fichier)
    sChemin = Application.GetOpenFilename
    Wrdarray() = Split(sChemin, "\")
     
    'Extraction du nom de fichier seul
    Fichier = Wrdarray(UBound(Wrdarray))
     
    'Extraction du chemin seul
    For i = 0 To UBound(Wrdarray())
        Chemin = Chemin & "\" & Wrdarray(i)
    Next i
    Chemin = Mid(Chemin, 2)
     
    'On determine la derniere ligne de ce fichier et on supprime de la colonne 1 à 7 et de la ligne 7 à la fin
    findest = ThisWorkbook.Sheets("Ecarts JTZ").Range("A7").End(xlShiftDown)
    ThisWorkbook.Sheets("Ecarts JTZ").Range(Cells(7, 1), Cells(findest, 7)).ClearContents
     
    'On ouvre le fichier source
    Workbooks.Open (sChemin)
    finsrc = Workbooks(Fichier).Sheets("blabla").Range("A8").End(xlShiftDown)
     
    'On copie le fichier source dans ce fichier
    Workbooks(Fichier).Sheets("blabla").Range(Cells(6, 1), Cells(finsrc, 7)).Copy Destination:=ThisWorkbook.Sheets("Ecarts JTZ").Range("A7")
     
    'Fermeture du fichier source
    Workbooks(Fichier).Close
     
    End sub
    La ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Fichier).Sheets("blabla").Range(Cells(6, 1), Cells(finsrc, 7)).Copy Destination:=ThisWorkbook.Sheets("Ecarts JTZ").Range("A7")
    renvoi l'erreur 1004 : Erreur definie par l'application ou par l'objet.

    Je ne comprends pas trop pourquoi, surtout que j'utilise exactement la même syntaxe 3 lignes au dessus...

    Merci d'avance pour votre aide

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Magikmed, bonjour le forum,

    Ce qui me gêne c'est ta variable finscr. Elle n'est pas déclarée (Integer ou Long) et surtout, il me semble que tu devrais la définir plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    finsrc = Workbooks(Fichier).Sheets("blabla").Range("A8").End(xlDown).Row
    Mais il est vrai que tu devrais avoir le même problème avec findest... ?!

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 67
    Par défaut
    Salut Thautheme et merci pour ta réponse,

    En effet, il y avait un petit problème avec finsrc et findest. Ils contenaient bien un entier mais pas la bonne valeur. Ceci dit, ça ne règle pas mon problème. J'ai trouvé une solution, en modifiant un peu la syntaxe comme suit :
    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Fichier).Sheets("blabla").Range(Cells(6, 1), Cells(finsrc, 7)).Copy Destination:=ThisWorkbook.Sheets("Ecarts JTZ").Range("A7")
    J'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(Fichier).Sheets("blabla").Range("A5:G" & finsrc).Select
    Selection.Copy Destination:=ThisWorkbook.Sheets("Ecarts JTZ").Range("A7")
    Et là ça passe...

    J'ai pas tout compris mais bon, ça tourne...

    Merci pour le coup de main

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

Discussions similaires

  1. Copie de certaines données d'un textarea vers un autre textarea
    Par Olivier Regnier dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 14/02/2009, 11h41
  2. [FTP] Copie de source PHP d'un serveur vers un autre
    Par Nyphel dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2008, 23h36
  3. Réponses: 1
    Dernier message: 09/03/2007, 15h14
  4. Réponses: 5
    Dernier message: 08/07/2005, 13h10
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

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