|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscription : décembre 2006 Messages : 19 ![]() |
Salut,
Bon j'ai réalisé une BDD avec des macros pour la saisie et la recherche. Etant débutant en vba, mon code est assez, comment dire, moche. Un peu frankesteiniser dans tous les sens. Maintenant j'essaye de l'optimiser mais comme j'ai des variables déclarées un peu n'importe ou, je fais planter mes macros. Du coup, quelque qu'un se sent il capable d'étudier le code et l'optimiser ? Le fichier fonctionne niquel mais c'est surtout pour avoir un truc "propre" |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Le mieux serait de poster ton code ici pour que l'on puisse travailler dessus. ++ 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
|
|
|
#3 |
|
Inscription : décembre 2006 Messages : 19 ![]() |
Euh c'est pas plus simple d'envoyer le fichier ( en épurant la BDD car elle contient 300 entrées) ? Parce que sinon, il va falloir que j'explique tout.
|
|
|
01
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Ah ben oui c'est dramatique, c'est dur la vie, parfois il faut faire des efforts pour avoir un peu d'aide En plaçant déjà ton code, on devrait pouvoir faire des simplifications si besoin même si on a pas le fichier. Explique en gros ce que fait le code déjà et place le ici (avec les balises code). Si c'est vraiment trop touffu ou compliquer on quémandera le fichier Pour info, le but de placer le code directement permet à tous le monde d'y mettre son grain de sel et d'apporter des idées, tu aura ainsi bien plus de chance de trouver une aide qui correspond à ton besoin. ++ 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
|
|
|
#5 | ||||
|
Inscription : décembre 2006 Messages : 19 ![]() |
Bon ok
Tu l'auras voulu lol C'est un fichier client avec numéro de carte d'abonnement pour du transport en commun. Certains clients utilisent les lignes régulières (LR) ou des services spéciaux (SP), mais je n'entre pas dans les détails. Alors le classeur comporte 3 feuilles: creation, bdd, choix La première contient juste un bouton qui affiche l'userform, la seconde contient la base, la première ligne étant la 8 et les colonnes allant de B à Y. La dernière contient les valeurs pour les combobox L'userform contient plein de champs, dont certains obligatoires. On peut effectuer, via 3 boutons, 3 type de recherche - par le nom - par le numéro de carte (6 lettres et chiffres) - par le secteur (de 1 à 4 ) ou le lot (4 lettres et chiffres) Le résultat de la recherche s'affiche dans l'userform (si il n'y a qu'une réponse) ou dans une listbox. On double clique alors pour afficher la ligne qu'on veut dans l'userform. Deux possibilités: on crée un nouvel adhérent ou on en modifie un ( adresse, téléphone, etc...) On peut aussi renouveler la carte en cas de perte, auquel cas on change juste le numéro de carte. On cochera la case "renouv" On valide, et la macro: -demande confirmation - vérifie les champs obligatoires -copie les données dans la BDD - ouvre un .doc selon le type de client (LR ou SP) + effectue un publipostage + imprime et enregistre le .doc au nom du client. -ensuite elle "formate" les bordures, les alignements dans la BDD Voilà ! J'aurais des choses à ajouter, comme la possibilité d'envoi de mail au lieu d'un courrier, un autre type de courrier à "publiposter" en cas de renouvellement. L'impression fonctionne sur l'imprimante par défaut mais pas moyen d'envoyer sur l'autre imprimante, sur le bac 2, pour imprimer sur du papier entête. C'est pour ca que j'ai mis la partie impression, publi en deux grandes lignes commentaires, car j'ai pas encore trouver le truc Idéalement, je souhaiterais bien différencier les parties proprement, exemple: un module "recherche", un module "impression", etc... Là j'ai du code sur l'userform, dans un module et dans le "workbook" pour se mettre sur la page creation dès l'ouverture. Alors le code de l'userform, puis le code du module Code :
Code :
|
||||
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Voila quelques remarques, tiens en compte dans le reste de ton code et poste le résultat Code :
Code :
Et fait un effort avec l'indentation de ton code s'il te plait, ça ne demande aucune connaissance particulière, les gens du forum, moi y compris, voulons bien passer du temps pour remettre un peu d'ordre dans un code mais il serait sympathique de fournir un minimum d'effort dans la présentation du dit code, surtout quand il y en a un tel quantité. Merci. ++ 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
|
|
|
#7 |
|
Inscription : décembre 2006 Messages : 19 ![]() |
Chouette merci bien. C'est vrai que mes variables c'est le bordel
![]() J'avais essayé de séparer le code en copiant certaines parties dans des modules mais j'avais des erreurs de "range". Je vais retenter avec ces belles variables bien déclarées. Bon je travaille ça et je reviens ici ![]() Merci ah oui pour l'imprimante c'est parce que j'essayais de comprendre pourquoi le code marchait pas avec la deuxième imprimante, enfin bon, je verrais ca plus tard |
|
|
00
|
|
|
#8 | ||
|
Inscription : décembre 2006 Messages : 19 ![]() |
Voila, version épurée ! encore des trucs à améliorer je pense
Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Code :
Les Select peuvent également être supprimés en suivant l'exemple de début de 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
|
|
|
#10 |
|
Expert Confirmé
![]() |
bonjour
je suis assez d'accord avec quazerty un code bien indenter et beaucoup plus facile a lire pour ne pas se casser la tète avec ça il y a smart indenter qui s'intègre très bien au menu contextuel dans le code lorsque que l'on est dans l'editeur vba telecharge le ICI et choisi la version "Office 2000/2002/2003 " elle fonctionne aussi avec 2007 pour l'utiliser click droite dans la partie code de l'editeur vbe et tu a plusieures option le module en entier la sub ou la fonction tout les modules ect... au plaisir
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
|
|
00
|
|
|
#11 |
|
Inscription : décembre 2006 Messages : 19 ![]() |
Merci à toi, j'ai corrigé mes indents "à la main"
Et c'est au bureau, on ne peut pas installer de nouvelles choses, c'est bridé |
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Impec, replace ton code pour voir ce qu'il est possible de faire. ++ 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
|
|
|
#13 | ||
|
Inscription : décembre 2006 Messages : 19 ![]() |
Il y a encore un passage "indent a donf" lol mais parce que je sais pas trop comment m'y prendre efficacement pour cette procédure (la recherche par secteur et/ou lot, ou tout ), bref. C'est juste pour m'aider.
Et j'ai toujours ce problème d'impression... Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com