bonjour à tous,
J'ai trouvé sur le net le code suivant, qui me permet (normalement) de récupérer des données dans des fichiers fermès sans avoir à les ouvrir :
'récupère dans une série de classeurs fermés (dans le même répertoire)
'les valeurs d'une plage et les écrit dans la feuille active
Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer
FName = Dir("H:\Controle de gestion\CHANTIERS\Budgets chantiers\*.XLS")
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter
x = LoopCounter
'calcul de la plage de destination
place = Range(Cells((x + 7), 2), Cells((x + 7), 19)).Address
GetValues "H:\Controle de gestion\CHANTIERS\Budgets chantiers", FilesArray(LoopCounter), "Feuil1", "N151:AG151", place
Next
Application.ScreenUpdating = True
End If
End Sub
Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle
With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "\[" & FName & "]" & sName & "'!" & cellRange
.Value = .Value
End With
End Sub
J'ai fait quelques essais sur un fichier, tout va bien.
aujourd'hui j'ai une quinzaine de fichiers dans lesquels je dois récupérer les données et là les ennuis commencent.
J'ai des lignes en doublons comme si il lisait deux fois le fichier mais pas avec les mêmes données, et j'ai des données qui ne remontent pas du tout (case vide ou #divo!)
Est-ce que vous auriez une piste ? ou y a t-il des options à cocher dans l'éditeur VBA ? ou autres...
J'ai trouvé sur le net le code suivant, qui me permet (normalement) de récupérer des données dans des fichiers fermès sans avoir à les ouvrir :
'récupère dans une série de classeurs fermés (dans le même répertoire)
'les valeurs d'une plage et les écrit dans la feuille active
Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer
FName = Dir("H:\Controle de gestion\CHANTIERS\Budgets chantiers\*.XLS")
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter
x = LoopCounter
'calcul de la plage de destination
place = Range(Cells((x + 7), 2), Cells((x + 7), 19)).Address
GetValues "H:\Controle de gestion\CHANTIERS\Budgets chantiers", FilesArray(LoopCounter), "Feuil1", "N151:AG151", place
Next
Application.ScreenUpdating = True
End If
End Sub
Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle
With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "\[" & FName & "]" & sName & "'!" & cellRange
.Value = .Value
End With
End Sub
J'ai fait quelques essais sur un fichier, tout va bien.
aujourd'hui j'ai une quinzaine de fichiers dans lesquels je dois récupérer les données et là les ennuis commencent.
J'ai des lignes en doublons comme si il lisait deux fois le fichier mais pas avec les mêmes données, et j'ai des données qui ne remontent pas du tout (case vide ou #divo!)
Est-ce que vous auriez une piste ? ou y a t-il des options à cocher dans l'éditeur VBA ? ou autres...