Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Consolidation d'une feuille dans différents onglets

  • Initiateur de la discussion Initiateur de la discussion Spootduck
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Spootduck

Guest
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

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

Dernière édition:
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

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

Dernière édition:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

K
  • Question Question
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…