Je suis un débutant à la programmation VBA, j'ai donc besoin de votre aide ici. Je dois créer une macro qui copie des données d'une feuille à l'autre. Donc, ce que j'ai fait est d'enregistrer une macro (en utilisant un enregistreur de macro) pour les étapes que je dois copier/coller. Maintenant, je dois créer une boucle pour le faire pour toutes les informations dont j'ai besoin.Copie de données d'une feuille à une autre avec des boucles VBA
Voici des captures d'écran de la feuille contenant les données:
Voici capture d'écran de la feuille que les données doivent être collées:
permet donc parler les données, que mon rapport contient. J'ai un rapport mensuel pour les pays, que mon entreprise sert. Chaque jour du mois, j'ai des prévisions qui devraient être téléchargées dans notre base de données.
Voici le code que je l'ai déjà:
Sub manual_upload()
Sheets("Forecast").Select
Range("G1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Upload").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Forecast").Select
'ActiveWindow.ScrollColumn = 2
'ActiveWindow.ScrollColumn = 1
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Upload").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown
'Selection.AutoFill Destination:=Range("B2:B31")
'Range("B2:B31").Select
Sheets("Forecast").Select
Range("E2").Select
Selection.Copy
Sheets("Upload").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("b2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown
'Selection.AutoFill Destination:=Range("C2:C31")
'Range("C2:C31").Select
Sheets("Forecast").Select
Range("B2").Select
Selection.Copy
Sheets("Upload").Select
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("c2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown
'Selection.AutoFill Destination:=Range("D2:D31")
'Range("D2:D31").Select
Range("E2").Select
Sheets("Forecast").Select
Range("G2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Upload").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Forecast").Select
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Upload").Select
Range("F2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("F2:F31")
Range("F2:F31").Select
'next i
End Sub
Je ne sais pas comment démarrer la boucle. Quelles données devraient être ajoutées comme un divers et etc. J'apprécierai votre aide.
En fonction du nombre de colonnes à travers les prévisions sont, je vous suggère de penser à l'utilisation Powerquery. Les étapes de base sont les suivantes: Définissez vos données source, comme dans votre image affichée 1, comme une table, demandez à powerquery de sélectionner cette table (requête de table), puis renommez les colonnes que vous voulez conserver, supprimez celles que vous ne voulez pas, et mettez en surbrillance toutes les colonnes de date et faites des colonnes unpivot de l'onglet Transformer (ou faites un clic droit). Puis fermez et chargez à la feuille. – QHarr
Votre explication a-t-elle été coupée? Vous n'expliquez pas comment les champs sont remplis dans le résultat souhaité. Qu'est-ce que * Dashboard *, * Forecast *? À part cela, cela ressemble à un processus de fusion. N'importe quel jeu de données/programme tel que Python pandas/R/SAS peut être remodelé en conséquence. – Parfait