XL 2016 trie de date sur plusieurs feuilles

jean marc1234

XLDnaute Occasionnel
bonjour tout le monde,
je sollicite une nouvelle fois de l'aide. Mon problème est le suivant.
J'ai un classeur Excel comprenant plusieurs feuille avec des entêtes de tableaux identiques.
chaque tableaux possèdes un champs date.
Je regroupe tous ces tableaux dans une feuille "concaténation"
lors de cette opération la colonne date est triée par nom de feuille et nom par date comme je le souhaiterais.
De ce fait je ne peux effectuer de regroupement de date.
J'ai 5 classeurs identiques que je voudrais regrouper pour analyser les donner.
Je joint mon classeur pour les personnes qui voudrait bien jeter un œil.
Merci d'avance.
 

jean marc1234

XLDnaute Occasionnel
Re staple1600
bon je vais laisser cela de coté un peux. J'arrive pas à piger pourquoi sa fonctionne chez toi et pas chez moi.
Et c'est dommage parce que ton code rend l'action beaucoup plus rapide que le mien.
Je vais déjà essayer de résoudre le problème de date.
En tout cas , je voulais vraiment de remercier pour l'attention et le temps portée à mon problème.
je te souhaite une très bonne soirée et je manquerais pas de te tenir informé si je résolve mon problème.;)
Bye
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous devriez peut être décomposer :
VB:
    .Rows("6:" & .Cells(Rows.Count, "A").End(xlUp).Row).ClearContents
en :
VB:
    Ligne = .Cells(Rows.Count, "A").End(xlUp).Row
    If ligne >= 6 Then .Rows("6:" & LMax).ClearContents
Non ?
 

jean marc1234

XLDnaute Occasionnel
Bonjour.
Vous devriez peut être décomposer :
VB:
    .Rows("6:" & .Cells(Rows.Count, "A").End(xlUp).Row).ClearContents
en :
VB:
    Ligne = .Cells(Rows.Count, "A").End(xlUp).Row
    If ligne >= 6 Then .Rows("6:" & LMax).ClearContents
Non ?

bonjour dranreb,
merci pour la proposition, mais sa ne fonctionne pas non plus.
Une erreur d'incompatibilité
With Worksheets("consolidation")
ligne = .Cells(Rows.Count, "A").End(xlUp).Row
If ligne >=6 Then .Rows("6:" & LMax).ClearContents
 

Dranreb

XLDnaute Barbatruc
Oh pardon ! J'avais commencé par écrire le code avec une variable LMax, et j'ai seulement vu après qu'il existait déjà une variable ligne qu'on pouvait employer parce qu'elle n'est utilisée qu'après, mais j'ai oublié de la remplacer aussi dans la concaténation à "6:".

Édition: Mais vous auriez quand même pu comprendre mon intention et corriger de vous même.
Apparemment il faut que je vous l'explique: Si la feuille est déjà vide à partir de la ligne 6, .Cells(Rows.Count, "A").End(xlUp).Row va renvoyer une valeur inférieure, par exemple 5, à supposer une ligne de titres. Alors .Rows("6:5") va être interprété .Rows("5:6") ce qui va effacer la ligne de titres ! Ça semble sérieusement rappeler des soucis montrés sur certaines de vos images…
 
Dernière édition:

jean marc1234

XLDnaute Occasionnel
Oh pardon ! J'avais commencé par écrire le code avec une variable LMax, et j'ai seulement vu après qu'il existait déjà une variable ligne qu'on pouvait employer parce qu'elle n'est utilisée qu'après, mais j'ai oublié de la remplacer aussi dans la concaténation à "6:".
Re,
ont dirais qu'il y a du mieux. Donc déjà merci.
sa se place bien dans la cellule souhaitée
Par contre j'ai deux problèmes.
le premier avec les dates.
le second. il manque des enregistrement lors de la concaténation.
 

