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

Signaler
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011
-
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
9
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.
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
9
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.
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011

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
Messages postés
3
Date d'inscription
mercredi 23 novembre 2011
Statut
Membre
Dernière intervention
1 décembre 2011

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