Boucle extraction de données vers un fichier de synthèse
j
Bonjour,
Sur mon fichier, le
'source_ws.Range("B6:Q10").Copy.Range ("B" & dlr)ne fonctionnait pas..
J'ai tenté :
source_ws.Range("B6:Q10").Select
Selection.Copy
.Range("B" & dlr).PasteSpecialet....ça fonctionne
Merci pour toute ton aide !
Je mets le code ici, si ça peut aider des personnes.
Sub recuperation()
'Déclarer les variables
Dim target_wb As Workbook 'fichier récapitulatif
Dim target_ws As Worksheet 'feuille récapitulative
Dim source_path As String 'dossier source
Dim source_wb_name As String 'nom fichier source
Dim source_wb As Workbook 'fichier source
Dim source_ws As Worksheet 'feuille source
'Désactiver le rafraîchissement de l'écran avant la macro
Application.ScreenUpdating = False
'Ouvrir la feuille source du fichier source
Set target_wb = ThisWorkbook
source_path = "C:\Users\Julie\Documents\Gécina\Outil évaluation Gecina\" 'Modification nécessaire en cas de changement d'ordinateur
Set target_ws = target_wb.Worksheets("Récupération des données")
dlr = target_ws.Cells(Rows.Count, "B").End(xlUp).Row + 1 'dernière ligne utilisée sur la feuille récapitulative
If dlr = 5 Then dlr = 6
source_wb_name = Dir(source_path & "\*.xlsx")
Do While source_wb_name <> ""
'le fichier est ouvert via l'instruction workbook.open, une fois le fichier ouvert
'il devient actif et le lien entre source et le fichier se fait par l'instruction set source=activeworkbook
Workbooks.Open source_path & source_wb_name
Set source_wb = ActiveWorkbook
On Error GoTo suivant
Set source_ws = source_wb.Worksheets("VBA")
With target_ws
On Error GoTo 0
source_ws.Range("B6:Q10").Select
Selection.Copy
.Range("B" & dlr).PasteSpecial
dlr = dlr + 5 'on a copié 5 lignes sur target_ws
End With
source_wb.Close False
suite:
On Error GoTo 0
source_wb_name = Dir()
Loop
Exit Sub
suivant:
If Err.Number = 9 Then MsgBox "Pas de feuille ""VBA"" dans le fichier " & source_wb_name, vbExclamation: source_wb.Close False: Resume suite
MsgBox "une erreur" & Err.Number & "est survenue"
End SubBonjour,
j'ai écrit
source_ws.Range("B6:Q10").Copy .Range("B" & dlr)et non
source_ws.Range("B6:Q10").Copy.Range ("B" & dlr)c'est difficile de voir la différence...