sevenkingdom
XLDnaute Nouveau
Bonjour,
Je dispose d´un tableau 579 colonnes *12 lignes avec des données à transférer dans un tableau d´un autre classeur.
Chaque colonne du 1er tableau a des valeurs différentes à transférer à chaque fois dans les mêmes cellules du second classeur ´test bestiaire.
Appliqué à une seule colonne B, j´obtiens une macro moche du type
Sub test()
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("B2").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B1").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("D10 15").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B2:B7").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G40").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B8").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G38").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B9").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G41:G43").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B10:B12").Value
End Sub
Je copie les cellules B1 à B12 de mon 1er classeur vers les cellules de mon second classeur.
Je voudrais automatiser cette macro pour les 578 colonnes restantes et obtenir au final 579 tableaux (579 fichiers avec comme nom, les intitulés de la ligne 1, et en csv)
J´ai également ¨cassé¨ mon tableau 1 en 579 fichiers xls (format identique pour tous, 2 colonnes 12 lignes, mais ce coup ci toutes les données à copier sont dans la colonne B1:B12 de chaque fichier) pour appliquer cette macro, mais le problème est décalé (comment appliquer alors 1 macro à 579 fichiers différents??)
J´avais fait cette macro adaptée d´une macro trouvée sur un site
Sub test()
Dim i&, TTmp As Variant, Tdate As Variant, Tst$
Dim F As Worksheet, D As Object
Set D = CreateObject("Scripting.dictionary")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Sheets("Feuil1")
Tdate = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(3))
For i = 2 To .Cells(2, .Columns.Count).End(1).Column Step 1
TTmp = .Range(.Cells(1, i), .Cells(UBound(Tdate, 1), i + 0))
On Error Resume Next
Tst = Replace(TTmp(1, 1), "/", "-")
Tst = Left(Tst, 30)
Set F = Sheets(Tst)
If Err Then
Err.Clear
Sheets.Add(After:=Sheets(Sheets.Count)).Name = Tst
D(TTmp(1, 1)) = ""
Set F = Sheets(Tst)
End If
If Not D.exists(F.Name) Then
F.Range(F.Cells(1, 1), F.Cells(F.Rows.Count, 1).End(3)(1, 6)).ClearContents
D(F.Name) = ""
End If
F.Cells(1, 1).Resize(UBound(Tdate, 1), 1) = Tdate
F.Cells(1, 2).Resize(UBound(Tdate, 1)) = TTmp
F.Columns.AutoFit
F.Move
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("B2").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B1").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("D10 15").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B2:B7").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G48").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B8").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G46").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B9").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G49:G51").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B10:B12").Value
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "dd_mm_yyyy") & "_" & ActiveSheet.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close False
Err.Clear
Next i
.Activate
End With
Application.DisplayAlerts = True
End Sub
Elle m a permis de séparer mon 1er classeur en 579 fichiers .csv mais ,évidemment, seules les données de la colonne B ont été copiées dans le classeur 2.
Donc comment faire pour transférer les données de B1:B12 du classeur 1 sur les bonnes cellules du classeur 2 puis sauver (en csv avec le nom de B1) le classeur 2 rempli , et recommencer la même opération avec C1:C12 , puis D1 12 etc
En espérant que vous pourrez m´aider.
Je dispose d´un tableau 579 colonnes *12 lignes avec des données à transférer dans un tableau d´un autre classeur.
Chaque colonne du 1er tableau a des valeurs différentes à transférer à chaque fois dans les mêmes cellules du second classeur ´test bestiaire.
Appliqué à une seule colonne B, j´obtiens une macro moche du type
Sub test()
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("B2").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B1").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("D10
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G40").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B8").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G38").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B9").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G41:G43").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B10:B12").Value
End Sub
Je copie les cellules B1 à B12 de mon 1er classeur vers les cellules de mon second classeur.
Je voudrais automatiser cette macro pour les 578 colonnes restantes et obtenir au final 579 tableaux (579 fichiers avec comme nom, les intitulés de la ligne 1, et en csv)
J´ai également ¨cassé¨ mon tableau 1 en 579 fichiers xls (format identique pour tous, 2 colonnes 12 lignes, mais ce coup ci toutes les données à copier sont dans la colonne B1:B12 de chaque fichier) pour appliquer cette macro, mais le problème est décalé (comment appliquer alors 1 macro à 579 fichiers différents??)
J´avais fait cette macro adaptée d´une macro trouvée sur un site
Sub test()
Dim i&, TTmp As Variant, Tdate As Variant, Tst$
Dim F As Worksheet, D As Object
Set D = CreateObject("Scripting.dictionary")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Sheets("Feuil1")
Tdate = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(3))
For i = 2 To .Cells(2, .Columns.Count).End(1).Column Step 1
TTmp = .Range(.Cells(1, i), .Cells(UBound(Tdate, 1), i + 0))
On Error Resume Next
Tst = Replace(TTmp(1, 1), "/", "-")
Tst = Left(Tst, 30)
Set F = Sheets(Tst)
If Err Then
Err.Clear
Sheets.Add(After:=Sheets(Sheets.Count)).Name = Tst
D(TTmp(1, 1)) = ""
Set F = Sheets(Tst)
End If
If Not D.exists(F.Name) Then
F.Range(F.Cells(1, 1), F.Cells(F.Rows.Count, 1).End(3)(1, 6)).ClearContents
D(F.Name) = ""
End If
F.Cells(1, 1).Resize(UBound(Tdate, 1), 1) = Tdate
F.Cells(1, 2).Resize(UBound(Tdate, 1)) = TTmp
F.Columns.AutoFit
F.Move
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("B2").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B1").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("D10
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G48").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B8").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G46").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B9").Value
Workbooks("test bestiaire.xlsm").Worksheets("Feuil1").Range("G49:G51").Value = Workbooks("bestiaire.xlsm").Worksheets("Feuil1").Range("B10:B12").Value
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "dd_mm_yyyy") & "_" & ActiveSheet.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close False
Err.Clear
Next i
.Activate
End With
Application.DisplayAlerts = True
End Sub
Elle m a permis de séparer mon 1er classeur en 579 fichiers .csv mais ,évidemment, seules les données de la colonne B ont été copiées dans le classeur 2.
Donc comment faire pour transférer les données de B1:B12 du classeur 1 sur les bonnes cellules du classeur 2 puis sauver (en csv avec le nom de B1) le classeur 2 rempli , et recommencer la même opération avec C1:C12 , puis D1
En espérant que vous pourrez m´aider.