IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Discussion :

simplification de code redondant


Sujet :

Conception

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut simplification de code redondant
    bonjour a tous
    voila, j'ai un code très répétitif car il y a 28 formulaires qui on besoins de cette même ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' indique si c'est une fiche recette ou depense
    If depense.Value <> "" Then Range("b65536").End(xlUp).Offset(0, 1).Value = "fiche depense"
    If recette.Value <> "" Then Range("b65536").End(xlUp).Offset(0, 1).Value = "fiche recette"
    'inscrit la recette ou la depense
    If recette.Value <> "" Then Range("b65536").End(xlUp).Offset(0, 4).Value = recette.Value
    If depense.Value <> "" Then Range("b65536").End(xlUp).Offset(0, 5).Value = depense.Value
    plutôt que de le copier 28 fois dans chaque formulaire, j'ai penser créer une macro simple (caisse)
    j'ai placé caisse dans le programme de chaque formulaire pour qu'il éxécute le code ci-dessous
    mais hélas comme "depense" et "recette" sont des textbox, contenue dans chacun des 28 formulaires, le code plante car je ne sais pas comment ratacher le code de la macro au formulaire en cours d'utilisation

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Pas tout compris (on est samedi matin )

    Tes formulaires, ce sont des Userform ?

    Il faut peut-être être juste explicite genre
    1 classeur, 2 usf simples avec 1 textbox chacun, le 2 a un 1 bouton
    et les codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
    UserForm1.Show
     
    End Sub
    USF1 initialize :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    UserForm2.Show
    End Sub
    bouton USF2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cmd1_Click()
    MsgBox TextBox1.Value
    MsgBox UserForm1.TextBox1.Value
    End Sub
    ce qui revient à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cmd1_Click()
    MsgBox Me.TextBox1.Value 
    MsgBox UserForm1.TextBox1.Value
    End Sub
    voir Me dans l'aide VBA

    de construction :

    textbox1.value = TotoUSF1
    textbox2.value = ZazaUSF2


    Je ne sait pas si ça fait avancer le schimili... , à voir..

    cordialement,

    Didier

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    je me suis expliquer comme une tache

    bon je reprend étape par étape

    1)je lance un fichier excel qui lance un formulaire "general" qui n'est qu'une page avec 28 bouton me permetant de lancé une des 28 autres formuaire

    2) chacun des ces 28 formulaire me sert en fait a saisir une comptabilité dans une caisse recette dépense (fichier caisse) et dans un fichier ventilation (le fichier étant d'un nom proche du formulaire (exemple form_colo pour la ventilation colonie)

    3) comme le debut de l'opération est exactement la même pour chacun des 28 formulaires (ouverture du fichier caisse, se placer en dessous de la dernière ligne écrite, saisie de la date), j'ai crée une macro "caisse" pour eviter de repeter le programme 28 fois, donc a la place j'ai plac le mot "caisse pour lancer cette macro

    4) le problème se pose a ce moment la dans la macro, car si la box depense du formulaire en cours n'est pas vide alors il doit me mettre "fiche depense" mais comme c'est la macro "caisse" qui est en cour, il ne fait pas la relation entre la textbox depense du formulaire et la demande dans la macro qui concerne les textbox du formulaire que j'ai activé

    voila j'espère avoir été plus clair !!
    sinon je peu envoyé par la suite une version allégé du programme en cour si ce n'est toujours pas clair

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour bosk ,Didier le forum
    question?? pourquoi!! 28 formulaires je pense que tes 28 formulaires font a peu pres la meme chose si c'est le cas il faudrait coder differament & conserver seulement 1 formulaire a mois que chaque formulaire est bien specifique a mediter!!


    ps : pas rafraichi

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut. Je rejoins Laëtitia et Ormonth.

    Pour moi, problème de conception à la base.

    Peux-tu expliquer ce que tu es sensé réaliser avec ton classeur? Nous pourrons alors t'orienter vers une conception de fichier qui te permettra d'avoir du code VBA plus générique, donc plus fiable et plus maintenable.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    merci laetitia, j'y ai penser mais le problème vient que chaque formulaire correspond a une type de dépense particulière qui dans les fichier ventilation se saisisse diferement

    par exemple sur des licence sportive c'est 20 € de subvention par licence
    alors que dans noel ce sont des chèques cadeau de différent valeur, etc...
    tout cela se remplie spécifiquement en fonction de la ventilation

    ce formulaire en faite, est la pour m'éviter une double saisie (caisse + ventilation) et donc d'oublier entre autre de saisir la ventilation ou de mettre un montant erroné dans l'un par rapport à l'autre

    s'il personne n'a de solution a me proposé, je vais recommencé mon architecture en saisissant la première étape dans le premier formulaire qui saisira dans caisse et à l'ouverture du fichier formulaire de ventilation je ferais les sélection spécifique.

    merci pierre

    donc je crée un module de saisie pour la comptabilité du comité d'entreprise

    j'ai donc un fichier caisse pour les recette dépense
    je met dans ce fichier
    1) la date
    2)fiche dépense ou fiche recette
    3) le code de ventilation (1 si c'est la subvention du ce, 4 pour un cheque cadeau de naissance, etc)
    4) le libéllé
    5) la dépense ou la recette

    ensuite viens ensuite la ventilation, met la c'est spécifique car il y a des subvention versé au personne pour des colonie, licence sportive, des entrées piscines, des chèques cadeaux noel colis rentrée scolaire, et plein d'autre truc. donc chaque fichier ventilation n'a pas forcement la même architecture donc chaque formulaire va pouvoir se caler au besoins du fichier

    donc au vue de la discution je pensais utiliser le formulaire general pour remplir la première partie qui va remplir le fichier caisse et utiliser par la suite la partie specifique en ventilation avec le formulaire qui convient

    a moins que vous voyez autre chose a faire

  7. #7
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re, salut Pierre l'ideal serait que tu zip une partie de ton fichier sans données confid.. pour voir ce qui est possible de simplifier !!! passer par un module de classe entre autres multipage ect..

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il faut déjà voir si un document peut donner lieu à plusieurs lignes de détails, et si les lignes de détails d'un document sont toujours du même type ou si tu as du panaché

    En fonction de cela, on peut avancer un peu plus
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 20h28
  2. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2006, 22h51
  3. Simplification de code (suite)
    Par Jeffboj dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 23h34
  4. simplification de code
    Par Jeffboj dans le forum Access
    Réponses: 11
    Dernier message: 11/04/2006, 16h09
  5. [c#] Simplification de code
    Par Revan012 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/02/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo