[Excel-VBA] décomposer une feuille

Résolu/Fermé
deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 - 13 nov. 2006 à 15:30
deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 - 17 nov. 2006 à 11:04
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
A voir également:

1 réponse

deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 91
17 nov. 2006 à 11:04
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