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.
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
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
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…
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.
je laisse Staple1600 reprendre le cours de la discussion. Je me suis borné à dénoncer ce qui m'était apparu comme une évidence à propos des ":" dont vous parliez.
je laisse Staple1600 reprendre le cours de la discussion. Je me suis borné à dénoncé ce qui m'était apparu comme une évidence à propos des ":" dont vous parliez.
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.
@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
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
@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.
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 ?
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 ?
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.