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 :

Gestion d'unités avancée


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut Gestion d'unités avancée
    Bonjour à tous,

    J'ai comme projet d'inclure dans mon développement d'application de gestion une gestion des unités universelles.

    Pour cela et en m'inspirant de ce que j'ai vu dans d'autres logiciels il suffirait de deux champs
    [Quantité] et [Unité]

    [Unité] étant une liste de valeurs (h,L,m,m² etc...)
    [Quantité] (0.00)

    Je me doute bien qu'il faudra coder pour vérifier que la quantité introduite soit correcte par rapport à l'unité sélectionnée et qu'il faudra aussi formater ensuite les données.

    Par exemple dans le cas d'une unité heure, il faudra que la quantité supportée soit supérieure à 24h pour la partie gauche et d'un maximum de 59 pour la partie droite(J'ai déjà quelques éléments de réponse vus ici)

    Comment vous y prendriez vous pour qu'en suite dans les états les données introduites puissent s'additionner correctement (dans le cas d'une unité horaire) ?

  2. #2
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Personnellement, d'un point de vue purement de codage VBA j'utiliserai une interface (via un module de classe) que je pourrai ensuite implémenter dans les différents cas de figures. Par exemple une interface qui possède les principaux accesseur getUnite(), setUnite(), getValeur() et setValeur(), etc... Le plus pratique serrai d'utiliser les propriétés car elles sont plus simple d'utilisation.

    Après je déclinerai dans une autre classe pour chaque type de base. Par exemple UniteHeure, UniteDouble, UniteLong, etc...

    L'intérêt c'est que l'on peux ensuite les utiliser dans une collection d'objets(grâce à l'objet Collection) en typant la collection de l'interface. On sais que tous ces objets sont du type de l'interface unite par exemple.

    De cette manière, on peux manipuler les objets quelque soit leur type. Pour retrouver un type d'objet il faut faire quelque chose dans ce genre ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TypeOf monObjet Is UniteHeure Then ...
    Par contre pour le stockage d'une unité dans la base de données je pense qu'il faut au moins sauvegarder le type dans un champ afin de pouvoir implémenter, au moment du chargement, le bon type d'unité en mémoire.

    Cordialement,
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par Tonioyo Voir le message
    Bonjour,

    Personnellement, d'un point de vue purement de codage VBA j'utiliserai une interface (via un module de classe) que je pourrai ensuite implémenter dans les différents cas de figures. Par exemple une interface qui possède les principaux accesseur getUnite(), setUnite(), getValeur() et setValeur(), etc... Le plus pratique serrai d'utiliser les propriétés car elles sont plus simple d'utilisation.

    Après je déclinerai dans une autre classe pour chaque type de base. Par exemple UniteHeure, UniteDouble, UniteLong, etc...

    L'intérêt c'est que l'on peux ensuite les utiliser dans une collection d'objets(grâce à l'objet Collection) en typant la collection de l'interface. On sais que tous ces objets sont du type de l'interface unite par exemple.

    De cette manière, on peux manipuler les objets quelque soit leur type. Pour retrouver un type d'objet il faut faire quelque chose dans ce genre ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TypeOf monObjet Is UniteHeure Then ...
    Par contre pour le stockage d'une unité dans la base de données je pense qu'il faut au moins sauvegarder le type dans un champ afin de pouvoir implémenter, au moment du chargement, le bon type d'unité en mémoire.

    Cordialement,
    Merci pour ta réponse,

    Ouh la la, que ça me semble compliqué tout ça !

    Pour un débutant comme moi, je vais galérer, surtout sachant qu'il ne faut que 2 champs maximum dans le formulaire ...
    Je suppose qu'il faudra dédoubler en créant un champ dans la table pour chaque type d'unité et ce sera par vba que la valeur sera réinjectée dans le champ [Quantité]...

    La seule complication venant de l'unité horaire > 24h et de la mise en place d'une logique s'y rapportant...

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    La classe est une bonne idée mais bon... il ne faut pas exagérer, c'est juste un calcul.
    Ta liste déroulante qui propose l'unité... tu modifie la source qui doit être une table, ok ??? Selon ce qui est sélectionné, tu peux engager une décision car ta liste possède un ID qui correspond à l'élément sélectionné...

    Dans cette table tu ajoutes les champs Coefficient requis et la formule... Tu exploites le tout avec un Eval().
    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub testformule()
        Dim strFormule                           As String
        Dim L                                    As Double
        Dim P                                    As Double
        Dim H                                    As Double
        Dim Coefficient As Double
     
        L = 15
        P = 15
        H = 10
        Coeficient = 1.7554
        'On suppose que la formule ci-dessous est dans ta table...
        strFormule = "Long*Larg*Haut"
     
        MsgBox Eval(Replace(Replace(Replace(strFormule, "Long", L), "Larg", P), "Haut", H)) * Coefficient
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. [Data] Gestion des unités de persistance multiple
    Par Khaled.Noordin dans le forum Spring
    Réponses: 1
    Dernier message: 14/09/2012, 13h47
  2. [PR-2010] Gestion de l'avancement par des ressources génériques
    Par Eowyn dans le forum Project
    Réponses: 1
    Dernier message: 24/05/2011, 14h52
  3. Réponses: 7
    Dernier message: 30/09/2010, 17h01
  4. [MySQL] Réflexion sur un système de gestions de droits avancés
    Par nuitn0ire dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/03/2010, 10h58

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