Correction Code récupération data
Bonjour à tous je suis nouveau dans ce merveilleux monde qu'est VBA et j'aurai besoin d'aide pour un code VBA que je voudrai utiliser de façon professionnel.
Le but du code est d'aller chercher tout les fichiers excel qui sont dans un dossier sur mon bureau, aller dans l'onglet RAW_DATA, copier toute les valeurs de cet onglet pour enfin les coller dans mon fichier cible, je précise que le fichier ou sont contenues les valeurs sera toujours de la même forme.
Voici le code que j'ai pu bidouiller jusqu'à présent :
Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Claseur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim F As String 'déclare la variable F (Fichiers)
Dim DR As Long 'déclare la variable DR (Date de Référence)
Dim DM As Long 'déclare la variable DM (Date Maximum)
Dim CS As Workbook 'déclare la variable CS (Claseur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Sheets("Feuil1") 'définit l'onglet destination OD
CA = "C:\Users\Utilisateur\Desktop\Nouveau dossier" 'définit le chemin d'accès CA
F = Dir(CA & "*.xlsx") 'définit le premier fichier F avec l'extension ".xlsx" dans le dossier CA
Do While F <> "" 'exécute tant qu'il existe des fichiers F
Application.Workbooks.Open (F) 'ouvre le fichier F
Set CS = ActiveWorkbook 'définit le classeur source CS
Set OS = CS.Sheets("RAW_DATA") 'définit l'onglet source OS
'définit la cellule de destination DEST (A1, si A1 est vide, sinon, la première cellule vide de la colonne A de l'onglet OD)
Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée de la colonne A de l'onglet OS
OS.Range("A2:AG" & DL).Copy 'copie la plage A5:AG...(DL)
F = Dir 'fichier suivant commençant par DM avec l'extension ".xlsx" dans le dossier CA
Loop 'boucle
'sélectionne la cellule A2 de l'onglet OD
OD.Range("A2").Select
CD.Save 'enregistre le fichier destination
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
MsgBox "Fin du traitement des données !" 'message
End Sub
Pour l'instant quand je l'exécute j'ai juste la boite de dialogue qui s'ouvre dans mon fichier destination avec rien qui se copie et je n'arrive pas à trouver mon erreur,
Bien à vous,
- Messages
- 2'417
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonjour toutes et tous
@Roromy
bizarre bizarre ce qui me cloche perso c'est cela
1)
Set OD = CD.Sheets("Feuil1") 'définit l'onglet destination ODpeut-être par:
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD2) bon là, je pense que c'est fait exprès pour user
CA = "C:\Users\Utilisateur\Desktop\Nouveau dossier" 'définit le chemin d'accès CAUtilisateur\
3) je ne comprend pas l'astérisque (*) ci-dessous
F = Dir(CA & "*.xlsx") 'définit le premier fichier F avec l'extension ".xlsx" dans le dossier CA
4) A2:AG (A2 ok : AG jusqu'où ?) AG1000 ,
OS.Range("A2:AG" & DL).Copy 'copie la plage A5:AG...(DL)
5) OS.Range("A2:AG...." & DL).Copy (il manque la destination)
6)Après peut être voir un post similaire de Thauthème via ce lien ici merci à Thauthème
crdlt,
André
Bonjour Andre merci de ta réponse, ca fait que 3-4 jours que j'apprends le code et effectivement je pense avoir fait pas mal d'erreur,
concernant le 1- c'est modifié merci
pour le 2 c'est effectivement le chemin vers le dossier qui contiendra tout les fichiers que la macro devra traiter
pour le 3 - F = Dir(CA & "*.xlsx") j'essaie de définir de traiter tout les fichiers dont l'extension est xlsx peut importe leur nom
4- j'ai modifié AG en AG2, mon but est de sélectionner de la cellule A2 à la cellule AG2 jusqu'à la dernière ligne contenant des valeurs
5- j'ai beau essayé différente manières de définir la copie rien ne se passe :/
Je vais checker le lien que tu m'as envoyé merci beaucoup.
Crdlm