Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille xls

Clairet

XLDnaute Nouveau
Bonjour à Tous,

Je suis nouvelle sur le Forum, j'avoue que vous m'avez déjà beaucoup aidé sans le savoir .... j'ai déjà trouvé des réponses à pas mal de mes questions rien qu'en faisant des recherches !!!

Mais là, je ne trouve pas de fil sur mon sujet, je tente donc ma chance en espérant que vous m'aidiez à trouver une solution beaucoup rapide que celle que j'ai actuellement sous la main !

Voilà mon problème :
J'ai des extractions mensuelles chacune dans une feuille xls séparé......et il faut que j'arrive à les mettre dans une seule feuille xls...pour avoir tous les mois dans la même feuille et pouvoir faire une somme annuelle.

Chaque ligne est unique, les 5 premières colonnes sont des données business, la 6ème colonne est un comptage du nombre de fois où le cas est arrivé dans le mois.

Chaque mois, des données business peuvent apparaître ou disparaître. J'ai bien un noyeau de données business qui est identique chaque mois....mais j'en ai quand même pas mal qui sont alléatoires....et je n'ai aucun moyen de de savoir quelles sont les données identiques ou alléatoires à l'avance.

Dans le fichier joint, j'ai mis à quoi ressemblait mon fichier original :
- les 2 premiers onglets sont des données mensuelles janvier et février
- le 3ème onglet "cumul" est ce que je souhaite faire !
Mon fichier original a évidemment beaucoup plus de ligne (sinon je pourrai le faire à la main !!) --> dans chaque onglet mensuel je peux avoir jusqu'à 30 000 lignes (sans doublons) et dans le fichier cumul .....jusqu'à 50 000 lignes (sans doublons)

Actuellement, j'ai une solution qui me prends beaucoup de temps ..... je fais une concaténation des données business des 5 premières colonnes et ensuite des recherchv dans tous les sens (je fais d'abord une recherchv de février dans janvier .....j'ai donc les comptages des données business identiques, puis une recherchv de janvier dans février ....toutes les réponses #n/a sont donc des données business en plus en février.....que je rajoute donc dans janvier).

J'ai 6 années à faire comme ça ......donc une solution plus efficace me serait très utile !!

