Import qui plante et double

Bonjour,
Dans la macro « Sub aggregation2() »
juste après

Sub aggregation2()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

et à la fin avant le End Sub

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Coucou ,
normalement c’est bon :slight_smile: Master_Fichier_Excels_trame_v5 (7).xlsm (2,1 Mo)
Peux tu confirmer? :slight_smile:

Re,
Non, si tu lis bien ce que j’ai mis …
Master_Fichier_Excels_trame_v5 (7).xlsm (2,0 Mo)

Bonjour Mimimathy
Effectivement remarque très pertinente que j ai d’ailleurs incluse pour une part dans ma dernière version en rajoutant l instruction :

Application.Calculation = xlCalculationManual
Et son inverse en fin

Et de gagner un temps d exécution appréciable

Je vais rajouter la deuxième cela ne mange pas de pain

Merci à toi pour ces précieux conseils

Re FFO,

Une petite astuce pour toi et à mettre en sauvegarde si le cas se représente
j’avis trouvé, et retrouvé une façon d’exploiter les CSV multiples afin d’éviter les boucles et une perte de temps
tu créés dans le dossier contenant les CSV un bloc notes
dans le bloc notes tu copies cette ligne qui si tu double clic dessus te concatène tous les CSV du dossier

copy *.csv Recap.csv 

tu l’enregistres et tu le renommes avec l’extension .BAT (fichier de lancement)

dans la macro pour exploiter les CSV
tu places cette macro au début de la recherche du classeur CSV

repertoire = ThisWorkbook.Path & "\input\"
  Shell "cmd.exe /c cd " & repertoire & "&&Recap.bat"
  Application.Wait (Now + TimeValue("00:00:01"))
  Application.ScreenUpdating = False
  Set principal = ThisWorkbook
  fichier = repertoire & "Recap.csv"
  Workbooks.Open (fichier)
  ActiveSheet.UsedRange.Copy Destination:=principal.Sheets("Fichier_Consolidé-020221").Range("A2")
  ActiveWorkbook.Close
  Kill fichier

