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, ...
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 :
Bonjour,
Une proposition à étudier.
Tu dois semble-t-il te familiariser avec l'utilisation des tableaux.
Cdlt.
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 SubBon 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.