|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Inscription : avril 2009 Messages : 52 ![]() |
Bonjour,
Etant débutante en vb, j'ai créer une fiche permettant de valider les données dans un tableau afin d'obtenir les données de plusieurs fiches différentes. ci joint la fiche. J'ai créer des boutons liés par des macros Code :
Deuxième chose : sachant que le champs trimestre découle du mois je souhaite savoir comment dès que la personne change de mois le changement de trimestre se fait automatiquement. Merci pour vos solutions et explications vivi |
||
|
|
00
|
|
|
#2 |
|
Office & Excel ![]() ![]() ![]() |
Salut.
Le code proposé me semble bien indigeste... Il me semble qu'il serait utile de repartir "de zéro" et de détailler, d'abord en français, le contexte et l'objetctif...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
00
|
|
|
#3 |
|
Inscription : avril 2009 Messages : 52 ![]() |
Bonjour Pierre,
Oui le code est peut-être indigeste mais c'est la première fois que je fais du VBA et c'est en récupérant des exemples. Il fonctionne mais ce n'est peut-être pas le top. Je veux bien que vous m'aidiez à repartir à zéro. Le but est nous souhaitons rassembler les données de chaque personnel dans un tableau excel afin d'en faire les tris croisés que l'on souhaite. La fiche permet à chaque personnel de remplir son activité mensuelle. A l'aide d'un bouton toute les données de la fiche sont envoyées sur un tableau que la secrétaire exploite. Par contre il faut que chaque personnel puisse voir également sa propre activité (c'est pour cela que j'avais mis un deuxième bouton) Pour éviter que la personne envoi deux fois sont activité mensuelle il faut tester mais cela je n'y arrive pas. |
|
|
00
|
|
|
#4 | ||||
|
Expert Confirmé
![]() Inscription : décembre 2007 Messages : 1 908 ![]() |
Il me semble que la seul différence entre les 2 procédures, c'est le chemin(si j'en ai loupé, signale-le). Avant d'aller plus loin, il faut rendre ton code lisible. Première étape, mettre tout ce qui est commun dans une seule procédure, et sortir les préfixes répétitifs par des with :
Code :
Pour ce qui est de tes changements, je n'ai pas bien compris le numéro 1(cette histoire de controle de mois). Pour le numéro 2, si j'ai bien compris, tu veux que le contenu du trimestre soit forçé par le contenu du mois. Il te faut alors un truc du genre(en supposant que tes mois soient en toutes lettres), juste avant la boucle "for pointeur" Code :
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten : 1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception 2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences 3)le temps de comprendre toutes les exigences, le projet est terminé 4)le temps de terminer le projet, les exigences ont changé Et le serment de non-allégiance : Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée. |
||||
|
|
00
|
|
|
#5 |
|
Inscription : avril 2009 Messages : 52 ![]() |
MERCI EL_SLAPPER pour ces explications je vais tester tout cela pour le premier controle c'est de vérifier avant d'envoyer dans le fichier bdd.xls que la personne attribuée par le champs "nom" n'est pas déjà envoyé sa fiche pour le mois sélectionné. en fait ne pas envoyé la fiche pour un même mois.
merci de ovtre aide précieuse vivi |
|
|
00
|
|
|
#6 |
|
Office & Excel ![]() ![]() ![]() |
Conseils:
Avant de te lancer dans du code, examine ce que tu dois faire. Cela te permettra d'éviter du code en double. Dans le code que tu as donné, tu as deux fois le même bloc de données, au numéro de ligne près (lignes 33-39 et 49-55 du bloc de code que tu as donné). C'est inutile et difficile à maintenir. Sépare les actions en petites procédures et fonctions simples à déboguer Evite les valeurs en dur (les chemins des données, par exemple) et utilise des variables globales. Si le chemin change, tu modifies cela à un seul endroit du code. Mieux encore, tu places le chemin dans une cellule de feuille. De cette manière, tu n'interviens pas sur le code si le chemin vient à être modifié. Dans un même bloc, tu crées un nouveau classeur ou tu ouvres le classeur s'il existe. Il est préférable d'écrire une fonction qui te renvoie un objet classeur. Dans ce même bloc, le nouveau classeur est transféré à une personne alors que si le fichier existe, il est enregistré dans le dossier du personnel. Pourtant, il est enregistré au même endroit. il faudrait donc clarifier cela, mais il faudrait aussi sortir l'enregistrement de cette procédure et traiter cette partie du code dans une procédure à part. Tant pour la lisibilité du code que pour la maintenance, il est préférable de travailler avec des objets que tu as déclaré en utilisant des noms de variables compréhensibles. En suivant ces conseils, tu auras un code plus clair, plus compréhensible, plus évolutif.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
10
|
|
|
#7 | ||||||||
|
Membre confirmé
![]() Inscription : juillet 2007 Messages : 209 ![]() |
Bonjour ,
la remarque de El Slapper est juste, il faut simplifier les 2 procédures en une seule avec ajout éventuel de paramétre dans l'appel. Sans regarder le code au complet , j'ai vu quelques erreurs : Si tu fait un Code :
Une solution c'est de sauvegarder le nom du fcihier initial avant d'ajouter le ficiher Code :
d'un point de vue général , pourquoi définir comme texte , des valeurs numérique ? Code :
Code :
|
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com