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 :

copier coller plusieurs fichiers dans un seul fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut copier coller plusieurs fichiers dans un seul fichier
    Bonjour,
    je veux copier les données de plusieurs fichiers les unes après les autres dans un fichier.
    J'ai écrit une macro pour cela, malheureusement, il y a un bug que je n'arrive pas à débugger. Quelqu'un pourra t il s'il vous plaît corriger l'erreur?
    Le bug se trouve sur la ligne 16

    Merci par avance


    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
    Sub COPIEBASEVG(chemin, feuille)
    Dim Wbk As Workbook
    Dim Rep As String
    Dim Plage As Range
    Dim tbl() As Variant
    Dim i As Integer, j As Integer
     
     
    Set Wbk = Workbooks.Open(chemin)
    Set Plage = ThisWorkbook.Worksheets("service").Range("A2:E" & Range("D65536").End(xlUp).Row)
    tbl = Plage.Value
     
        For i = 1 To UBound(tbl, 1)
            For j = 1 To UBound(tbl, 2)
                If tbl(i, j) = "" Then
                    ThisWorkbook.Worksheets("service").Range("i,j").Value = Wbk.Worksheets(feuille).Range("A2:D7").Value
                End If
            Next j
        Next i
     
    'ThisWorkbook.Worksheets("service").Range("C9:F14").Value = Wbk.Worksheets(feuille).Range("A2:D7").Value
     
    Wbk.Close False
    'Wbks.Close True
    Set Wbk = Nothing
    End Sub

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("service").Range("i,j").Value
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("service").Cells(i,j).Value

  3. #3
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Et sans regarder plus en détail, tu essaies de copier une plage dans une cellule. Ca ne plantera pas forcément, mais c'est bizarre. Au mieux tu auras à chaque fois la première cellule de la plage.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut
    tout d'abord merci pour la peine que tu te donnes pour mon sort,
    j'avais déjà essayé mais elle bug toujours

    Bonjour Daniel,
    qu'on se retrouve, j'ai fallu dire les grands esprits se rencontrent, malheureusement j'en suis pas un en vba.
    pour revenir à mon probleme , j'ai remplacé comme indiqué mais le probleme persiste sur la même ligne, j'en vois un bout de mon code.
    ligne 10 , il y a le bug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set Wbk = Workbooks.Open(chemin)
    With ThisWorkbook.Worksheets("service")
     Set Plage = .Range("A2:E" & Range("A65536").End(xlUp).Row)
    End With
    tbl = Plage.Value
     
        For i = 1 To UBound(tbl, 1)
            For j = 1 To UBound(tbl, 2)
                If tbl(i, j) = "" Then
                    ThisWorkbook.Worksheets("service").Range("i,j").Resize(6, 4).Value = Wbk.Worksheets(feuille).Range("A2:D7").Value
                End If
            Next j
        Next i

  5. #5
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    C'est toujours ton Range("i,j") ! Fais Cells(i,j) comme on te l'a dit.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut
    ZabreLoup,
    je viens de remplacer range par Cells mais le problème persiste à la même ligne

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu fais une erreur ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = ThisWorkbook.Worksheets("service").Range("A2:E" & Range("D65536").End(xlUp).Row)
    "Range("D65536").End(xlUp).Row" se réfère au classeur actif, c'est à dire celui que tu viens d'ouvrir. Tu devrais plutôt écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ThisWorkbook.Worksheets("service")
        Set Plage = .Range("A2:E" & .Range("D65536").End(xlUp).Row)
    End With
    Pour compléter ce que dit Zebreloup, écris plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    ThisWorkbook.Worksheets("service").Range("i,j").Resize(6, 4).Value = _
                    Wbk.Worksheets(feuille).Range("A2:D7").Value

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

Discussions similaires

  1. [XL-2010] Copier plusieurs classeurs dans un seul fichier
    Par frutz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/03/2015, 17h12
  2. Réponses: 12
    Dernier message: 03/06/2008, 17h54
  3. Réponses: 2
    Dernier message: 22/09/2007, 15h37
  4. stocker/archiver plusieurs fichiers dans un seul fichier
    Par tatoo59 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 03/06/2007, 18h57
  5. Réponses: 5
    Dernier message: 18/04/2007, 18h57

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