(depuis que j'ai repris le projet, je fais directement des extractions annuelles cumulées.....mais pour l'historique c'est impossible !!)


J'ai essayé d'être le plus claire possible .....si ce n'est pas le cas dites le moi et je re-essayerai !!

Merci beaucoup de votre aide
Clairet
 

Pièces jointes

  • comptage.xlsx
    11.4 KB · Affichages: 59
  • comptage.xlsx
    11.4 KB · Affichages: 66
  • comptage.xlsx
    11.4 KB · Affichages: 65

ERIC S

XLDnaute Barbatruc
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Bonjour

quand tu dis que tu as une solution lente, c'est parce que tu fais tout à la main (par formules) ou tu utilises déjà des macros ?
 

WUTED

XLDnaute Occasionnel
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Bonjour Clairet, ERIC S,

Voici un essai :

VB:
Sub Bilan()
    Dim sh As Worksheet
    Dim state As Boolean
    For Each sh In Sheets
        If sh.Name <> "cumul" Then
            With Sheets("cumul")
                For i = 2 To sh.Range("A65536").End(xlUp).Row
                    state = False
                    For j = 2 To .Range("A65536").End(xlUp).Row
                        If sh.Range("A" & i).Value = .Range("A" & j).Value And sh.Range("B" & i).Value = .Range("B" & j).Value And sh.Range("C" & i).Value = .Range("C" & j).Value And sh.Range("D" & i).Value = .Range("D" & j).Value And sh.Range("E" & i).Value = .Range("E" & j).Value Then
                            For k = 5 To .Range("IV1").End(xlToLeft).Column - 1
                                If .Range("A1").Offset(0, k).Value = "comptage " & sh.Name Then
                                    .Range("A" & j).Offset(0, k).Value = sh.Range("F" & i).Value
                                    state = True
                                    Exit For
                                End If
                            Next k
                        End If
                    Next j
                    If state = False Then
                        sh.Range("A" & i & ":E" & i).Copy Destination:=.Range("A" & .Range("A65536").End(xlUp).Row + 1)
                        For k = 5 To .Range("IV1").End(xlToLeft).Column - 1
                            If .Range("A1").Offset(0, k).Value = "comptage " & sh.Name Then
                                .Range("A" & .Range("A65536").End(xlUp).Row).Offset(0, k).Value = sh.Range("F" & i).Value
                                Exit For
                            End If
                        Next k
                    End If
                Next i
            End With
        End If
    Next sh
    Do
        If Sheets("cumul").Range("A2:K" & Sheets("cumul").Range("A65536").End(xlUp).Row).Find("") Is Nothing Then
            Exit Do
        Else
            Sheets("cumul").Range("A2:K" & Sheets("cumul").Range("A65536").End(xlUp).Row).Find("").Value = 0
        End If
    Loop
End Sub
 

Clairet

XLDnaute Nouveau
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Bonjour Eric S,

Oui très très très lente comme solution car avec des formules et sans macros (je suis vraiment pas experte dans ce domaine) et en plus jusqu'à récemment avec un PC qui datait de la préhistoire.....

Merci
Cdt
Clairet
 

Clairet

XLDnaute Nouveau
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Wuted,

Merci bcp !!
Je vais étudier ton code et essayer !!
Je vous reviens dès qu'essayer .....peut être pas avant demain car je suis sur d'autres sujets cet après midi !

Cdt,
Clairet
 

ERIC S

XLDnaute Barbatruc
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Re

comme moi je suis lent
mon oeuvre (qui je l'espère fonctionne)...............avec un code ausi basique que mon cerveau
 

Pièces jointes

  • comptageES.xlsm
    32.5 KB · Affichages: 49

Clairet

XLDnaute Nouveau
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Wuted, Eric S,

Je n'ai évidemment pas résisté à la tentation d'essayer vos macros respectives sur une partie de mes vrais fichiers ..... à première vue ça fonctionne correctement !!!

Pas que j'en doutais (je ne me permettrai pas) mais c'est comme magique pour moi : un petit clic sur la macro, et hop !!! mes fichiers tout transformer !! :D

Bon allez je me remets le coeur plus léger au boulot ......je passerai l'intégralité de mes fichiers d'ici la fin de la semaine prochaine !!!

Et quand même, je vais regarder le code pour comprendre .....car j'aime bien comprendre et apprendre !

Merci !!!
Cdt
Clairet
 

ERIC S

XLDnaute Barbatruc
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Bonjour

manipuler autant de données va demander beaucoup de temps de calcul notamment avec ma méthode (je n'ai pas testé celle de wuted)

pour ma culture perso, je suis allé fouiller en pensant que calculer en tableau pouvait accélérer, mais j'ai en plus vu les dictionary

IMPORTANT : valider le scriping, comme indiqué sur le site


Scripting.dictionary : les dictionnaires dans excel | www.excelabo.net

il y a peut-être des erreurs (j'ai plus testé le chrono que le résultat) mais je soumets le fichier test joint, avis aux accélérateurs fous....
 

Pièces jointes

  • comptageES2.xlsm
    99.8 KB · Affichages: 43

Clairet

XLDnaute Nouveau
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Bonjour Eric S,

En effet, il semble que le nombre de données coince un peu :p

Ca marche très très bien (et rapidement) avec environ 500 lignes pour chaque mois.....par contre quand j'ai mis mes 40 000 lignes par mois ......ça mouline complètement !!!! et aucun résultat ......ou alors je n'ai pas laissé assez longtemps (45 min environ).

Bref pas très grave, ce boulot n'est pas non plus urgentissime et de toute façon, vu le temps que je vais gagner, même si je fais client par client .....ce sera bcp rapide qu'avant.

Je vais essayer la nouvelle macro.....dès que j'ai le temps !!

Merci bcp
Cdt
Clairet
 

ERIC S

XLDnaute Barbatruc
Re : Mettre des données mensuelles (donc 12 feuilles séparées) dans une seule feuille

Bonjour à tous

en attendant les remarques de Claire, je me suis fait un fichier test bâti sur son exemple, avec la possibilité de générer automatiquement ou non des données sur 2 mois et permettant de comparer différentes méthodes.

Il peut peut-être aussi vous servir alors le voilà
 

Pièces jointes

  • test boucles ES.xlsm
    265 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
314 631
Messages
2 111 391
Membres
111 120
dernier inscrit
Barthelemius