Alléger macros VBA
Adirien
Messages postés
84
Date d'inscription
Statut
Membre
Dernière intervention
-
Adirien Messages postés 84 Date d'inscription Statut Membre Dernière intervention -
Adirien Messages postés 84 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute quelque peu dans le monde de la macro et du language VBA et j'apprends petit à petit en regardant quelque tutos de code VBA, je réalise également des macros d'enregistrement pour analyser le code et m'approprier le code de certaines actions.
Elles ont le mérite d'être simple à comprendre à mon niveau mais subissent forcément une certaine lourdeur dans leur exécution (surtout avec les PC du boulot pas très performant)
Je ne sais pas si quelqu'un aurait des pistes pour alléger le code que j'ai réalisé.
J'explique brièvement le principe de mon fichier :
1 / J'extrais mensuellement 3 bases de données distinctes d'un logiciel externe dans un fichier Excel.
Chaque base de données correspond à un regroupement de poste de travail, elle contient des dates et des horaires d'actions réalisées sur ces différents postes
Crémone : 6 postes (Crémone 1, Crémone 2,etc...)
Pose vitrage : 6 postes (Vitrage 1, Vitrage 2, etc...)
Engondage : 2 postes (Engondage A, Engondage B)
2/ Je copie chaque base de données dans une feuille "Export" de mon fichier qui centralisent mes données en traitant tour à tour chaque base de données avec une macro différente.
3/ La macro filtre tour à tour sur chaque poste et copie les données dans une autre feuille.
4/ Cette feuille contient une association de formules qui permet d'extraire quelle ligne correspond à certains critères horaires (la première et la dernière données de 3 tranches horaires différentes : Matin, Après-midi, Nuit)
5/ Ces infos sont recopiées dans une tableau temporaire respectivement sur chaque poste et chaque tranche horaires. Une fois chaque macro réalisée je recopie les données du tableau temporaire dans une base de donnée finale.
Cette base de données me permet de réaliser un tableau croisé dynamique ainsi que des graphiques croisés dynamique qui me permet de faire une synthèse sur chaque groupe de poste.
Ce qui vient aussi alourdir l’exécution de la macro c'est que chaque base de données brute contient 10 000 lignes et 2 colonnes, donc forcément filtrer autant de données à suivre avec copie et suppression de l'export précédent entre chaque ça je demande peut être un miracle...
Après il se peut que je raisonne de la mauvaise façon et que ce n'est pas vraiment la macro qui pose problème mais plutôt ce que je lui fait faire et que je devrais peut être tenter de travailler avec bases de données plus petites car en moyennes sur 10 000 lignes je ne retraite les infos que de 700 lignes. J'avais penser travailler avec des filtres avancés mais je ne maîtrise pas bien surtout avec la complexité de mes critères et/ou arriver à traiter mes données avec tous les postes dans la même base de données sans avoir à filtrer sur chaque poste mais là j'ai peine à voir comment.
Voici le fameux fichier en question : https://www.cjoint.com/c/KCcn3mXO2TR
Je m'excuse pour ceux à qui j'aurais donner mal à la tête. En tout cas merci à ceux qui auront le courage d'essayer de rentrer dans ma tête.
Je débute quelque peu dans le monde de la macro et du language VBA et j'apprends petit à petit en regardant quelque tutos de code VBA, je réalise également des macros d'enregistrement pour analyser le code et m'approprier le code de certaines actions.
Elles ont le mérite d'être simple à comprendre à mon niveau mais subissent forcément une certaine lourdeur dans leur exécution (surtout avec les PC du boulot pas très performant)
Je ne sais pas si quelqu'un aurait des pistes pour alléger le code que j'ai réalisé.
J'explique brièvement le principe de mon fichier :
1 / J'extrais mensuellement 3 bases de données distinctes d'un logiciel externe dans un fichier Excel.
Chaque base de données correspond à un regroupement de poste de travail, elle contient des dates et des horaires d'actions réalisées sur ces différents postes
Crémone : 6 postes (Crémone 1, Crémone 2,etc...)
Pose vitrage : 6 postes (Vitrage 1, Vitrage 2, etc...)
Engondage : 2 postes (Engondage A, Engondage B)
2/ Je copie chaque base de données dans une feuille "Export" de mon fichier qui centralisent mes données en traitant tour à tour chaque base de données avec une macro différente.
3/ La macro filtre tour à tour sur chaque poste et copie les données dans une autre feuille.
4/ Cette feuille contient une association de formules qui permet d'extraire quelle ligne correspond à certains critères horaires (la première et la dernière données de 3 tranches horaires différentes : Matin, Après-midi, Nuit)
5/ Ces infos sont recopiées dans une tableau temporaire respectivement sur chaque poste et chaque tranche horaires. Une fois chaque macro réalisée je recopie les données du tableau temporaire dans une base de donnée finale.
Cette base de données me permet de réaliser un tableau croisé dynamique ainsi que des graphiques croisés dynamique qui me permet de faire une synthèse sur chaque groupe de poste.
Ce qui vient aussi alourdir l’exécution de la macro c'est que chaque base de données brute contient 10 000 lignes et 2 colonnes, donc forcément filtrer autant de données à suivre avec copie et suppression de l'export précédent entre chaque ça je demande peut être un miracle...
Après il se peut que je raisonne de la mauvaise façon et que ce n'est pas vraiment la macro qui pose problème mais plutôt ce que je lui fait faire et que je devrais peut être tenter de travailler avec bases de données plus petites car en moyennes sur 10 000 lignes je ne retraite les infos que de 700 lignes. J'avais penser travailler avec des filtres avancés mais je ne maîtrise pas bien surtout avec la complexité de mes critères et/ou arriver à traiter mes données avec tous les postes dans la même base de données sans avoir à filtrer sur chaque poste mais là j'ai peine à voir comment.
Voici le fameux fichier en question : https://www.cjoint.com/c/KCcn3mXO2TR
Je m'excuse pour ceux à qui j'aurais donner mal à la tête. En tout cas merci à ceux qui auront le courage d'essayer de rentrer dans ma tête.
Configuration: Windows / Chrome 88.0.4324.190
A voir également:
- Alléger macros VBA
- Alléger pdf - Guide
- Excel compter cellule couleur sans vba - Guide
- Alleger windows 10 - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
17 réponses
Bonjour,
Eh bien pour faire court, il est ou votre problème?
S'agit-il uniquement des codes sur ce classeur ou ceux utilisé pour importer les données?
Eh bien pour faire court, il est ou votre problème?
S'agit-il uniquement des codes sur ce classeur ou ceux utilisé pour importer les données?
Bonjour,
Une facon de faire. Modif pour Cremone.
Votre fichier: 9 a 10s
Ce code: 3 a 4s
Une facon de faire. Modif pour Cremone.
Votre fichier: 9 a 10s
Ce code: 3 a 4s
Sub Crémone_SWF() TPoste_Crem = Array("", "LM1", "LM2", "LM3", "LM4", "LM5", "LM6") TCel_Crem = Array(0, 8, 11, 14, 17, 20, 23) If MsgBox("Voulez-vous extraire les données de la Pose Crémone ?", vbYesNo, "Demande de confirmation") = vbYes Then On Error GoTo Fin Application.ScreenUpdating = False temps = Timer Sheets("Export").Activate Derlig = Range("A" & Rows.Count).End(xlUp).Row Plage = Range("A1:B" & Derlig).Address For n = 1 To 6 Range("A1").Select Selection.AutoFilter Range(Plage).AutoFilter Field:=2, Criteria1:="Etancheite-Crem-" & TPoste_Crem(n) Range("A1:A" & Derlig).SpecialCells(xlVisible).Copy Sheets("Extraction BDD").Cells(1, 1) With Sheets("Extraction BDD") .Range("O" & TCel_Crem(n)).Resize(3, 2) = .Range("N2:O4").Value .Columns("A:A").ClearContents End With Next n MsgBox "temps exec: " & Format(Timer - temps, "0.000000") Fin: On Error GoTo 0 Application.ScreenUpdating = True Sheets("Extraction BDD").Activate 'MsgBox "Les données ont bien été extraites" End If End Sub
Adirien
Fichier modifie pour tout: https://mon-partage.fr/f/7KEiMrqB/
A vous de verifier pour vitrage, engondage et copie BDD
Fichier modifie pour tout: https://mon-partage.fr/f/7KEiMrqB/
A vous de verifier pour vitrage, engondage et copie BDD
J'ai essayé déjà d'insérer la modif de code que vous m'avez suggérer et effectivement y'a un gain de temps considérable.
Je devrais arrivé à le dupliquer sur le reste. Merci infiniment !!
En revanche je n'ai pas sûr d'avoir compris pour le fichier que vous avez partager c'est la même chose que le code au dessus où il y'a d'autres modifications ?
Je devrais arrivé à le dupliquer sur le reste. Merci infiniment !!
En revanche je n'ai pas sûr d'avoir compris pour le fichier que vous avez partager c'est la même chose que le code au dessus où il y'a d'autres modifications ?
Finalement je n'ai pas pu attendre, donc tout fonctionne parfaitement.
Le petit détails pour atteindre la perfection c'est sur la copie de BDD dans ma macro je faisait une copier/coller de valeurs sinon la colonne du mois ne se recopiais pas bien.
Sur le tableau temporaire je renseigne le mois uniquement dans la première ligne et j'avais fais un =$M$8 (cellule mois de la première ligne) sur toutes les lignes du dessous pour répéter le mois en question sauf que dans la copie dans la base de donnée le mois n’apparaît pas comme dans le tableau temporaire j'obtiens "janv-00" au lieu du "jan-21".
Le petit détails pour atteindre la perfection c'est sur la copie de BDD dans ma macro je faisait une copier/coller de valeurs sinon la colonne du mois ne se recopiais pas bien.
Sur le tableau temporaire je renseigne le mois uniquement dans la première ligne et j'avais fais un =$M$8 (cellule mois de la première ligne) sur toutes les lignes du dessous pour répéter le mois en question sauf que dans la copie dans la base de donnée le mois n’apparaît pas comme dans le tableau temporaire j'obtiens "janv-00" au lieu du "jan-21".
Bonjour Adirien,
Pouvez expliquer un peut mieux votre soucis: j'obtiens "janv-00" au lieu du "jan-21"
.
Question: avez vous besoin de toutes les lignes d'un poste pour faire vos calculs.
L'enchainement des trois procedures pour vos calculs et archives pourrait se faire en auto sur un simple click
Le fichier d'ou vous copiez les données est-il accessible sans problème car la récupération des données pourrait être faisable pas code sans faire de copie dans export
Pouvez expliquer un peut mieux votre soucis: j'obtiens "janv-00" au lieu du "jan-21"
.
Question: avez vous besoin de toutes les lignes d'un poste pour faire vos calculs.
L'enchainement des trois procedures pour vos calculs et archives pourrait se faire en auto sur un simple click
Le fichier d'ou vous copiez les données est-il accessible sans problème car la récupération des données pourrait être faisable pas code sans faire de copie dans export
1/ mon problème c'est que quand la macro lance la copie de mon tableau temporaire à partir de la 2e ligne le mois n'est pas correctement recopié si c'est marqué mars-21 après recopie dans la base final il recopie janv-00 à la place.
2/Je ne suis pas sur d'avoir bien compris la question mais je n'ai pas besoin de toutes les lignes du poste pour le calcul. Il me faut celle qui sont entre 5h-6h /12h-13h/ 13-14h/20h-21h/21h-22h/4h-5h. Car je fais mon calcul uniquement à partir de la première ou dernière ligne de ces tranches horaires (exemple la première de 5h-6h et la derniere de 12h-13h etc..)
3/Le fichier d'où je copie les données est un fichier temporaire avec un noms un peu aléatoire commencant par "tp" par exemple tp58A.xls. D'ailleurs je génére indépendamment ces 3 fichiers temporaires car le logiciel externe est encore plus sensible au grande quantité de données donc j'évite de lui demander des extractions de plus de 10 000 lignes.
2/Je ne suis pas sur d'avoir bien compris la question mais je n'ai pas besoin de toutes les lignes du poste pour le calcul. Il me faut celle qui sont entre 5h-6h /12h-13h/ 13-14h/20h-21h/21h-22h/4h-5h. Car je fais mon calcul uniquement à partir de la première ou dernière ligne de ces tranches horaires (exemple la première de 5h-6h et la derniere de 12h-13h etc..)
3/Le fichier d'où je copie les données est un fichier temporaire avec un noms un peu aléatoire commencant par "tp" par exemple tp58A.xls. D'ailleurs je génére indépendamment ces 3 fichiers temporaires car le logiciel externe est encore plus sensible au grande quantité de données donc j'évite de lui demander des extractions de plus de 10 000 lignes.
Salut,
"Je copie chaque base de données dans une feuille "Export" "
Je répondrais : https://img.devrant.com/devrant/rant/r_3211243_SBGSp.jpg
J'ai cru comprendre que tu avais solutionné le problème. À vrai dire, tu n'as fait que le repousser. Multiplie par 100 000 la quantité de données de ta DB, Excel et toi allez pleurer je pense :)
https://sqlpro.developpez.com/ sur ce site, le gars est excellent en DB. Il y a plein de bons conseils.
"Je copie chaque base de données dans une feuille "Export" "
Je répondrais : https://img.devrant.com/devrant/rant/r_3211243_SBGSp.jpg
J'ai cru comprendre que tu avais solutionné le problème. À vrai dire, tu n'as fait que le repousser. Multiplie par 100 000 la quantité de données de ta DB, Excel et toi allez pleurer je pense :)
https://sqlpro.developpez.com/ sur ce site, le gars est excellent en DB. Il y a plein de bons conseils.
Chaque base de données est juste temporaire et dépasse rarement les 10 000 lignes, j'en extrait qu'une infime quantité d'informations puisque ma base finale contient 900 lignes après 2 ans de récolte de données... Donc Excel ira très bien jusqu'à ma retraite.
J'ai un travail de terrain je n'ai que rarement plus d'1h à consacrer à un ordinateur dans ma journée. Il ne m'est donc d'aucune utilité d'avoir des compétences plus avancé si je n'ai pas le temps de les mettre en pratique. Déjà que je fais mes macros sur mon temps libre c'est déjà pas mal..
J'ai un travail de terrain je n'ai que rarement plus d'1h à consacrer à un ordinateur dans ma journée. Il ne m'est donc d'aucune utilité d'avoir des compétences plus avancé si je n'ai pas le temps de les mettre en pratique. Déjà que je fais mes macros sur mon temps libre c'est déjà pas mal..
Re,
Déjà que je fais mes macros sur mon temps libre c'est déjà pas mal..
Nous ne vous vilipendons pas, bien au contraire.
C'est pour cela que dans le post <12> j'écris qu'il est beaucoup plus facile d'utiliser Excel qu'Access
Maintenant, pour vous rendre la vie plus "facile", pouvez repondre aux questions que je vous pose post<13>
Déjà que je fais mes macros sur mon temps libre c'est déjà pas mal..
Nous ne vous vilipendons pas, bien au contraire.
C'est pour cela que dans le post <12> j'écris qu'il est beaucoup plus facile d'utiliser Excel qu'Access
Maintenant, pour vous rendre la vie plus "facile", pouvez repondre aux questions que je vous pose post<13>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
prendre le temps de les enregistrer dans un dossier prévu pour ça.
Oui, avec le nom des postes: Cremone etc
aller le chercher dans une arborescence.
Le code ira chercher les fichiers dans le repertoire. Si le nom des fichiers est le nom des postes pas besoin de selection, le code le fera automatiquement s'ils sont presents
Je n'ai pas bien conscience des limites du VBA
Les limites d'un langage de programmation sont liées a l'imagination du programmeur pas au langage
prendre le temps de les enregistrer dans un dossier prévu pour ça.
Oui, avec le nom des postes: Cremone etc
aller le chercher dans une arborescence.
Le code ira chercher les fichiers dans le repertoire. Si le nom des fichiers est le nom des postes pas besoin de selection, le code le fera automatiquement s'ils sont presents
Je n'ai pas bien conscience des limites du VBA
Les limites d'un langage de programmation sont liées a l'imagination du programmeur pas au langage
J'ai testé mais je n'ai pas mon PC du boulot donc les arborescences sont faussées, j'ai essayé d'adapter le code à une autre arborescence, mais il y'a des erreurs donc je préfère être en conditions réelles avant de faire un retour avant de vous faire changer des choses qui fonctionnent peut être très bien.
Sauf si cela vous intéresse quand même :


