Consolidation d'une feuille dans différents onglets

Spootduck

XLDnaute Nouveau
Bonjours,

Je viens ici après avoir essayé de programmé un code VBA à l'aide des différentes informations trouvé sur le forum mais en vain...
Auriez-vous le possibilité de m'aider?
J'ai des informations sur une feuille que j'aimerais répartir dans différents onglets en fonction d'un nom.
Ces informations proviennent d'un copié coller d'un fichier PDF. Et sous chaque nom j'ai quelques lignes que j'aimerai recopier dans le bon onglet en fonction du nom.

Auriez-vous une idée?

Merci d'avance
 

Pièces jointes

  • Classeur3.xlsx
    10.2 KB · Affichages: 34
  • Classeur3.xlsx
    10.2 KB · Affichages: 39
  • Classeur3.xlsx
    10.2 KB · Affichages: 43

JCGL

XLDnaute Barbatruc
Re : Consolidation d'une feuille dans différents onglets

Bonjour à tous,

Bienvenue sur XLD

Un essai avec une base légèrement modifiée

A+ à tous
 

Pièces jointes

  • JC Ventilation.xlsm
    43.3 KB · Affichages: 38
  • JC Ventilation.xlsm
    43.3 KB · Affichages: 42
  • JC Ventilation.xlsm
    43.3 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re : Consolidation d'une feuille dans différents onglets

Bonjour Spootduck, bienvenue sur XLD,

Placez cette macro dans le ThisWorkbook (Alt+F11) :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim a, i As Variant, n As Long
a = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi")
With Feuil1 'CodeName de la feuille source
  If Sh.Name <> .Name Then 'sécurité
    i = Application.Match(Sh.Name, .[A:A], 0)
    If IsNumeric(i) Then
      n = 1
      While IsNumeric(Application.Match(.Cells(i + n, 1), a, 0))
        n = n + 1
      Wend
      .Rows(i).Resize(n).Copy Sh.[A1]
      Sh.Rows(n + 1 & ":" & Rows.Count).Delete
    End If
  End If
End With
End Sub
La macro s'exécute quand on active une feuille quelconque.

Fichier .xlsm (acceptant les macros) joint.

Edit : bonjour Jean-Claude, je ne t'avais pas vu :)

A+
 

Pièces jointes

  • Tri par onglet(1).xlsm
    18.3 KB · Affichages: 23
Dernière édition:

job75

XLDnaute Barbatruc
Re : Consolidation d'une feuille dans différents onglets

Re,

Une autre manière de faire, en créant la liste des noms des feuilles :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim a(), w As Worksheet, n As Long, i As Variant
With Feuil1 'CodeName de la feuille source
  If Sh.Name <> .Name Then 'sécurité
    ReDim a(1 To Worksheets.Count)
    For Each w In Worksheets
      If w.Name <> .Name And w.Name <> Sh.Name Then
        n = n + 1
        a(n) = w.Name
      End If
    Next
    i = Application.Match(Sh.Name, .[A:A], 0)
    If IsNumeric(i) Then
      n = 1
      While Not IsEmpty(.Cells(i + n, 1)) And _
        IsError(Application.Match(.Cells(i + n, 1), a, 0))
        n = n + 1
      Wend
      .Rows(i).Resize(n).Copy Sh.[A1]
      Sh.Rows(n + 1 & ":" & Rows.Count).Delete
    End If
  End If
End With
End Sub
Fichier (2)

A+
 

Pièces jointes

  • Tri par onglet(2).xlsm
    19.1 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re : Consolidation d'une feuille dans différents onglets

Re,

Cette macro fonctionnera bien même s'il y a des cellules vides en colonne A :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim derlig As Long, a(), w As Worksheet, n As Long, i As Variant
With Feuil1 'CodeName de la feuille source
  If Sh.Name <> .Name Then 'sécurité
    derlig = .UsedRange.Row + .UsedRange.Rows.Count - 1
    ReDim a(1 To Worksheets.Count)
    For Each w In Worksheets
      If w.Name <> Sh.Name Then
        n = n + 1
        a(n) = w.Name
      End If
    Next
    i = Application.Match(Sh.Name, .[A:A], 0)
    If IsNumeric(i) Then
      n = 1
      While i + n < derlig And _
        IsError(Application.Match(.Cells(i + n, 1), a, 0))
        n = n + 1
      Wend
      .Rows(i).Resize(n).Copy Sh.[A1]
      Sh.Rows(n + 1 & ":" & Rows.Count).Delete
    End If
  End If
End With
End Sub
Fichier (3), voir l'exemple pour "paul".

A+
 

Pièces jointes

  • Tri par onglet(3).xlsm
    19.5 KB · Affichages: 18
Dernière édition:

Spootduck

XLDnaute Nouveau
Re : Consolidation d'une feuille dans différents onglets

Une macro dans le thisborkbook ne fonctionne pas. Peut être à cause de la création de mes onglets à partir d'une base sur une autre feuille. Mes onglets se créent à partir d'une base (feuille "menu et collaborateurs"). Cette base se renseigne après lancement d'une macro qui trie les noms des personnes présentes dans les feuilles "Lundi" à "Samedi". Puis se crée automatiquement les feuilles à partir d'un modèle et de la base "menu et collaborateurs". Je cherche maintenant à faire apparaître les infos de la feuille "suivi pointage" sur les feuilles correspondantes.

Dois-je partir sur ma première macro intitulé "fillsheet" dans le document que je vous joint?
Merci pour vos réponses
 

Pièces jointes

  • Classeur1test.xls
    259 KB · Affichages: 22
  • Classeur1test.xls
    259 KB · Affichages: 23
  • Classeur1test.xls
    259 KB · Affichages: 22

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87