Pièces jointes

  • Capture 3.JPG
    Capture 3.JPG
    57.9 KB · Affichages: 26

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@jean marc1234
Avant le complément d'information fourni par Dranreb, j'avais écris
PS: Pour tester, il faut juste exécuter ma seule macro
(et ne pas lancer avant la macro effacedonnees présente dans ton fichier)
et
Re
Conditions de mon test
1) La feuille consolidation n'est pas vide avant de lancer ma macro
(et la feuille n'est pas filtrée)
Par conséquent, cela aurait pu suffire, non ?
 

jean marc1234

XLDnaute Occasionnel
Bonsoir le fil, le forum

@jean marc1234
Avant le complément d'information fourni par Dranreb, j'avais écris

et

Par conséquent, cela aurait pu suffire, non ?
bonjour staple,
désolé je n'ai pas pu répondre avant.
Mais sa fonctionné pas mieux, je te l'avais indiqué.
Mais encore une fois le problème vient certainement de moi. Une chose que je vois pas ou que je fais pas correctement, mais je trouve pas.
La sa fonctionne en partie, sauf pour ce problème de date et d'enregistrement manquant.
En tout merci de suivre le fil.
Bien à toi.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@jean marc1234
En clair avec la macro telle que je l'ai écrite, il est nécessaire que la feuille consolidation contiennent des données après la ligne 6
(Donc de ne pas effacer les données présentes avant de lancer la macro)
Ou alors il faut écrire la macro autrement.

EDITION: Désolé , je viens de relire tout le fil.
ll semblerait que j'ai copié/coller une version de ma macro avec des scories de mes tests :rolleyes:

Donc voici la dernière version que normalement cette fois-ci devrait fonctionner chez toi
VB:
Sub consolider_D()
Dim ArrWks, ws As Worksheet, ligne As Long
ArrWks = _
Array("ales", "arles", "bagnols", "calvisson", "grau du roi", "montpellier", "nimes", "uzes")
Application.ScreenUpdating = False
With Worksheets("consolidation")
   .Rows("6:" & .Rows.Count).ClearContents
    For Each ws In Sheets(ArrWks)
    ws.AutoFilterMode = False
        ligne = ws.Cells(Rows.Count, "A").End(xlUp).Row
        ws.Range(ws.Cells(3, "A"), ws.Cells(ligne, "K")).Copy
        .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
Next ws
End With
Application.ScreenUpdating = True
MsgBox "Consolidation terminée", vbInformation
End Sub
 
Dernière édition:

jean marc1234

XLDnaute Occasionnel
Bonsoir le fil, le forum

@jean marc1234
En clair avec la macro telle que je l'ai écrite, il est nécessaire que la feuille consolidation contiennent des données après la ligne 6
(Donc de ne pas effacer les données présentes avant de lancer la macro)
Ou alors il faut écrire la macro autrement.
bonsoir staple,
Je suis dessus justement, sa fonctionne pas chez moi. manque d'enregistrements après la consolidation.
J'ai en prévision de faire la même chose mais pour regrouper plusieurs classeur.
Je voudrais déjà bien maitriser déjà sur un classeur.
 

Staple1600

XLDnaute Barbatruc
Re,

Relire mon précédent message
Pour simplifier fait le test suivant (ce que je viens de faire)
Dans un classeur vierge, inseres neuf feuilles et renommes les.
Une feuille nommée consolidation, puis les huit autres avec le noms des villes
Ensuite mets une ligne d'entête en ligne 5 sur le feuille consolidation
(de A5 à K5)
Enfin lances cette macro
VB:
Sub generer_test()
Dim ArrWks, ws As Worksheet, ligne As Long
ArrWks = _
Array("ales", "arles", "bagnols", "calvisson", "grau du roi", "montpellier", "nimes", "uzes")
Application.ScreenUpdating = False
For Each ws In Sheets(ArrWks)
ws.Range("A3:K" & Int(Rnd * 30) + 5) = ws.Index & " _ " & Now
Next
End Sub
Normalement tu dois avoir des données "bidons" sur les huit feuilles au nom de ville.

Pour finir le test, lance la macro* de mon message précédent

Toutes les données sont bien copiées sur la feuille consolidation, non ?

*: Sub consolider_D()
 

jean marc1234

XLDnaute Occasionnel
Re,

Relire mon précédent message
Pour simplifier fait le test suivant (ce que je viens de faire)
Dans un classeur vierge, inseres neuf feuilles et renommes les.
Une feuille nommée consolidation, puis les huit autres avec le noms des villes
Ensuite mets une ligne d'entête en ligne 5 sur le feuille consolidation
(de A5 à K5)
Enfin lances cette macro
VB:
Sub generer_test()
Dim ArrWks, ws As Worksheet, ligne As Long
ArrWks = _
Array("ales", "arles", "bagnols", "calvisson", "grau du roi", "montpellier", "nimes", "uzes")
Application.ScreenUpdating = False
For Each ws In Sheets(ArrWks)
ws.Range("A3:K" & Int(Rnd * 30) + 5) = ws.Index & " _ " & Now
Next
End Sub
Normalement tu dois avoir des données "bidons" sur les huit feuilles au nom de ville.

Pour finir le test, lance la macro* de mon message précédent

Toutes les données sont bien copiées sur la feuille consolidation, non ?

*: Sub consolider_D()
re,
la, sa a l'air de bien fonctionner.
je te tien informer de la suite.
Mais encore merci pour le suivit
 

jean marc1234

XLDnaute Occasionnel
bonjour staple1600,
un petit mot, juste pour te faire savoir que la sa fonctionne très bien et je ne perd aucun enregistrement.
Par contre je n'arrive toujours pas à faire un tri par date au niveau de la concaténation pour ensuite pouvoir un faire des regroupements.
en tout cas encore merci.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

jean marc1234
Désolé pour l'erreur de copier/coller qui a fait que cela fonctionnait chez moi pas chez toi.

Pour ce qui du tri par date, tu as essayé une fois la concaténation effectuée de trier en laissant tourner l'enregistreur de macros?

Sinon as-tu envisagé l'emploi d'un TCD ?
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T