Copier coller plusieurs fichiers excel (2003) dans un fichier excel unique et st [Résolu]

Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011
- - Dernière réponse : hobine
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011
- 23 nov. 2011 à 11:48
Bonjour,
Je suis nouveau et débutant en vba excel
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 après if

Merci par avance
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)
With ThisWorkbook.Worksheets("service")
Set Plage = .Range("A3:E" & .Range("D65536").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").Cells("i,j").Resize(6, 4).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


Laus Deo
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
Bonjour,

Veux-tu bien dorénavant ne pas omettre de présenter ici ton code indenté en entre balises CODE ?
C'est important et ce n'est pas un luxe. Merci de t'y conformer lors de tes prochains messages.
- De quel type est le paramètre feuille passé à ta procédure ?
- si je comprends bien de ce que tu exposes, ton bug serait sur la ligne :*
ThisWorkbook.Worksheets("service").Cells("i,j").Resize(6, 4).Value = _
Wbk.Worksheets(feuille).Range("A2:D7").Value 

Ecxpose-nous avec précision :
a) le message d'erreur que tu reçois
b) ce que tu attends exactement comme résultat de cette instruction.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
Oui,
Ces guillemets m'avaient échappé


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
0
Merci
Bonjour,

Dans ta ligne :

ThisWorkbook.Worksheets("service").Cells("i,j").Resize(6, 4).Value = _
Wbk.Worksheets(feuille).Range("A2:D7").Value


tu as mis "i,j" qui est une chaine de caractères i et j ne seront jamais remplacés par tes variables.

il faut simplement mettre Cells(i,j).

Je n'ai pas testé mais cela me semble logique.

Bonne journée





Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
Commenter la réponse de cgandco
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
0
Merci
De plus

si tu avais mis ton code entre balise tu voyais directement la chaine de caractères en rouge.




Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
Commenter la réponse de cgandco
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011
0
Merci
Merci à vous, j'en tiendrai compter de vos remarques sur le mode d’utilisation du site la prochaine fois.
Par contre j'avais aussi par la suite détecté cette faute de guillemets sur mon code. du moins le code fonctionne bien mais Ca ne fait pas le job puisque cela ne copie pas les fichiers à la suite les uns des autres

Laus Deo
Commenter la réponse de hobine
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011
0
Merci
voici mon code final
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)
With ThisWorkbook.Worksheets("service")
    Set Plage = .Range("A2:E" & .Range("D65536").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").Cells(i, j).Resize(6, 4).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



Laus Deo
Commenter la réponse de hobine