Sauf si cela vous intéresse quand même :
Re,
Pour tester chez vous, changer creez une ligne dans
Pour tester chez vous, changer creez une ligne dans
Sub ListerLesSsRepEtLeursFichiers() '(Chemin) 'chemin peut être passé en paramètres Dim fso, ListR, sRep, ListF, Rep, LesReps, fich, LesFichs Chemin_Base = "chemin fichier xls avant dernier repertoire" 'maison 'Chemin_Base = "C:\Users\adug\AppData\Local\Temp" 'boulot
Re,
petite modif (vous n'avez pas la derniere version post <36>
>
Continuez avec cette version pour debugger
Je suis sur une autre version qui devrait diminuer pas mal le temps d'execution.
C'est une methode que j'utilise souvent pour remplacer les filtres
petite modif (vous n'avez pas la derniere version post <36>
>
'Nom de la feuille dans le meme classeur Table = Feuille & "$"
Continuez avec cette version pour debugger
Je suis sur une autre version qui devrait diminuer pas mal le temps d'execution.
C'est une methode que j'utilise souvent pour remplacer les filtres
Le champs en jaune est le même mais le message d'erreur est légèrement différent
:
Après je peux peut être vous partager les 3 fichiers si vous voulez faire l'essai chez vous et résoudre les erreurs à mesure :
https://mon-partage.fr/f/GSnGg682/
https://mon-partage.fr/f/zXnCKfiv/
https://mon-partage.fr/f/PBzhekzX/
Après je peux peut être vous partager les 3 fichiers si vous voulez faire l'essai chez vous et résoudre les erreurs à mesure :
https://mon-partage.fr/f/GSnGg682/
https://mon-partage.fr/f/zXnCKfiv/
https://mon-partage.fr/f/PBzhekzX/
Bonjour,
Pour eviter les soucis d'extention fichier:
Dans cette procedure, remplacez la ligne en commentaire par la suivant
voilà désormais la nouvelle erreur :
Je vais regarder avec les fichiers que vous avez mis a dispo.
Vous de votre cote, quand erreur, click sur debugage, passez le curseur souris sur Onglet et vous verrez le contenu de cette variable
Suite:
Erreur Onglet normal
Heureusement que vous avez mis ces fichiers a dispo, sinon c'etait pas pret de marcher l'affaire.
Il 'n'y a pas que deux colonnes, donc je vais faire les modifs pour copier les colonnes D:E
Pour eviter les soucis d'extention fichier:
Dans cette procedure, remplacez la ligne en commentaire par la suivant
Sub Traitement_Fichier() 'Feuille = Left(T_Fichier(n), Len(T_Fichier(n)) - 4) Feuille = Split(T_Fichier(n), ".")(0)
voilà désormais la nouvelle erreur :
Je vais regarder avec les fichiers que vous avez mis a dispo.
Vous de votre cote, quand erreur, click sur debugage, passez le curseur souris sur Onglet et vous verrez le contenu de cette variable
Suite:
Erreur Onglet normal
Heureusement que vous avez mis ces fichiers a dispo, sinon c'etait pas pret de marcher l'affaire.
Il 'n'y a pas que deux colonnes, donc je vais faire les modifs pour copier les colonnes D:E
Re,
Encore toutes mes excuses.
Y a pas d'lezard. Je fais les modifs en fonctions des dits fichiers.
Normalement, je pourrai vous mettre un fichier a dispo ce soir.
Je continuerai aussi sur le fichier qui pourrait faire un gain de temps substantiel.
Que pensez vous de ce genre de programmation VBA?
Avez vous appris un peu, beaucoup, passionnement ou pas du tout
Suite:
fichier modifie pour format fichiers base: https://mon-partage.fr/f/VZOOle2n/
Je ne fais pas de formatage de la colonne A en Date heure, n'a qu'un effet visuel
Temps pour traitement complet trois fichiers: 11s chez moi
Pensez a changer le chemin dossier
Encore toutes mes excuses.
Y a pas d'lezard. Je fais les modifs en fonctions des dits fichiers.
Normalement, je pourrai vous mettre un fichier a dispo ce soir.
Je continuerai aussi sur le fichier qui pourrait faire un gain de temps substantiel.
Que pensez vous de ce genre de programmation VBA?
Avez vous appris un peu, beaucoup, passionnement ou pas du tout
Suite:
fichier modifie pour format fichiers base: https://mon-partage.fr/f/VZOOle2n/
Je ne fais pas de formatage de la colonne A en Date heure, n'a qu'un effet visuel
Temps pour traitement complet trois fichiers: 11s chez moi
Pensez a changer le chemin dossier
Re,
Fichier Post<46>: ne pas utiliser plante suite erreur de raz colonne
Pensez a changer le chemin dossier
Fichier corrige du post<46> temps execution 11s: https://mon-partage.fr/f/NGAEmy8x/
Fichier sans filtre feuilles poste temps execution 5.5 s: https://mon-partage.fr/f/5MX6z7tq/
Fichier Post<46>: ne pas utiliser plante suite erreur de raz colonne
Pensez a changer le chemin dossier
Fichier corrige du post<46> temps execution 11s: https://mon-partage.fr/f/NGAEmy8x/
Fichier sans filtre feuilles poste temps execution 5.5 s: https://mon-partage.fr/f/5MX6z7tq/
Bonsoir,
Je n'ai pas eu beaucoup de temps pour regarder en détail, j'avais un nouveau message d'erreur.
Mais avant d'aller plus loin dans la résolution, en testant directement à mon boulot ça m'a permis de me rendre compte de quelque chose :
Extraire le fichier depuis le dossier temporaire n'était pas très pratique. Effectivement si j'ai fais d'autres extractions dans la journée pour d'autres besoins, les fichiers viendront s’emmêler les uns aux autres dans ce même dossier. Il faudra donc que je pense pas à purger les fichiers en trop qui en plus auront des noms sans signe distinctifs pour m'indiquer lesquels sont les bons des mauvais.
Et puis j'ai réfléchi aussi au côté multi-utilisateurs, la macro sera définitivement lié à mon ordinateur, si jamais je devais le mettre à disposition de quelque d'autre je n'aurais d'autre choix que de modifier l'arborescence dans le code.
Je m'en excuse de vous faire faire encore modifier mais finalement l'idéal me semblerait être une boite de dialogue qui demanderait le chemin du dossier où se trouve les fichiers.
Sinon pour répondre à votre question sur ce que j'en pense et ce que j'en ai appris :
J'ai été impressionné de voir l'étendue des possibilités de la programmation VBA, mon seul regret c'est surtout de ne pas forcément avoir pu comprendre toute la complexité du code, il faudra que je prenne le temps d'étudier son fonctionnement car au moins dans un premier temps comprendre comment les modules s'articules entre eux puis ensuite être en capacité de le comprendre et si besoin de modifier et faire évoluer son contenu mais là je pense que c'est un niveau bien supérieur à ce dont je suis capable.
Cela m'a donné plein d'idées à développer pour la suite et je pense que le VBA va révolutionner mon travail et j'espère à l'avenir arriver à en faire certains en pleine autonomie.
Je n'ai pas eu beaucoup de temps pour regarder en détail, j'avais un nouveau message d'erreur.
Mais avant d'aller plus loin dans la résolution, en testant directement à mon boulot ça m'a permis de me rendre compte de quelque chose :
Extraire le fichier depuis le dossier temporaire n'était pas très pratique. Effectivement si j'ai fais d'autres extractions dans la journée pour d'autres besoins, les fichiers viendront s’emmêler les uns aux autres dans ce même dossier. Il faudra donc que je pense pas à purger les fichiers en trop qui en plus auront des noms sans signe distinctifs pour m'indiquer lesquels sont les bons des mauvais.
Et puis j'ai réfléchi aussi au côté multi-utilisateurs, la macro sera définitivement lié à mon ordinateur, si jamais je devais le mettre à disposition de quelque d'autre je n'aurais d'autre choix que de modifier l'arborescence dans le code.
Je m'en excuse de vous faire faire encore modifier mais finalement l'idéal me semblerait être une boite de dialogue qui demanderait le chemin du dossier où se trouve les fichiers.
Sinon pour répondre à votre question sur ce que j'en pense et ce que j'en ai appris :
J'ai été impressionné de voir l'étendue des possibilités de la programmation VBA, mon seul regret c'est surtout de ne pas forcément avoir pu comprendre toute la complexité du code, il faudra que je prenne le temps d'étudier son fonctionnement car au moins dans un premier temps comprendre comment les modules s'articules entre eux puis ensuite être en capacité de le comprendre et si besoin de modifier et faire évoluer son contenu mais là je pense que c'est un niveau bien supérieur à ce dont je suis capable.
Cela m'a donné plein d'idées à développer pour la suite et je pense que le VBA va révolutionner mon travail et j'espère à l'avenir arriver à en faire certains en pleine autonomie.
Bonjour,
Je m'en excuse de vous faire faire encore modifier
Non, y a pas d'lezard
Multiples extractions et utilisateurs fait que la boite a dialogue s'impose.
Je regarde la chose.
Quel fichier avez vous utilise, v3_5 ou sans filtre?
Je m'en excuse de vous faire faire encore modifier
Non, y a pas d'lezard
Multiples extractions et utilisateurs fait que la boite a dialogue s'impose.
Je regarde la chose.
Quel fichier avez vous utilise, v3_5 ou sans filtre?
Re,
Fichier sans filtre modifie pour choix repertoire: https://mon-partage.fr/f/8oyQS3Mm/
Choix repertoire, pas fichier
Fichier sans filtre modifie pour choix repertoire: https://mon-partage.fr/f/8oyQS3Mm/
Choix repertoire, pas fichier
Parfait cela fonctionne.
J'ai enchaîné avec la copie bdd mais rien ne se passe, et aucune erreur.
C'est comme ci la macro n'étais pas affecté à au bouton.
Sinon je pensais à quelques optimisations possible :
- Si par erreur j'ai laissé des vieux fichiers dans le dossier est ce qu'une boîte de dialogue pourrait m'alerter qu'il y a plus de 3 fichiers présents dans le dossier ou quelque chose dans le même principe car je ne sais pas comment il va réagir si jamais il y'en à d'autre
- Ma formule pour fonctionner traite les données du plus ancien au plus récent mais par défaut sur mon logiciel me renvoi les données du plus récent aux plus ancien, j'inverse l'ordre de tri directement dans le logiciel avant de lancer l'export dans excel mais il m'arrive souvent d'oublier et de finir par le faire manuellement dans excel peut on ajouté un tri pour s'en assurer mais la en automatique je ne vais pas m'en rendre compte et mes données risque d'être erronées.
- L'autre partie c'est du détail esthétique je pourrais m'en charger moi même mais c'est de faire apparaître les 3 feuilles qui servent à l'extraction et de les faire disparaître en fin d'extraction afin que les personnes qui ne viennent qu'en consultation des graphiques qui en découlent ne soit pas à chercher dans toutes les feuilles où se trouve les graphiques.
J'ai enchaîné avec la copie bdd mais rien ne se passe, et aucune erreur.
C'est comme ci la macro n'étais pas affecté à au bouton.
Sinon je pensais à quelques optimisations possible :
- Si par erreur j'ai laissé des vieux fichiers dans le dossier est ce qu'une boîte de dialogue pourrait m'alerter qu'il y a plus de 3 fichiers présents dans le dossier ou quelque chose dans le même principe car je ne sais pas comment il va réagir si jamais il y'en à d'autre
- Ma formule pour fonctionner traite les données du plus ancien au plus récent mais par défaut sur mon logiciel me renvoi les données du plus récent aux plus ancien, j'inverse l'ordre de tri directement dans le logiciel avant de lancer l'export dans excel mais il m'arrive souvent d'oublier et de finir par le faire manuellement dans excel peut on ajouté un tri pour s'en assurer mais la en automatique je ne vais pas m'en rendre compte et mes données risque d'être erronées.
- L'autre partie c'est du détail esthétique je pourrais m'en charger moi même mais c'est de faire apparaître les 3 feuilles qui servent à l'extraction et de les faire disparaître en fin d'extraction afin que les personnes qui ne viennent qu'en consultation des graphiques qui en découlent ne soit pas à chercher dans toutes les feuilles où se trouve les graphiques.
Bonjour,
y a plus de 3 fichiers présents
Ok, alerte
ajouté un tri pour s'en assurer
Ok, tri desc
3 feuilles qui servent à l'extraction et de les faire disparaître en fin d'extraction
Pourquoi les faire apparaitre?
Je regarde cote code s'il y a des modifier a faire pour éviter des erreurs liées au masquage
Mon idée de depart, pour le suppression filtre, était de ne pas avoir de feuille poste en faisant les traitement directement sur les fichiers d'extraction. Pour moi, les feuilles poste devenaient inutiles
J'ai parre au plus court car le temps de traitement serait peut-être un peu plus long
Je peux regarder si cela vous irait mieux.
y a plus de 3 fichiers présents
Ok, alerte
ajouté un tri pour s'en assurer
Ok, tri desc
3 feuilles qui servent à l'extraction et de les faire disparaître en fin d'extraction
Pourquoi les faire apparaitre?
Je regarde cote code s'il y a des modifier a faire pour éviter des erreurs liées au masquage
Mon idée de depart, pour le suppression filtre, était de ne pas avoir de feuille poste en faisant les traitement directement sur les fichiers d'extraction. Pour moi, les feuilles poste devenaient inutiles
J'ai parre au plus court car le temps de traitement serait peut-être un peu plus long
Je peux regarder si cela vous irait mieux.
Je disait les faire apparaître car si à chaque fin de code on masque les feuilles, on aura besoin de les faire apparaître en début de code car j'ai essayé il ne semble pas pouvoir s'exécuter sur des feuilles masquées.
A vous de voir un code si vous voulez essayer de faire le traitement depuis la feuille d'origine, le temps de traitement est relativement rapide actuellement. Moi j'ai proposé la bidouille de les faire apparaître et disparaître pour aller au plus court avec du code que je maîtrise.
Avez vous vu ce qui fait qu'il ne se passe rien lorsqu'on lance la copie bdd ?
A vous de voir un code si vous voulez essayer de faire le traitement depuis la feuille d'origine, le temps de traitement est relativement rapide actuellement. Moi j'ai proposé la bidouille de les faire apparaître et disparaître pour aller au plus court avec du code que je maîtrise.
Avez vous vu ce qui fait qu'il ne se passe rien lorsqu'on lance la copie bdd ?
Re,
en attendent, fichier avec alerte fichiers<>3 et copie BDD (pas le bon nom de bouton pour le code dans VBA feuille)
https://mon-partage.fr/f/nvcexCE9/
Je regarde pour le tri
en attendent, fichier avec alerte fichiers<>3 et copie BDD (pas le bon nom de bouton pour le code dans VBA feuille)
https://mon-partage.fr/f/nvcexCE9/
Je regarde pour le tri
Re,
Ca progresse bien.
Fichier avec tri donnees Ancien vers recent: https://mon-partage.fr/f/ieT16js1/
Le tri se fait dans la recupe des donnees par poste en vue de les afficher dans Exctaction BDD.
Peu importe ce qu'il y a dans les fichiers extraits
Reste la partie masque feuille et quelques finitions
Suite:
Fichier feuilles poste masquee: https://mon-partage.fr/f/fpdklXbI/
Quelques verif des codes pour finition voir traitement erreur
Ca progresse bien.
Fichier avec tri donnees Ancien vers recent: https://mon-partage.fr/f/ieT16js1/
Le tri se fait dans la recupe des donnees par poste en vue de les afficher dans Exctaction BDD.
Peu importe ce qu'il y a dans les fichiers extraits
Reste la partie masque feuille et quelques finitions
Suite:
Fichier feuilles poste masquee: https://mon-partage.fr/f/fpdklXbI/
Quelques verif des codes pour finition voir traitement erreur
Voici l'erreur et un lot de 3 fichiers en exemple concerné par cette erreur


https://mon-partage.fr/f/rOcZbOQP/
https://mon-partage.fr/f/3ENawnlb/
https://mon-partage.fr/f/FYYrSu7G/
J'ai tenté de renommer les fichiers différemment ou de les enregistrer en .xlsx ou .xls
Mais sans succès et ce même avec le fichier du post 59
Et d'ailleurs à l'ouverture il y'a une autre erreur qui apparait :



https://mon-partage.fr/f/rOcZbOQP/
https://mon-partage.fr/f/3ENawnlb/
https://mon-partage.fr/f/FYYrSu7G/
J'ai tenté de renommer les fichiers différemment ou de les enregistrer en .xlsx ou .xls
Mais sans succès et ce même avec le fichier du post 59
Et d'ailleurs à l'ouverture il y'a une autre erreur qui apparait :
Bonjour,
Ok, je recupere les fichiers et regarde la chose
Erreur ouverture classeur: je regarde
Suite:
Les fichiers sont les memes avec des noms differents!
Vous choisissez bien le bon repertoire? (vu erreur bon repertoire)
Erreur ouverture: vous n'utilisez pas le dernier fichier du post <61> apres Suite:
Suite de Suite:
Lecture feuille fichiers extraction
Ben, regardez le nom de feuille et vous comprendrez.
Je regarde pour palier a la chose
Ok, je recupere les fichiers et regarde la chose
Erreur ouverture classeur: je regarde
Suite:
Les fichiers sont les memes avec des noms differents!
Vous choisissez bien le bon repertoire? (vu erreur bon repertoire)
Erreur ouverture: vous n'utilisez pas le dernier fichier du post <61> apres Suite:
Suite de Suite:
Lecture feuille fichiers extraction
Ben, regardez le nom de feuille et vous comprendrez.
Je regarde pour palier a la chose
Re,
Non ?
C'est ce que j'ai pensez au depart. Vu que vous renommez les fichiers, faites ceci:
ex: tmp9BB5.xlsx devient tmp9BB5-Eng sep19.xlsx
Comme ca le code pour nom de feuille change juste pour le caractere de separation, a condition de ne pas le changer suivant l'humeur du jour
Je vais regarder quand meme pour avoir le nom de feuille pour chaque fichier
Non ?
C'est ce que j'ai pensez au depart. Vu que vous renommez les fichiers, faites ceci:
ex: tmp9BB5.xlsx devient tmp9BB5-Eng sep19.xlsx
Comme ca le code pour nom de feuille change juste pour le caractere de separation, a condition de ne pas le changer suivant l'humeur du jour
Je vais regarder quand meme pour avoir le nom de feuille pour chaque fichier
Re,
J'ai ce qu'il faut pour avoir le nom d'onglet. Je modifie le code
Suite:
Fichier avec recherche nom d'onglet fichier extraction: https://mon-partage.fr/f/j1q5AJi2/
J'ai ce qu'il faut pour avoir le nom d'onglet. Je modifie le code
Suite:
Fichier avec recherche nom d'onglet fichier extraction: https://mon-partage.fr/f/j1q5AJi2/
C'est juste que je ne sais pas dire si on travaille uniquement sur le code si cela solutionnera mon problème ou pas mais c'est peut être par là qu'il faut commencer dans un premier temps.
Je constate que f894008 est dans le bon sens. Je n'aurai pas mieux à vous proposer.
Bonne suite.
Salutations.
Le Pingou