comment découper une liste dans différents onglets

bolem

XLDnaute Nouveau
Bonjour

Je pensais retrouver cela en cherchant mais je suis un très mauvais chercheur...
Je souhaite découper une liste en différents onglets.
Dans le fichier exemple, il y a 3 colonnes
prénom, code, adresse

Je voudrais pouvoir répartir toutes les lignes sur différents onglets suivant le code.
Chaque onglet aurait donc comme nom le code et on retrouverait les lignes entières de la liste dans chaque onglet

Deux possibilités :
en connaissant les différentes possibilités du code (nombre fini de cas) ou en ne connaissant pas a priori les cas

merci d'avance

Olivier
 

Pièces jointes

  • essai.xlsx
    10.6 KB · Affichages: 63
  • essai.xlsx
    10.6 KB · Affichages: 67

ROGER2327

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

Bonjour bolem.


Un essai.
C'est du brut de décoffrage : si ça va dans le bon sens, on peaufinera...​


Bonne journée.


ℝOGER2327
#8096


Samedi 14 As 143 (Saint Pierre Bonnard, peintre des Phynances - fête Suprême Quarte)
25 Brumaire An CCXXIV, 0,1701h - faisan
2015-W47-1T00:24:29Z

P. s. : Pièce jointe supprimée, la procédure proposée étant beaucoup trop lente.
Voir le message #4.
 
Dernière édition:

Marc L

XLDnaute Occasionnel
Bonjour,

en utilisant juste les fonctionnalités d'Excel, notamment le filtre avancé :

VB:
Sub Demo()
                Application.ScreenUpdating = False
    With Feuil1
        With .Cells(1).CurrentRegion.Columns
            C& = .Count + 2
            .Item(2).AdvancedFilter xlFilterCopy, , .Parent.Cells(C), True
        End With
        With .Cells(C).CurrentRegion
             .Sort .Cells(1), xlAscending, Header:=xlYes
             N& = .Rows.Count
        End With
        For R& = 2 To N
            S$ = .Cells(R, C).Value:  .Cells(2, C).Value = S
            With Worksheets
                If Evaluate("ISREF('" & S & "'!A1)") Then .Item(S).UsedRange.Clear _
                                                     Else .Add(, .Item(.Count)).Name = S
            End With
            .Cells(1).CurrentRegion.AdvancedFilter xlFilterCopy, .Cells(C).Resize(2), _
                                                             Worksheets(S).Cells(1)
            With Worksheets(S).Cells(1).CurrentRegion
                .Sort .Cells(1), xlAscending, Header:=xlYes
            End With
        Next
                .Cells(C).Resize(N).Clear
    End With
                Application.ScreenUpdating = True
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Charlie, Bardo, Sousse, Paris
 

ROGER2327

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

Bonjour à tous.

Remplacement de la pièce jointe du message #2

Bonne journée.


ℝOGER2327
#8097


Samedi 14 As 143 (Saint Pierre Bonnard, peintre des Phynances - fête Suprême Quarte)
25 Brumaire An CCXXIV, 4,4924h - faisan
2015-W47-1T10:46:54Z
 

Pièces jointes

  • Copie de essai.xlsm
    26.1 KB · Affichages: 87
  • Copie de essai.xlsm
    26.1 KB · Affichages: 79

ROGER2327

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

Bonjour Marc L.


(...) en utilisant juste les fonctionnalités d'Excel, notamment le filtre avancé (...)

C'est tentant mais particulièrement inefficace !​


Bonne journée.


ℝOGER2327
#8098


Samedi 14 As 143 (Saint Pierre Bonnard, peintre des Phynances - fête Suprême Quarte)
25 Brumaire An CCXXIV, 5,4525h - faisan
2015-W47-1T13:05:10Z
 

Marc L

XLDnaute Occasionnel
C'est tentant mais particulièrement inefficace !
Inefficace comme ton premier code ?

Les fonctions internes d'Excel fonctionnent bien pour peu de les connaître !
Comme le démontre cette animation à partir du classeur joint par le demandeur …

