Export CSV de chacune des lignes en fonction d'une quantité
Bonjour à tous
Je cherche à modifier une macro existante, actuellement elle me permettait d'exporter ma feuille dans un CSV mais il y a du changement, j'ai besoin que la macro exporte chacune des lignes dans un fichier séparé, mais pas seulement, ce qui me bloque également c'est que la ligne doit être recopier le même nombre de fois que la valeur présente dans la colonne E.
Si vous pouviez m'aider,
Je vous remercie
Bonjour, j'ai donc trouver la macro suivante qui me créai bien mes lignes dans un onglet temporaire, maintenant je cherche plus qu'a exporter dans un fichier different a chaque changement de valeur de la colonne A, merci pour votre aide
Voici la macro pour la duplication d'une ligne selon un quantité définie dans une cellule
'copie
Dim Tablo
Dim x As Long
Tablo = Sheets("EXPORTER5").Range("A2", "H" & Sheets("EXPORTER5").Range("H" & Rows.Count).End(xlUp).Row)
k = 1
For x = LBound(Tablo, 1) To UBound(Tablo, 1)
If Tablo(x, 2) <> "" Then
c = Tablo(x, 2)
For j = 1 To c
Sheets("EXPORTER6").Range("A" & k) = Tablo(x, 1)
Sheets("EXPORTER6").Range("B" & k) = Tablo(x, 2)
Sheets("EXPORTER6").Range("C" & k) = Tablo(x, 3)
Sheets("EXPORTER6").Range("D" & k) = Tablo(x, 4)
Sheets("EXPORTER6").Range("E" & k) = Tablo(x, 5)
Sheets("EXPORTER6").Range("F" & k) = Tablo(x, 6)
Sheets("EXPORTER6").Range("G" & k) = Tablo(x, 7)
Sheets("EXPORTER6").Range("H" & k) = Tablo(x, 8)
k = k + 1
Next j
End If
Next xAlors j'ai du revoir ma stratégie, voici mon nouveau code fonctionnel,
il duplique la ligne en question d'apres la valeur en colonne 2
puis exporte l'ensemble des lignes d'une meme valeur en colonne H dans un fichier CSV, le fichier csv prend la valeur de la cellule A
Parfait pour moi
Private Sub CommandButton7_Click()
MsgBox "Pensez à mettre du papier dans l'imprimante"
'vider la feuille EXPORTER
Worksheets("EXPORTER5").Range("A1:Z1000").Clear
Worksheets("EXPORTER6").Range("A1:Z1000").Clear
'Copie de la feuille tmp dans EXPORTER
ThisWorkbook.Worksheets("TMP5 ESAT").Cells.Copy
ThisWorkbook.Worksheets("EXPORTER5").Cells.PasteSpecial Paste:=xlPasteValues
Dim z As Integer, DerniereLigne As Integer
Application.ScreenUpdating = False
For z = 1000 To 1 Step -1
If Worksheets("EXPORTER5").Cells(z, 1) = "REF AA T AA COL AA" Then Worksheets("EXPORTER5").Cells(z, 1).EntireRow.Delete
If Worksheets("EXPORTER5").Cells(z, 1) = " " Then Worksheets("EXPORTER5").Cells(z, 1).EntireRow.Delete
If Worksheets("EXPORTER5").Cells(z, 1) = "" Then Worksheets("EXPORTER5").Cells(z, 1).EntireRow.Delete
If Worksheets("EXPORTER5").Cells(z, 1) = "REF T COL " Then Worksheets("EXPORTER5").Cells(z, 1).EntireRow.Delete
Next z
Application.ScreenUpdating = True
Worksheets("EXPORTER5").Activate
Dim i%, j%, n% 'déclare mes variables en tant que nombre entier
With ActiveSheet 'sur la feuille active
n = .Cells(.Rows.Count, 1).End(xlUp).Row '[barrer]égal la valeur de la colonne 1[/barrer] n° dernière ligne occupée en col. 9 (I)
Application.ScreenUpdating = False
For i = n To 1 Step -1 'boucle sur chaque ligne
If IsNumeric(.Cells(i, 2)) Then 'test si la valeur est numérique pour la cellule ligne I colonne 2
j = .Cells(i, 2) - 1 'valeur de la cellule colonne 2 - 1
If j > 0 Then
.Range("A" & i & ":H" & i).Copy 'copie la ligne I de la colonne A à la colonne H
.Range("A" & i + 1 & ":H" & i + j).Insert xlShiftDown '[barrer]colle la valeur dans la ligne du dessous autant de fois que la variable J[/barrer] Insère j lignes sous la ligne copiée en la collant sur les lignes insérées
Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$
Sep = ";"
Set Plage = .Range("H" & i & ":J" & i + j)
Open "C:\Users\k\Desktop\ETQ2\" & .Range("H" & i).Value & ".csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
'End With
Close
End If
End If
Next i
End With
Application.CutCopyMode = False 'a quoi cela sert ?? Vide le presse-papier, ce qui élimine l'encadrement scintillant de la ligne copiée (qui ne se produit pas spontanément dans ce cas)
MsgBox "Export des étiquettes terminés, Impression en cours"
End Sub