Copier la valeur d'un fichier pour la coller dans celui de travail (actif)
Bonjour tout le monde,
Ca fait un petit moment que je bloque sur une erreur et je n'arrive pas à trouver la source du problème.
Objectif :
L'objectif de ma macro à pour but de parcourir tous les dossiers d'un chemin qui est présent en cellule "F1". Une fois dans le dossier je recherche le fichier "*.xlsx" et je récupère la valeur de la cellule "N1" dans l'onglet "PV_Ouvert" que je copie et que je souhaiterais coller dans mon fichier de travail dans la feuille "Resultats".
Le problème à l'air simple or j'obtiens l'erreur 1004 :
Erreur définie par l'application ou par l'objet
Voici mon code :
Sub Consolider_Simu()
Dim S_Commande As Worksheet
Dim Chemin As String
Dim Extension As String
Dim Nb As Integer
Set S_Commande = ThisWorkbook.Sheets("Resultats")
Chemin = S_Commande.[F1]
Extension = "*.xlsx"
i = 2
Nb = BoucleFichiers(Chemin, Extension)
MsgBox Nb & " fichier(s) copié(s)"
End Sub
Function BoucleFichiers(Chemin As String, Extension As String) As Integer
Dim Fso As Object
Dim Dossier As Object
Dim Fichier As Object
Dim WB_TargetFichier As Workbook
Dim TargetSheet As Worksheet
Dim MainSheet As Worksheet
Set Fso = CreateObject("Scripting.FileSystemObject")
Set MainSheet = ThisWorkbook.Sheets("Resultats")
For Each Dossier In Fso.GetFolder(Chemin).SubFolders
For Each Fichier In Dossier.Files
If Fichier.Name Like Extension Then
Application.ScreenUpdating = False
Set WB_TargetFichier = Workbooks.Open(Fichier)
Set TargetSheet = WB_TargetFichier.Sheets("PV_Ouvert")
TargetSheet.Activate
Range("N1").Select
Selection.Copy
MainSheet.Activate
Range(Cells(i, 1), Cells(i, 2)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
'TargetSheet.Range("K4").Copy
'Worksheets("PV_Ouvert").Cells(i, 2).PasteSpecial Paste:=xlPasteFormats
'TargetSheet.Range("N37").Copy
'Worksheets("PV_Ouvert").Cells(i, 3).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
i = i + 2
BoucleFichiers = BoucleFichiers + 1
WB_TargetFichier.Close savechanges:=False
End If
Next Fichier
Next Dossier
End FunctionL'erreur apparaît toujours sur la ligne :
Range(Cells(i, 1), Cells(i, 2)).SelectTous les fichiers de tous les dossiers sont bien exécutés, la valeur se copie mais ne vient pas se coller quand j'utilise l'incrémentation avec i. SI j'utilise Range("A2") par exemple cela fonctionne.
Merci d'avance pour votre retour
cordialement,
Bonjour, Essaie en mettant :
ThisWorkbook.Activate
MainSheet.Activate
Range(Cells(i, 1), Cells(i, 2)).SelectDaniel
Bonjour,
Outre les Select à éviter, je doute fort que la variable i (non déclarée dans ton post) soit reportée dans la fonction.
Donc Cell(i,1) correspond à la ligne 0...
définis i dans la fonction et affecte lui une valeur au tout début, peut-être?
Bonjour,
Super je vous remercie, DanielC le problème venait bien de là :)
Marty