Séparation d'un tableau excel

Résolu/Fermé
Blueflower - 3 oct. 2007 à 17:38
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 24 oct. 2007 à 19:14
Bonjour a tous,

Je dispose d'un tableau où il y a une liste de personne avec tout un tas de données dont le nom de leur manager. J'ai donc une ligne par personne.

J'aimerai savoir comment à partir de ce tableau en créer plusieurs autres (par managers) en évitant de devoir faire des filtres et des copier/coller pour tout le monde.

En gros à la fin de mon retraitement il me faudrait un onglet Excel par manager avec le tableau des personnes étant dans son périmetre.

Merci beaucoup!
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 716
4 oct. 2007 à 11:36
bonjour

Je te propose cette macro à insérer dans "thisworkbook" et avec un clic droit sur une cellule avec le nom du manager choisi tu obtiens l'onglet qui le concerne.
Bien sûr, cette macro fonctionne sur n'importe qu'elle valeur de cellule, même si ce n'est pas un manager.
Si ta ligne titre n'est pas sur la ligne 1, change la valeur.
Private Sub Workbook_SheetBeforeRightClick(ByVal feu As Object, ByVal sel As Range, aff As Boolean)
Dim c As Integer 'colonne
Dim f As Integer 'feuille
Dim l As Integer 'ligne
Dim rec As Range 'recherche
Dim rep As String 'réponse
Dim tit As Integer 'ligne titre

tit = 1 '   numéro ligne titre à adapter
For f = 1 To Sheets.Count
    If Sheets(f).Name = sel.Value Then Exit For
Next f
If f > Sheets.Count Then
    rep = MsgBox("Voulez-vous créer l'onglet : " & sel.Value, vbQuestion + vbYesNo, "Création manager")
    If rep = vbNo Then Exit Sub
    Sheets.Add.Name = sel.Value 'création onglet manager
End If
Sheets(sel.Value).Activate
With Sheets(sel.Value)
    .Cells.ClearComments ' initialisation
    Sheets(feu.Name).Cells(tit, 1).EntireRow.Copy
    ActiveSheet.Cells(tit, 1).Select
    ActiveSheet.Paste
    l = 1: c = 1
Do ' recherche des enregistrements
    Set rec = Sheets(feu.Name).Cells.Find(What:=sel.Value, After:=.Cells(l, c), _
        LookIn:=xlValues, LookAt:=xlPart, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False)
    If rec Is Nothing Then Exit Do
    If rec.Row <= l Then Exit Do
    tit = tit + 1
    Sheets(feu.Name).Cells(rec.Row, 1).EntireRow.Copy
    ActiveSheet.Cells(tit, 1).Select
    ActiveSheet.Paste
    l = rec.Row:    c = rec.Column
Loop
    Application.CutCopyMode = False
End With
End Sub
0
Bonjour,
j'ai exactement le même problem, est-ce que tu pourrais m'indiquer dans l'explication ci-dessus qu'est-ce que l'on doit adapter afin de séléction selon le bon NOM de Manager !?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 716
24 oct. 2007 à 19:14
bonjour

est-ce que tu pourrais m'indiquer dans l'explication ci-dessus qu'est-ce que l'on doit adapter afin de séléction selon le bon NOM de Manager !?

Normalement tu n'as rien à adapter, sinon les libellés éventuellement, il suffit de copier cette macro et l'insérer dans "thisworkbook"

Pour l'utiliser, c'est avec un clic droit sur une cellule dont tu veux mettre les occurrences sur une feuille à part et quel que soit le contenu de la cellule, un onglet est créé avec le nom sélectionné et toutes les lignes qui contiennent cette valeur sont copiées dans le nouvel onglet.

Merci de me dire le résultat de tes tests.
0