Tableaux remplis auto par date ap. c/c données autre onglet
Bonjour à tous,
SVP, j'ai besoin de votre aide pour un problème que j'ai. J'ai cherché une réponse sans vraiment trouvé donc j'écris un message pour vous spécifier ce que j'aimerais faire. Et ainsi voir avec vous si il existe une solution ou non. Et sinon, ce qu'on peut faire au mieux.
Alors, je vous explique (j'ai mis en PJ le type de fichier que j'ai, avec un code couleur pour vous aider à comprendre):
Sur un fichier, j'ai 4 onglets:
- l'un se nomme DATA, il sert à copier coller des extractions Excel avec de multiples données qui sont toujours dans le même ordre de colonnes. (Exemple des colonnes dans l'ordre: date, T, M, Type). La date indique la date du jour où l'on a fait l'extraction. C'est donc la même date par extraction. L'extraction copier coller se fait tous les jours. Les colonnes "T" et "M" indiquent des numéros. La colonne "Type" indique soit le mot "camion", soit le mot "voiture", soit le mot "autre".
Le but est qu'à chaque fois qu'on copie colle l'extraction dans l'onglet DATA, les tableaux des autres onglets se remplissent automatiquement au niveau de la date concernée !
- L'autre onglet s'appelle "Jour". C'est un tableau. Première colonne avec des dates dans l'ordre. La deuxième "Total" doit calculer le nombre de ligne (sauf la première du titre) qu'il y aura dans l'onglet DATA. La 2eme colonne "camion" doit calculer le nombre de cellule avec la mention camion sur tous l'onglet DATA. Idem avec colonne voiture et colonne autre.
Les cellules doivent se remplir à la date indiquée dans l'onglet DATA.
- Les 2 autres onglets sont similaires. Tableaux avec 1ere colonne date dans l'ordre également. Et dans les autres colonnes on a les numéros des T et les numéros des M dans leurs onglets respectifs. Le but est qu'à chaque fois que l'on a les données dans DATA, la ligne de la date en question indique par colonne des numéros, combien il y en a dans tout l'onglet DATA. (Exemple: dans DATA on a une colonne T avec les numéros suivants: 1, 2, 3, 4, 5. Dans l'onglet T, on la colonne date puis les colonne 1, 2, 3, 4, 5. Il faut qu'à la ligne de la date correspondante, le fichier indique combien il y a de 1, de 2, de 3 et ainsi de suite.
Voilà j'espère que vous avez compris. J'ai mis un exemple en PJ pour quelque chose de plus visuel. J'arrive à le faire individuellement avec des formules mais comme à chaque fois les DATA changent car la date change, il faut que les lignes remplies avant restent remplies.
Je vois plus le truc avec une Macro mais il y a peut être un moyen sans.
En tous cas, je vous remercie d'avance, j'espère que vous arriverez à comprendre mon problème et que vous trouverez la meilleure solution possible.
Bonne journée.
Bonjour,
Une proposition à étudier.
Cdlt.
Option Explicit
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet
Dim lastRow As Long
Dim dt As Date
Dim rng As Range, rCell As Range
Dim lo As ListObject
Dim I As Long, k As Long
Dim a As Double, b As Double, c As Double
Application.ScreenUpdating = False
'---------------------------------------------------------------------------------
Set wb = ActiveWorkbook
Set ws = wb.Worksheets("DATA")
Set ws2 = wb.Worksheets("Jour")
Set ws3 = wb.Worksheets("T")
Set ws4 = wb.Worksheets("M")
'---------------------------------------------------------------------------------
dt = ws.Cells(2, 1).Value
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = ws.Cells(1, 4).Resize(lastRow)
a = Application.CountIfs(rng, "camion")
b = Application.CountIfs(rng, "voiture")
c = Application.CountIfs(rng, "autre")
'---------------------------------------------------------------------------------
With ws2
Set lo = .ListObjects(1)
If lo.InsertRowRange Is Nothing Then
Set rCell = lo.HeaderRowRange.Cells(1).Offset(lo.ListRows.Count + 1)
Else
Set rCell = lo.InsertRowRange.Cells(1)
End If
rCell.Value = dt
rCell.Offset(0, 1).Value = a
rCell.Offset(0, 2).Value = b
rCell.Offset(0, 3).Value = c
Set rCell = Nothing: Set lo = Nothing: Set rng = Nothing
End With
'---------------------------------------------------------------------------------
Set rng = ws.Cells(2, 2).Resize(lastRow - 1)
With ws3
Set lo = .ListObjects(1)
If lo.InsertRowRange Is Nothing Then
Set rCell = lo.HeaderRowRange.Cells(1).Offset(lo.ListRows.Count + 1)
Else
Set rCell = lo.InsertRowRange.Cells(1)
End If
rCell.Value = dt
k = 1
For I = 2 To lo.ListColumns.Count
a = Application.CountIfs(rng, CLng(lo.HeaderRowRange(I)))
rCell.Offset(, k).Value = a
k = k + 1
Next I
Set rCell = Nothing: Set lo = Nothing: Set rng = Nothing
End With
'---------------------------------------------------------------------------------
Set rng = ws.Cells(2, 3).Resize(lastRow - 1)
With ws4
Set lo = .ListObjects(1)
If lo.InsertRowRange Is Nothing Then
Set rCell = lo.HeaderRowRange.Cells(1).Offset(lo.ListRows.Count + 1)
Else
Set rCell = lo.InsertRowRange.Cells(1)
End If
rCell.Value = dt
k = 1
For I = 2 To lo.ListColumns.Count
a = Application.CountIfs(rng, CLng(lo.HeaderRowRange(I)))
rCell.Offset(, k).Value = a
k = k + 1
Next I
Set rCell = Nothing: Set lo = Nothing: Set rng = Nothing
End With
'---------------------------------------------------------------------------------
Set ws4 = Nothing: Set ws3 = Nothing: Set ws2 = Nothing: Set ws = Nothing
Set wb = Nothing
End SubBonjour Jean-Eric,
Un grand grand MERCI pour ton aide; ça a l'air d'être tout a fait ça qu'il me faut.
Je vais essayer de mettre en place la macro maintenant.
Merci encore
Bonne journée.
Bonjour Jean-Eric,
Je reviens vers toi car après une semaine, je n'arrive pas à mettre an place ta macro sur mon fichier. Je suis pas super calé. Donc j'ai rajouté des précisions en reprenant le fichier que tu m'avais envoyé.
Est-il possible de reprendre ce que j'avais mis sur le message d'origine mais avec ces données et fichier plus précis.
camion -> truck
voiture -> parcel
autre -> tous les autres cellules de la colonne méthode ne comprenant ni le mot truck ni le mot parcel
De plus, j'ai rajouter un onglet avec des explications.
Si tu ne comprend pas tout ou que tu a besoin de précisions, n'hésites pas.
En espérant que tu m'aides une seconde fois, je te remercie grandement par avance.
Bonne journée.
Re-bonjour Jean-Eric,
Je te remercie encore beaucoup pour ton aide. C'était pas évident de comprendre ce que je voulais faire
De plus, j'avais une petite question supplémentaire: si je modifie la forme, couleur... des tableaux et les intitulés, normalement ça ne créera pas de bug ou problèmes sur la macro ?
En tous cas merci encore, faire ça en si peu de temps, c'est impressionnant
Bonne soirée.
Bonjour,
Tu peux modifier sans problème la mise en forme des tableaux.
Fais tout de même attention aux en-têtes de colonne. Ils doivent contenir exclusivement des chiffres.
Cdlt.
Bonjour,
Très bien, c'est noté.
Merci beaucoup.
Bonne continuation.