J(ai pas mis de commentaires, mais tu devrais bien suivre le processus
Cela te créé un CSV avec tous les CSV du dossier et te le balance dans le classeur en brut , puis le supprime
Il faut, bien sûr ne pas effacer le fichier .BAT

Tu gagnes en vitesse d’exécution avec des multiples CSV.
Teste simplement par double-clic sur le fichier . BAT, et tu verras

Bonjour Mimimathy

Merci pour l’info

Je testerai

Bonjour à tous, me revoilà.
@FFO un grand merci pour hier tu m’as bien dépatouillé, cependant dans le fichier
je note un bugue et je ne l’explique pas sur ma colonne F
tout les nombres qui sont à droites sont sommables mais ceux qui sont à gauche donc ca fausse mes résultats covid
pourtant ils sont censé être nombre.
Comment faire?
Encore un grand merci…

Master_Fichier_Excels_trame_FINAL.xlsm (2,2 Mo)

Ps: il m’est pas possible de lancer des fichiers .BAT PC totalement bridé ici

Bonjour

Colonne hélas contaminée par le même virus que celle de F et B
Même antidote et la guérison à la clé
Testes et dis moi

Master_Fichier_Excels_trame_FINAL.xlsm (2,1 Mo)

MERCI :slight_smile: j’avance alors ! tu es top !

Et non pas si top puisque tu reviens avec des imperfections !!!
J’espère que cette fois-ci !!!
Croisons les doigts

Je viens de tester
Pour le regroupement des fichiers il n’y a pas photo même pas le temps de regarder ma trotteuse je suis déjà devant le résultat
C’est le speedy gonzales informatique
Par contre à exploiter dans Excel via ta procédure pas si simple
Le résultat est bien ramené dans l’onglet de destination mais dans une seule et même colonne A avec toutes les données par ligne séparées par un point virgule
Obligé de convertir pour les séparer ce qui à l’inconvénient de me supprimer des éléments ramenés du modèle dont le traitement avais fais la copie et donc d’être contraint à les réintégrer une deuxième fois (titres formules etc…)
Il faudrait pouvoir convertir les données dans le fichier « Recap.csv » avant de les mettre dans l’onglet de destination
Dans la procédure que tu m’as fourni je n’ai pas regardé si c’était faisable
Autre inconvénient aucune liste des fichiers traités en colonne O c’est un peu plus handicapant
Sinon au niveau du gain en temps d’exécution on n’excède pas 15 secondes

Voila donc pour mes constats

Mais c’est une approche à conserver

Merci à toi

Re,
C’est pas un problème pour les « ; »
tu te fais une petite macro enregistrée avec depuis le menu données --> convertir en stipulant « délimité » par des « ; » sur la même cellule de début et roule ma poule, tu as les colonnes séparées.

C est que j ai fais mais cette opération me supprime dans l onglet concerné des éléments déjà en place que je suis donc obligé de réintégrer (données formules format etc…)
Pas très simple à gérer
Si les données avaient à l intégration leur colonne adaptée s eut été préférable et plus simple à gérer
C est le petit inconvénient

Re,

Teste cette macro (le mieux est de créer une feuille qui recevra tous les classeurs en CSV sans entête et formatés

Option Explicit

Sub Importer_CSV()
  Dim QuelFichier$, Dl%, repfichier$, Fichier$, t
  t = Timer
  Range("A:F").ClearContents
  repfichier = ThisWorkbook.Path & "\Input\"
  
  Fichier = Dir(repfichier & "*.csv")
  
  Do While Fichier <> ""
    QuelFichier = repfichier & Fichier
    Dl = Range("A" & Rows.Count).End(xlUp).Row + 1
    If Dl = 2 Then Dl = 1
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & QuelFichier, Destination:=ActiveSheet.Range("A" & Dl))
        .Name = "Feuil1"
        .FieldNames = True
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshStyle = xlInsertDeleteCells
        .RefreshPeriod = 0
        .TextFilePlatform = 1252
        .TextFileStartRow = 2
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Fichier = Dir
  Loop
  Range("E:F,B:B").Select
  Selection.Replace What:=vbTab, Replacement:="", LookAt:=xlPart, _
  SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  ReplaceFormat:=False
  Range("A1").Select
  MsgBox Timer - t
End Sub

En fait ce que tu me proposes est proche de ce que j’ai réalisé
Tu récupères toutes les données des fichiers csv dans un onglet transitoire
tu les convertis puis te les injectes dans l’onglet de destination
Moi chaque fichier csv est ouvert converti et injecté dans l’onglet de destination les uns à la suite des autres

Même approche toi tu regroupes convertis et injectes moi je convertis injecte et regroupe

Je testerai ta proposition

Merci beaucoup pour ton aide et conseils

Re,
L’avantage, c’est que les classeurs ne sont pas ouverts
2.3 secondes avec la mise en forme sur mon PC

Je viens de tester ta dernière proposition en incluant l’intégralité de la procédure

Effectivement le temps d’exécution est sans appel : 2.33 seconde contre 9.52 seconde pour la mienne avec les 2 lignes de codes intégrées en début et en fin pour la doper

4 fois plus rapide

Maintenant cela se joue au niveau de la seconde ce qui à l’oeil est négligeable

De plus les noms de fichiers traités ne sont pas mentionnés en colonne O

Mais je m’incline chapeau bas devant la performance

Je capitalise !!!

Merci

Re,

De rien
les 2 macros que j’ai placé sont juste là pour démo et à garder si dés fois une question se présente :wink:

Bonsoir,
me revoilà j’essaye de préparer ma trame pour demain :slight_smile: et j’ai donc une question encore .
Encore une fois @FFO, merci de ton aide.
je n’arrive pas à faire en sorte que les numeros de semaine soient pour chaque upload :frowning: j’ai mis une formule dans l’onglet du 02 février mais comment faire pour que ca soit à chaque fois ? je les faisais calculer par rapport à la colonne date de mandatements.

Enfin, j’ai créé une MACRO me permettant de mettre à jour mes TCD ( onglet TCD DAVID), n’étant pas un expert pourriez vous vérifier que le code est bien Ok?

Merci :wink:

Master_Fichier_Excels_trame_FINAL_V2 (1).xlsm (2,4 Mo)

Bonjour

Toute modification concernant la conception des onglets « Fichier_Consolidé-DDMMAA » doit être réalisée dans l’onglet « Modèle » pour en faire bénéficier les nouveaux onglets réalisés
Attention toutes celles qui impactent la structure dans cet onglet conditionnent le traitement concernant notamment la liste des fichiers traités (précédemment en colonne O et dans ton dernier fichier transmis maintenant en colonne Q)
J’ai du intervenir dans le code pour l’adapter

Pour te faciliter cette adaptation en cas de besoin futur j’ai adapté la macro « aggregation2 »
En début de procédure tu mets à jour simplement cette ligne de code :

colonnefichiers = « Q »

Ainsi tout le traitement utilisera la lettre déterminée par cette instruction

Donc ton dernier fichier transmis avec ces évolutions

L’onglet « Modèle » a été modifié quant à sa structure à l’identique de celle de l’onglet « Fichier_Consolidé-020221 »

A l’avenir toujours agir sur l’onglet modèle pour bénéficier des évolutions dans les onglets créés

Attention de ne pas trop modifier la structure il en va du bon fonctionnement du traitement

Pour ton code enregistré concernant la mise à jour des TCD pas grand chose à dire il n’y a qu’une instruction
Si elle te donne satisfaction ne cherches pas plus loin elle est adaptée

Ton fichier ci-joint

Testes le et dis moi

J’ai aussi amélioré les formules colonne « K » qui donne le numéro de la semaine pour éviter d’avoir dans les cellules le résultat « #VALEUR » en l’absence de donnée en colonne « J » ce qui est le cas dans l’onglet « Modèle »

Master_Fichier_Excels_trame_FINAL_V2 (1).xlsm (2,5 Mo)