1 tableau a partir de plusieurs (onglets séparés)

Bonjour à tous,

C'est la première fois que je viens sur ce forum, mais je pense qu'il y'en aura d'autres. J'ai auparavant cherché des solutions a ma demande, j'ai trouvé quelques réponses, mais pas suffisantes, c'est pourquoi je crée un nouveau sujet :

Ce à quoi sert mon fichier :

J'ai un onglet par entreprise, dans lequel je note leur venue :

  • L'onglet porte le nom de l'entreprise
  • J'ai une ligne "entete"
  • Dans chaque colonne, on trouve des informations : Date, motif, heure d'arrivée, heure de départ, ...
A chaque fois que je reçois une entreprise, je rajoute donc une ligne sur l'onglet correspondant.

Ce que j'aimerai faire

J'aimerai, dans un onglet principal, avoir à la suite tous les tableaux de chaque onglet, avec possibilité de tri par colonne.

Etant donné que le nom de l'entreprise n'est mentionné que dans le nom de l'onglet, je rajoute une colonne sur la gauche qui va indiquer le nom de l'entreprise en face de la ligne correspondante.

J'ai suffisamment peu d'onglets pour faire une fonction en les traitant 1 par 1.

Techniquement : La fonction que je pense avoir ecrit doit :

- Tester si la ligne 1 de l'onglet 1 est non vide

Si oui --> On l'ajoute au tableau principal

Si non --> Tester si la ligne 1 de l'onglet 2 est non vide

Ou, en code excel :

=SI(NON(ESTVIDE('Onglet1'!$A2));'Onglet 1'!A2;SI(NON(ESTVIDE(Onglet2$A2));Onglet2A2;SI(NON(ESTVIDE(Onglet3$A2));Onglet3A2;SI(NON(ESTVIDE(Onglet4$A2));Onglet4A2;""))))

Dans cet exemple, la première ligne utile est la la L2

Problème :

La fonction marche bien, mais pour le premier onglet uniquement. Une fois que l'algo rencontre une ligne vide sur l'onglet 1, il ne passe pas a l'onglet 2.

Voilà, j'aimerai bien vous envoyer le fichier, mais il me faut un peu de temps pour "banaliser" les données sensibles. Je vais donc le faire, et j'uploaderai le fichier si il le faut.

Merci de votre réponse,

Bonjour,

Merci de joindre un fichier à ta requête pour permettre au forum de t'apporter une aide.

Cdlt.

Ci joint le fichier excel en question :

20effectif.xlsx (25.62 Ko)

Bonjour,

Une proposition à étudier.

Tu dois semble-t-il te familiariser avec l'utilisation des tableaux.

Cdlt.

29effectif.xlsm (31.73 Ko)
Option Explicit
Option Private Module

Public Sub ConsolidateData()
Dim wb As Workbook
Dim wsResult As Worksheet, ws As Worksheet
Dim startRow As Long, lastRow As Long

    Application.ScreenUpdating = False

    Set wb = ActiveWorkbook
    Set wsResult = wb.Worksheets("Général")

    With wsResult.ListObjects(1)
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With

    startRow = 4

    For Each ws In wb.Worksheets
        If ws.Name <> wsResult.Name Then
            If Not ws.ListObjects(1).DataBodyRange Is Nothing Then
                ws.ListObjects(1).DataBodyRange.Copy
                wsResult.Cells(startRow, 2).PasteSpecial xlPasteValues
                lastRow = wsResult.Cells(Rows.Count, 2).End(xlUp).Row
                wsResult.Range(Cells(startRow, 1), Cells(lastRow, 1)) = ws.Name
                startRow = lastRow + 1
            End If
        End If
    Next ws

    Application.CutCopyMode = False

    Set wsResult = Nothing: Set wb = Nothing

End Sub

Bon et bien oui, ça marche.

Je ne pensait pas que c'était ça, "consolider" un tableau.

Et maintenant que j'ai posté mon topic, les propositions dessous me suggèrent ds sujet avec les mêmes questions

Je ne suis pas très friand de macros, (même si j'ai compris l'algo dans celle ci), je pensait qu'il était aussi simple de le faire via des formules. Effectivement, la macro ici est accessible.

Merci beaucoup, je passe le sujet en résolu.

Rechercher des sujets similaires à "tableau partir onglets separes"