Avant d'écrire une ineptie (pour ne pas dire une connerie !), mieux vaut vérifier ‼ ;)
Pourtant tu n'as pas hésité à reprendre une partie de mon code dans ton second opus !
(création feuille, tri …)

Evidemment une autre fonctionnalité d'Excel est la voie logique
sans besoin de créer un code : le tableau croisé dynamique …
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : comment découper une liste dans différents onglets

Bonjour,

Une de +

Code:
Sub Extrait()
  Set f = Sheets("BD")
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
  bd = f.Range("A2:C" & f.[A65000].End(xlUp).Row)
  Set d = CreateObject("scripting.dictionary")
  For i = 1 To UBound(bd): d(bd(i, 2)) = d(bd(i, 2)) & i & ",": Next         ' dictionnaire
  For Each k In d.keys
     On Error Resume Next: Sheets(k).Delete: On Error GoTo 0
     Sheets.Add After:=Sheets(Sheets.Count)
     ActiveSheet.Name = k
     a = Application.Index(bd, Application.Transpose(Split(d.Item(k), ",")), _
        Application.Transpose(Evaluate("Row(1:" & UBound(bd, 2) & ")")))     ' extraction array()
     [a2].Resize(UBound(a) - 1, UBound(a, 2)) = a
     f.[a1:C1].Copy [a1]
  Next k
End Sub

Si on ne veut récupérer que les colonnes 1 et 3 dans les onglets, remplacer l'extraction de l'Array BD() par

a = Application.Index(bd, Application.Transpose(Split(d.Item(k), ",")), Array(1, 3))

JB
 

Pièces jointes

  • ExtraitBDDicoArray.xls
    414 KB · Affichages: 67
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

#7 Sans commentaire.


ℝOGER2327
#8099


Samedi 14 As 143 (Saint Pierre Bonnard, peintre des Phynances - fête Suprême Quarte)
25 Brumaire An CCXXIV, 6,7091h - faisan
2015-W47-1T16:06:06Z
 

Pièces jointes

  • Ventilation.xlsm
    34.1 KB · Affichages: 65
  • Ventilation.xlsm
    34.1 KB · Affichages: 66

ROGER2327

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

Une version plus légère incluant le code de BOISGONTIER.


Bonne soirée.


ℝOGER2327
#8100


Samedi 14 As 143 (Saint Pierre Bonnard, peintre des Phynances - fête Suprême Quarte)
25 Brumaire An CCXXIV, 6,9881h - faisan
2015-W47-1T16:46:17Z
 

Pièces jointes

  • Ventilation_2.xls
    80.5 KB · Affichages: 64

gosselien

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

Bonsoir,

essai des différents codes chez moi sur win 7 excel 2007 ACER 2.0 Ghz (vieux machin):
64.501 lignes 3 colonnes (créées avant par le code de Roger2327) donnant 20 onglets

ce split en onglet donne donc:
code "tata": 2.46875 code "demo": 8.382125 code "extrait": 7.445125 code JB: 6.820313

and the winner is :) Roger2327 :)

mais [humour] que faire avec les 6 secondes gagnées ? [humour off]

P.
 

ROGER2327

XLDnaute Barbatruc
Re : comment découper une liste dans différents onglets

Re...


(...)

mais [humour] que faire avec les 6 secondes gagnées ? [humour off]

P.
Rien ! Mais si on doit passer à Lien supprimé...​


Bonne soirée.


ℝOGER2327
#8101


Samedi 14 As 143 (Saint Pierre Bonnard, peintre des Phynances - fête Suprême Quarte)
25 Brumaire An CCXXIV, 7,5932h - faisan
2015-W47-1T18:13:25Z
 

bolem

XLDnaute Nouveau
Re : comment découper une liste dans différents onglets

Bonsoir

Merci pour les différentes solutions trouvées.
je ne sais pas si je vais avoir le temps de les tester ce soir mais promis, je reviens vers vous pour vous dire si je peux utiliser ces solutions à titre personnel (pour une liste de 100 personnes) sur Xls10 ou professionnel (pour une liste de 10 000 factures) sur xls03

olivier
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry