Copier coller plusieurs fichiers excel (2003) dans un fichier excel unique et st

Résolu
hobine Messages postés 3 Date d'inscription mercredi 23 novembre 2011 Statut Membre Dernière intervention 1 décembre 2011 - 23 nov. 2011 à 10:55
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

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 220
23 nov. 2011 à 11:18
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 220
23 nov. 2011 à 11:21
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
3
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
23 nov. 2011 à 11:15
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.
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
23 nov. 2011 à 11:31
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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:45
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
0
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
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
0
Rejoignez-nous