|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : octobre 2011 Messages : 10 ![]() |
Bonjour,
Je suis chargé par ma société de mettre au point un fichier (Excel) gérant une base de données des références pièces du produit que nous concevons. • Cette base de données permet aux utilisateurs de rentrer des pièces auxquelles sont attribuées automatiquement une référence en fonction de leur type (mécanique, doc, électrique, …). Les utilisateurs doivent liés la pièce qu’il s’apprête à s’insérer à au moins un assemblage parent direct (par exemple telle pièce appartient à tel assemblage). • Le fichier doit de plus permettre de pouvoir modifier certaines choses (changement de variantes, changement de révision, de quantité par assemblage, d’assemblages parents, la suppression partielle/totale, …) • Enfin il doit permettre aussi une lecture seule de la BDD ainsi que de voir les liens entre les composants et assemblages. Voilà pour expliquer le fichier joint (servez-vous pour ceux qui veulent l’utiliser pour eux !). Maintenant mon problème est celui-ci : lorsqu’une modification est faite dans la BDD, je voudrais qu’il y ait une information sur la date de la modification et le nom de l’utilisateur (apparaissent dans les deux dernières colonnes dans l’onglet « Périmètre ») responsable à cette pièce mais aussi aux assemblages qui comprennent cette pièce ainsi que les assemblages qui comprennent ceux-ci et ainsi de suite. Ma fonction VB répondant à ce problème marche (voir code dans modules « RechMAJModif » et « MAJModif » dans le fichier) mais elle est très lourde et plus il y a de pièces rentrées, plus le temps d’opérations est long (plusieurs minutes pour près de 200 entrées pour l’instant et il y aura près de 1000 entrées). J’ai mis en commentaire ces deux fonctions, il suffit de les remettre en code pour faire marcher cette fonction en faisant une modification avec les boutons de la page « accueil » appropriés. Les onglets n’apparaissent pas volontairement pour que l’utilisateur soit obligé de cliquer sur les boutons afin de travailler sur le fichier. Ils peuvent bien sur être affiché par les options d’Excel. Ma question est de savoir si quelqu’un pouvait m’aider à alléger le code afin que le temps de calcul soit réduit à quelques secondes. Concrètement le code est conçu de la façon suivante : dans la feuille « TableRelation » la fonction va chercher les assemblages parents directs (colonne 3) de la pièce concernée (colonne 1) et mettre les informations date et nom user à jour dans la feuille « Périmètre » où ils sont présents. Ensuite cette étape recommence mais maintenant ce sont ces références-ci (qui sont dans la colonne 1) pour lesquelles on va chercher leurs assemblages parents et mettre à jour les informations et ainsi de suite jusqu’à l’assemblage maitre qui est 9000001. Si un mot de passe est demandé c’est « QUALITY ». Comme il y a un grand nombre d’informations dans le fichier et que je ne suis pas sur d’avoir été très clair, je me tiens bien sur à disposition pour répondre aux questions plus spécifiques. Un fichier word « How-to » destiné aux utilisateurs de ma société existe si cela peut vous aider, je pourrais le joindre ultérieurement. Merci d’avance !! 20111107_BDD-referencement_FINAL.zip |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonsoir,
Concrètement, il faut faire quoi pour déclencher l'exécution de la macro ? En l'exécutant depuis la fenêtre VBE, l'exécution est instantanée.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : octobre 2011 Messages : 10 ![]() |
Bonjour,
Je n'avais pas vu votre message, désolé pour le temps de réponse! La fonction qui prend du temps est mise en commentaire et donc inactive. Pour l'activer il suffit de remettre en "code" les module RechMAJModif et MAJModif. Cordialement, Eric |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
"RechMAJModification" est une macro, pas une fonction. Si je la lance, l'exécution est instantanée. Comment doit-on procéder pour la lancer ?
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#5 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Sans être rentré dans les détails du fonctionnement, voila quelques modifs. A mon avis pour vraiment améliorer le temps de traitement, il faut travailler avec des tableaux. Code :
++ Qwaz Salut J'ai du mal à retrouver mes petits dans ton code. Voila ce que je te propose Code :
++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : octobre 2011 Messages : 10 ![]() |
Tout d'abord, je tiens à vous remercier Daniel.C et Qwazerty pour votre aide!
Pour répondre à vos questions: @Daniel. C : pour faire marcher la macro, il faut enlever les commentaires qui désactivent le code dans les deux modules cités. Ensuite pour voir comment elle fonctionne, vous pouvez insérer n'importe quel composant (Cadre 1 dans la page d'accueil) en prenant comme assemblages parents directs à l'étape 6 l'assemblages 9000004 par exemple. Il devrait se passer environ 1 minutes après avoir cliqué sur le bouton de l'étape 8 avant qu'un msgbox apparaisse pour confirmer la saisie. Je vous conseille d'essayer en repartant du fichier d'origine donné sur le forum afin d'être certain que la macro ne va pas être polluée par des "1" dans la colonne "N" de la feuille "Périmètre". @Qwazerty:
Je vous remercie une nouvelle fois pour votre aide!! Bien cordialement, Eric 20111107_BDD-referencement_FINAL.zip |
|
|
00
|
|
|
#7 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
En effet, je regarde avec une structure récursive si je peux te faire un truc [Edit] Voila un code qui devrait faire la maille Code :
Le dictionary serait intéressant car il permettrait, une fois renseigné, de connaitre rapidement le(s) parent(s) d'un élément en lui passant le nom du fils ++ Qwaz Salut Voila ce que ça donne avec un dico, c'est bien plus réactif! Code :
Si tu vois que cette partie prend trop de temps essai d'utiliser des tableaux de valeur et reviens vers nous si problème. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||||
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : octobre 2011 Messages : 10 ![]() |
Super merci!
Mais j'ai une erreur "Espace pile insuffisant"... Je me décourage, je crois que je vais laisser tomber cette fonction ou alors je vais faire accepter à notre BE de prendre leur temps pour remplir la BDD! Merci pour tout Qwazerty. Eric |
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Si tu ne dis pas sur quelle ligne l'erreur se produit, il va être difficile de t'aider :p ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com