[Excel-VBA] décomposer une feuille

Résolu
deus Messages postés 93 Statut Membre -  
deus Messages postés 93 Statut Membre -
Bonjour à tous,

Dans une classeur excel, j'ai une feuille principale qui contient les champs suivants :
Branch - type - source - nom
A - 1 - 2 - pipo
A-1-3- nico
A-2-4-test
B-1-2-toto
...
C-2-5-lolo
....
D-5-6-test

Cette feuille est ordonnée sur le champ Branch .
Je voudrais, au moyen d'une macro VBA, décomposer cette feuille principale pour avoir une feuille par Branch (çàd : une feuille avec toutes le lignes commencant par A, par B,...)

Pour copy/coller et créer/nommer une nouvelle feuille pas de souci.
Mon problème réside dans le fait de déterminer dynamiquement la Range à copier sur base de la valeur du champ branch

J'espère avoir été suffisament clair.
merci

Nicolas

--
What Jesus can't fix tonight,
The Whisky certainly might.
Configuration: Excel 2002

1 réponse

  1. deus Messages postés 93 Statut Membre 91
     
    Salut,
    j'ai résolu mon problème

    Pour ceux que ca interessent voici la macro que j'utilise

    Sub SplitSheets()
    '
    ' Macro2 Macro
    ' Macro recorded 17/11/2006 by f4y840
    '

    '
    Dim strBranch As String 'branchcode
    Dim nBranch As Integer 'nbr of branch

    nBranch = Sheets("Branch").Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1

    For i = 2 To nBranch + 1
    strBranch = Sheets("Branch").Cells(i, 1)
    If strBranch <> "" Then
    Sheets("Data").Select
    Range("A1:K1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:=strBranch
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Empty").Select
    Sheets.Add
    'ActiveSheets.Select
    ActiveSheet.Name = strBranch
    ActiveSheet.Paste
    Columns("B:B").EntireColumn.AutoFit
    Columns("C:C").EntireColumn.AutoFit
    Sheets("Data").Select
    Range("A1:K1").Select
    Selection.AutoFilter
    'Range("E7").Select
    End If
    Next i
    End Sub

    0