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

VBA Access Discussion :

Morceaux de fonction utilisés dans plusieurs formulaires


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 29
    Points
    29
    Par défaut Morceaux de fonction utilisés dans plusieurs formulaires
    Bonjour tout le monde.

    Voilà j'ai une base avec des boutons que je colorise suivant un état d'avancement défini. Ces boutons sont présents dans 12 formulaires et je n'ai pas trouvé d'autres moyens que de répéter le code dans les objets de classe de tous les formulaires concernés.
    Bon certes, ca fonctionne, mais cela allourdi considérablement le code inutillement.
    J'ai essayé de déclarer ça un Public Function, mais je me fais jeter car j'utilise des valeurs du formulaire en cours d'utilisation.
    Voici un petit exemple du code que je répète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If IsNull([CAL_DATE_DEB_VIEILL]) = True Then
        Me.Bout_VIEILL.BackColor = rouge
        Me.Bout_VIEILL.ForeColor = Noir
    Else
        If ([CAL_DATE_FIN_VIEILL]) < Now Then
        Me.Bout_VIEILL.BackColor = Vert
        Me.Bout_VIEILL.ForeColor = Noir
        Else
        Me.Bout_VIEILL.BackColor = Bleu
        Me.Bout_VIEILL.ForeColor = blanc
        End If
    End If
    L'erreur est "nom externe non défini" pour les champs [CAL_DATE_DEB_VIEILL] et [CAL_DATE_FIN_VIEILL] qui font parti du formulaire dans lequel je souhaite lancer le code.

    Je vous remercie par avance pour vos idées pour alléger mon mastodonte

  2. #2
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Question bête...

    Tu as douze formulaires... -> 1 pour chaque mois de l'année?
    "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...
    ---------------

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Non, en fait j'ai un atelier comprenant douze postes de charge disctinct. Mes produits étant réalisés de manière séquentielle, je cherche à pouvoir connaitre l'avancement simplement grâce à des codes couleur.
    Je joint un screen des boutons avec les couleurs (chaque bouton étant un lien vers le formulaire correspondant à la phase concernée).

  4. #4
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Je ne suis pas certain d'avoir compris ce que tu souhaites réaliser.

    Quoi qu'il en soit, si tes formulaires ont les mêmes boutons (ou à tout le moins que tu veux modifier par proc des boutons qui se trouvent sur chaque formulaire, tu peux utiliser une procédure publique à laquelle tu passes le formulaire en paramètre, et tu remplaces alors le ME par l'objet formulaire.

    Mais j'avoue que j'ai des difficultés à comprendre la finalité, sans voir la structure et le fonctionnement de ta base
    "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...
    ---------------

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Je vais essayer d'être un peu plus clair (c'est pas mon fort)

    Les 12 boutons correspondent à 12 activités distinctes de mon atelier.
    Par défaut lorsqu'une nouvelle pièce arrive, tous les boutons sont en fond rouge (en gros, on a encore rien glandé et on va pas tarder à se faire taper sur les doigts)

    Dès que la première activité a démarré, le bouton lui correspondant change de couleur.
    Ici on voit que la première activité a été entierement réalisée (je suis dans le formulaire de la première étape). Tous les champs ont été renseignés et le bouton correspondant est passé en fond vert (les autres restent en rouge car rien n'a été fait plus loin) :

    Ensuite, je passe à l'étape suivante et je démarre l'activité (seuls les champs de gauche sont remplis). L'activité étant démarrée, le bouton associé passe en bleu :

    Le cycle de fabrication continue ainsi. L'avantage de ce principe, c'est qu'en cherchant le n° de ma pièce dans n'importe quel formulaire, je connait immédiatement son état de réalisation.

    Au niveau Access, j'ai utilisé la base d'un formulaire avec tous ses boutons et les macros permettant la navigation et la colorisation que j'ai recopié autant de fois que j'avais d'étapes disctinctes (mes 12 étapes correspondant à mes 12 formulaires).
    J'ai réussi à créer des fonctions publiques pour la navigation, mais je bloque pour la colorisation.
    J'ai donc environ 150 lignes de code que je répète dans chaque formulaire. Alors certes ma méthode fonctionne, mais je la trouve un peu "bourrine".

    Peux-tu STP me donner un exemple de ton astuce de remplacement de Me ?

    Merci !

Discussions similaires

  1. [AC-2010] Fonction recherche d'une entrée dans plusieurs formulaires
    Par kinine dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/01/2013, 19h56
  2. Réponses: 2
    Dernier message: 08/01/2007, 09h01
  3. Réponses: 21
    Dernier message: 29/11/2006, 22h51
  4. [C# 1.1] Fonction appelée dans plusieurs classes
    Par fregolo52 dans le forum C#
    Réponses: 1
    Dernier message: 25/10/2006, 09h36
  5. Plot fonction surf dans plusieurs plans
    Par AppleGuy dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/06/2006, 17h59

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