Bonjour,
Je suis en train de me décourager au sujet d'une macro que je tente de faire fonctionner. Je ne suis pas vraiment bon, mais je lie énormément et j'essaie de faire fonctionner le tout.
J'ai présentement un fichier excel avec un onglet "Source" qui comprend toutes mes données sur 8 colonnes, mais plusieurs lignes. Ma troisième colonne est le numéro de "poste" de ces transactions. J'aimerais avoir une macro qui: 1) créer d'autres feuilles qui se nomment selon le noms des "postes" (exemple: 3005, 3006, 3007, etc.) et qui transfère les données du fichier source dans chacun des nouveaux onglets créés. J'ai essayé toute sorte de macros différentes et j'ai des demandes un peu plus spécifiques qui ne devraient pas être trop compliquées. Je veux que les données du fichier "source" demeurent également dans celui-ci, et je souhaite que lorsque j'ajoute des lignes dans mon fichier "source" et que je re-run ma macro, les données ne se réécrivent pas en double dans les feuilles. Il faut évidemment que la macro vérifie sur la worksheet à créer existe déjà.
Voici mon code actuel, mais celui-ci "cache" les données de "source" qui sont déjà traitées ... J'aimerais que les données demeurent.
Sub parse_data()
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
vcol = 3
Set ws = Sheets("Source")
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = "A1:H1"
titlerow = ws.Range(title).Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
For i = 2 To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move After:=Worksheets(Worksheets.Count)
End If
ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
Sheets(myarr(i) & "").Columns.AutoFit
Next
ws.AutoFilterMode = False
ws.Activate
End Sub
Quelqu'un pourrait-il gentiment m'aider svp ?
Merci beaucoup !