Copier-coller des plages de fichiers dans un nouveau fichier
Bonjour
je commence tout juste le VBA et je suis confronté à un problème que je n'arrive pas à résoudre.
J'ai une quantité indéfini de fichiers Excel dans un dossier A. Chaque fichier contient 2 onglets. Je souhaite copier une plage de cellule spécifique (qui est sous forme de colonne) dans chaque onglet puis coller ces plages dans une seule colonne, les une en dessous des autres, dans un nouveau fichier B. Ce fichier B contiendra donc à la fin une seule grande colonne avec toutes les plages de cellules des 2 onglets de tous les fichiers présents dans mon dossier initial.
Dans ce nouveau fichier, je souhaite ensuite détecter toutes les cellules identiques et supprimer les doubles pour obtenir une colonne propre avec toutes les valeurs qui n'apparaissent qu'une seule fois. Je veux aussi supprimer toutes les cases vides dans ma colonne.
Pour cela j'ai fait une Macro (ci-jointe) mais je bloque au moment d'appeler la méthode .paste (dans la dernière procédure)
Pourriez-vous m'aider?
Merci beaucoup
Guillaume
Pour aller plus vite voici le code de ma Macro:
' Cette procédure va ouvrir tous les fichiers présent dans le répertoire sélectionné
' Sélectionner des TICKER dans les 2 onglets de chaque fichiers, comparaison, liste de tous les TICKER, etc.
' Créer un fichier avec la liste de tous les TICKER
' Sauvegarder ce fichier dans un nouveau répertoire nommé Quarter_Data_List_2017_01_20_12_35
Private Sub SavetickerlistAS(WS As Worksheet, LRow As Long)
' Déclaration des variables
Dim WB_File_Pf As Workbook
Dim WB_File_Pf_WS_1 As Worksheet
Dim WB_File_Pf_WS_2 As Worksheet
Dim WB_File_Qdl As Workbook
Dim WB_File_Qdl_WS As Worksheet
Dim WB_File_Pf_WS_LRow As Long
Dim WB_File_Pf_WS_Range As Range
Dim WB_File_Qdl_WS_Range As Range
Dim Qdl_LRow As Long
Dim i, j, k As Long
Dim Depart As String
' Programmation
Application.DisplayAlerts = False
' Création du nouveau fichier Excel de sortie appelé WB_File_Qdl et nomination du premier onglet
Set WB_File_Qdl = Workbooks.Add
Set WB_File_Qdl_WS = WB_File_Qdl.Worksheets(1)
WB_File_Qdl_WS.Name = "TICKER List"
' Mise en forme de l'onglet "TICKER List"
WB_File_Qdl_WS.Cells.Select
With Selection.Font
.Name = "Calibri"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
For i = 13 To LRow
' Ouverture du fichier Excel d'entrée appelé WB_File_Pf et de ses 2 premiers onglets
Set WB_File_Pf = Workbooks.Open(WS.Cells(i, 2))
Set WB_File_Pf_WS_1 = WB_File_Pf.Worksheets(1)
Set WB_File_Pf_WS_2 = WB_File_Pf.Worksheets(2)
' Activation du premier onglet du fichier d'entrée pour copier la liste des TICKER
WB_File_Pf_WS_1.Activate
WB_File_Pf_WS_LRow = Last_Row(WB_File_Pf_WS_1, 5, 2)
Set WB_File_Pf_WS_Range = WB_File_Pf_WS_1.Range(WB_File_Pf_WS_1.Cells(6, 2), WB_File_Pf_WS_1.Cells(WB_File_Pf_WS_LRow, 2))
WB_File_Pf_WS_Range.Copy
' Activation de l'onglet TICKER du fichier de sortie pour y coller les tickers du premier onglet du fichier d'entrée
WB_File_Qdl_WS.Activate
Range("A" & WB_File_Qdl_WS.UsedRange.Rows.Count + 1).Select
WB_File_Qdl_WS.Paste
' Activation du deuxième onglet du fichier d'entrée pour copier la liste des TICKER
WB_File_Pf_WS_2.Activate
WB_File_Pf_WS_LRow = Last_Row(WB_File_Pf_WS_2, 5, 2)
Set WB_File_Pf_WS_Range = WB_File_Pf_WS_2.Range(WB_File_Pf_WS_2.Cells(6, 2), WB_File_Pf_WS_2.Cells(WB_File_Pf_WS_LRow - 1, 2))
WB_File_Pf_WS_Range.Copy
' Activation de l'onglet TICKER du fichier de sortie pour y coller les tickers du deuxième onglet du fichier d'entrée
WB_File_Qdl_WS.Activate
Range("A" & WB_File_Qdl_WS.UsedRange.Rows.Count + 1).Select
WB_File_Qdl_WS.Paste
' Fermeture du fichier d'entrée
WB_File_Pf.Close
Next i
' Enregistrement du fichier de sortie
WB_File_Qdl_WS.Cells(1, 1).Select
WB_File_Qdl.SaveAs Filename:=WS.Cells(9, 6) & "TICKER_List"
' Fermeture du fichier de sortie
WB_File_Qdl.Close
Application.DisplayAlerts = True
End Sub