Diviser une feuille excel en plusieurs autres feuilles

josanche

XLDnaute Occasionnel
Bonjour le forum,

Je vous envoie ce message car j'aurais besoin de votre aide!. Dans mon fichier en pièce jointe, j'ai en en feuille 1 un panel de donnée dont la premiere colonne est l'année ensuite, l'état et ensuite le nom du sénateur. Sur la premiere ligne, vous verez les noms des sénateurs. Ce que je veux, c'est ce qu'il y a en feuille 2, c'est à-dire diviser mon panel de donnés en sous feuille. Je vous explique ce que je veux comme résultat. Je voudrais 50 feuilles (car 50 etat américains) et pour chaque feuille, il y a le nom de tout les sénateurs américains qui font parti de l'état en question, leur nom peuvent etre répété plusieurs fois ainsi que l'année auquel j'associe parfois, peut etre également répété.

Merci pour votre aide et en pièce jointe vous avez mon fichier, regardez mon exemple en feuille 2 et ca sera ok. Si vous avez des questions, svp, n'hesitez pas a les demander !

http://db.tt/0zDCcbm4

L'objectif à la fin (que je devrai faire lol) est de voir si certaines colonnes sont combinaisons linéaires d'autres colonnes. (chose que sur excel je me demande encore comment on peut faire)
 

JCGL

XLDnaute Barbatruc
Re : Diviser une feuille excel en plusieurs autres feuilles

Bonjour à tous,

Peux-tu essayer ceci dans un module :

VB:
Option Explicit


Sub Ventile()
Dim CurCell As Range, Titre As Range


Application.ScreenUpdating = 0


Columns("A:ES").Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("A2"), Order2:=xlAscending, Header:=xlGuess
Range("A1").Select


Set CurCell = ThisWorkbook.Sheets("Feuil1").Range("E1")
Set Titre = ThisWorkbook.Sheets("Feuil1").Range("A1:EJ1")


While CurCell.Value <> vbNullString
    With GetSheet(CurCell.Value)
        Titre.EntireRow.Copy .Cells(1, 1)
        CurCell.EntireRow.Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0)
    End With
    Set CurCell = CurCell.Offset(1, 0)
    Columns("A:ES").Columns.AutoFit
Wend


Application.DisplayAlerts = 0
Sheets("State").Delete
Application.DisplayAlerts = 1
Sheets("Feuil1").Activate
End Sub


Public Function GetSheet(SheetName As String) As Worksheet
'Cette fonction renvoie la feuille nommée <SheetName> et la crée si elle n'existe pas
Dim CurSheet As Worksheet, Exist As Boolean
Exist = False
For Each CurSheet In ThisWorkbook.Sheets
    If CurSheet.Name = SheetName Then Exist = True
Next CurSheet
If Not Exist Then
    ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = SheetName
End If
Set GetSheet = ThisWorkbook.Worksheets(SheetName)
End Function


A+ à tous
 

Pièces jointes

  • Diviser Fichier.zip
    305.3 KB · Affichages: 326
Dernière édition:

josanche

XLDnaute Occasionnel
Re : Diviser une feuille excel en plusieurs autres feuilles

J'ai essayé mais il me dit que ya une erreur sur une ligne. J'ai remodifié le fichier, c'est peut etre pour ça mais le voici en pièce jointe mon fichier. le voila il est fini :) Pouvez-vous juste l'adapter et je viendrai voir si c ok

le nom de votre module c'est ventile ?

http://db.tt/MuNoLBH3

Merci d'avance JCGL :D
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 327
Membres
102 862
dernier inscrit
Emma35400