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 :

Incompréhension avec MELA [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut Incompréhension avec MELA
    Bonjour à toutes et à tous

    Je me permet d'ouvrir ce post car j'ai beaucoup de mal à comprendre le tuto de loufab sur la classe M.E.L.A (ICI).

    Je tiens d'abord à vous informer que je ne suis pas expert dans l'utilisation du VBA... Si vous pensez que je m'engage dans quelque chose de trop complexe, n'hésitez pas à m'en faire part.

    Ma BDD dans laquelle je veux utiliser la classe :

    - Table : "T_Personnes" | Champs: ID_Personne, Nom, Prénom, Date de naissance, Adresse, Tel, Mail.
    - Formulaire : "F_Personnes", incluant les champs de la table.


    Voici comment j'ai procédé :

    1 - J'ai télécharger le modèle "MELA.accdb".
    2 - Dans le VBA de ma BDD, j'ai implanté la référence (Outils -> Références) : "MELA.accbd"
    3 - J'ai copié/collé les boutons de l'exemple de formulaire de la BDD "MELA.accbd".
    4 - J'ai ajouter le code ci-dessous dans mon formulaire "F_Personnes" :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Option Compare Database
    Option Explicit
     
    Dim mButtonNav As cBoutonNav
     
    Private Sub Form_Open(Cancel As Integer)
     
    ' mise en fonction de la classe
    Set mButtonNav = MELA.CreerMELA()
     
    ' paramètrage de la classe avec le formulaire
    Set mButtonNav.Form = Me
     
    ' Dans le cas ou l'on veut fixer un controle par défaut différent
    ' de celui défini par la classe.
    'mButtonNav.DefaultControlName = "Prenom"
     
    End Sub
     
    Private Sub Form_Close()
        Set mButtonNav = Nothing  'libère la variable
    End Sub
     
    Public Sub piAfterDelete()
    '---------------------------------------------------------------------------------------
    ' Procedure : piAfterDelete
    ' Author    : Fabrice CONSTANS (MVP)
    ' Date      : 13 / 07 / 2012
    ' Purpose   : Après la suppression de la fiche par la classe Mela CBoutonNav celle-ci
    '              fait un appel à cette procédure publique pour faire des traitements Post.
    '              En effet il n'y a pas de déclenchement d'événement après.
    ' Parametres: vlId l'id de la fiche supprimée
    ' Return    :
    '---------------------------------------------------------------------------------------
    '
     
       Dim db As DAO.Database
       Dim i As Integer
     
       Set db = CurrentDb
     
       db.Execute "DELETE * FROM tInscription WHERE Id_Adherent=" & mButtonNav.IdCurrentRecord & ";", dbFailOnError
     
       Set db = Nothing
     
       On Error GoTo 0
       Exit Sub
     
    End Sub
    Malheureusement, lorsque je clique sur les boutons, rien ne se passe...

    Ai-je loupé quelque chose ?

    Merci d'avance pour votre lecture.

    Falneur.
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour

    Dans quelle partie du formulaire (header ou Footer, mais pas dans Détail) as-tu copié les boutons ?
    la classe demande que les boutons soient dans le Header.
    Il faut changer une ligne dans la classe pour les faire fonctionner dans le Footer;

    Cdlt,
    "Always look at the bright side of life." Monty Python.

  3. #3
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Bonjour micniv, c'est bien ça le problème que j'avais , je faisais une copie dans le "détail" et non dans "l'entête". Merci beaucoup pour ton aide !

    Toutefois, il me reste un petit problème : Lorsque j'ouvre mon formulaire, le bouton est directement sur "Enregistrer" et lorsque je clique dessus, il ne passe pas sur "Modifier"...

    Je pense que mon problème vient des paramètres de mes champs, y a t-il des paramètres à bien respecter ? (par exemple, modif autorisée -> Oui ...)

    Merci d'avance.

    Falneur.
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,
    Lorsque j'ouvre mon formulaire, le bouton est directement sur "Enregistrer" et ...
    Par défaut :
    Lorsque j'ouvre le formulaire, le focus est bien sur le bouton Modifier/Enregistrer avec le caption sur Modifier.

    De plus, dans mon test ( je prefere avoir le code dans un seul fichier) :
    • j'ai importé la classe cBoutonNav ; Plus besoin de créer une reference à une base externe.
    • du coup dans un module standard il faut legerement modifier la seule fonction CreerMELA()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function CreerMELA() As cBoutonNav
    ' Pour créer une instance de la classe
    ' obligatoire dans le cas d'une bibliothèque
        Set CreerMELA = New cBoutonNav
    End Function
    cdlt
    "Always look at the bright side of life." Monty Python.

  5. #5
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    D'accord je vais implanter le MELA, directement dans ma base sans créer de référence externe.

    J'ai oublié de vous dire quelque chose, c'est que j'ai déjà du code VBA dans la propriété "Sur Activation" ... Est-ce que le problème peut venir de là ?

    La code que j'ai "Sur Activation" est un code me permettant d'aller chercher la photo de la personne sur un espace de stockage externe à la BDD.

    EDIT :

    J'ai beau passer tous les contrôle en Activer "Oui", Verrouiller "Oui", rien n'y fait ...

    Le bouton "Enregistrer" ne switchant pas avec le bouton "Modifier", je ne peux pas supprimer de caractères, ni en ajouter...
    Dès que je change d'enregistrement, le logiciel me demande si je veux enregistrer mes modifications alors que je n'en ai pas apportées...
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    j'ai déjà du code VBA dans la propriété "Sur Activation" ... Est-ce que le problème peut venir de là
    Non ça ne vient pas de la.
    le problème est que le code de la classe ne se déclenche pas. Donc, compile ton programme, revoit les quelques déclarations ...
    Bien sûr, tu n'as pas changer le nom des boutons !

    Sinon mets-nous un extrait de ta base en piece jointe.
    "Always look at the bright side of life." Monty Python.

  7. #7
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Si tes btn Modifier/Enregistrer ne switchent pas, as-tu vérifié qu'ils soient bien nommés comme ci-dessous?
    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
    Private Sub Class_Terminate()
    ' libère les variables
        On Error Resume Next
        Set btnCreer = Nothing
        Set btnModifier = Nothing
        Set btnEnregistrer = Nothing
        Set btnCopier = Nothing
        Set btnAnnuler = Nothing
        Set btnSupprimer = Nothing
        Set btnPrecedent = Nothing
        Set btnSuivant = Nothing
        Set btnFermer = Nothing
        Set LmRechercher = Nothing
        Set oForm = Nothing
    End Sub
    Que tu sois sur Form_Current(), Form_Load(), Form_Open() la procédure fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Compare Database
    Option Explicit
    Dim mButtonNav As cBoutonNav
    Private Sub Form_Current()
    Set mButtonNav = CreerMELA() 'Attention Micniv a inversé les rôles !
    Set mButtonNav.Form = Me
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Set mButtonNav = CreerMELA() 'Attention Micniv a inversé les rôles ! ...
    hyperion13 : voila un propos laché un peu trop vite. J'ai simplement fait une modif dans la fonction Creer MELA que j'ai ramené dans un module standard local.
    Donc rien à voir ...
    "Always look at the bright side of life." Monty Python.

  9. #9
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Merci à vous pour vos réponses mais malheureusement, rien ne fonctionne ...

    micniv, je suis désolé mais je ne suis pas expert en VBA, j'ai beau tenter de vérifier les déclarations, je ne vois pas ce qui peut clocher ...

    hyperion13, j'ai simplement fait un copier/coller des boutons et du module MELA, je n'ai donc rien changé aux noms des boutons.

    Je vous joint ma BDD afin que vous puissiez regarder mon problème lorsque vous aurez du temps .

    Info : Lorsque je vous ai présenter ma BDD, j'ai prit un exemple simple que n'avais rien à voir avec ma BDD réelle. Vous verrez que celle-ci concerne en réalité, une BDD référençant des chiens d'élevage pour l'entreprise de ma compagne .

    Système de création de la BDD : Office 2016 - 32 bits

    Je tiens à vous remercier par avance pour tous les efforts que vous fournissez afin de résoudre mon problème, ça m'embête de prendre de votre temps alors que vous devez avoir mieux à faire ...


    EDIT :

    J'ai également le problème que lorsque je clique sur "Suivant" ou "Précédent", le msgbox "Voulez-vous sauvegarder les modifications apportées ?" s'active ...

    Je viens de regarder un peu le code "Dirty", l'aide Microsoft dit que :
    Par exemple, vous pouvez demander à l’utilisateur si les modifications apportées à un enregistrement sont souhaitées et, si ce n’est pas le cas, permettre à l’utilisateur de passer à l’enregistrement suivant sans enregistrer les modifications.
    Lorsqu’un enregistrement est sauvegardé, Microsoft Access affecte à la propriété Dirty la valeur False. Lorsqu’un utilisateur modifie un enregistrement, la propriété prend la valeur True.
    J'ai le sentiment que j'ai un problème à ce niveau, comme si un ou plusieurs éléments de mon formulaire se modifiaient (s'actualisaient) en permanence et que cela crée la présence d'une modification continue.

    De ce fait, le bouton "Modifier" n'apparaît pas et que lorsque je change d'enregistrement, la msgbox s'affiche...
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  10. #10
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,

    Voici ci-joint ton programme corrigé.

    Tu n'as plus besoin de la base MELA ni de renseigner sa reference dans le tienne. J'ai intégré le module de la classe. Une amélioration apportée : tu peux déplacer les boutons MELA en pied de formulaire.

    Ce qui posait problème :

    1 à l'ouverture, il y a l'instanciation de la classe MELA qui détermine un controle par defaut. Ce controle par defaut est le controle de la zone détail qui a le n° de tabulation 0.
    or toi, tu as le controle d'onglets en n° 0 (ce qui est normal) . Alors j'ai retiré aux controles d'onglets (typeOf = TabControl) la possibilité d'etre un controle par défaut.

    2 a la fin de tes mises à jours déclenchées dans Form_current, j'ai placé la ligne : Me.dirty = false ceci effectue une sauvegarde de l'enregistrement courant et permet le fonctionnement attendu des boutons Suivant, Précédent, ... sinon constamment, la question était posée : "Voulez-vous sauvegarder les modifications ? ..."

    PS : je n'ai pas testé tous les boutons. certains ne marchent pas : Créer ... Donc il reste encore un peu de travail ...
    Fichiers attachés Fichiers attachés
    "Always look at the bright side of life." Monty Python.

  11. #11
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    En écrivant le message ci-dessus, j'ai été inspiré et je viens de vérifier: pour un bon fonctionnement des boutons MELA Créer et Supprimer il faut mettre les propriétés du formulaire "Ajout autorisé" et "Suppression autorisée" à OUI

    Bonne suite
    "Always look at the bright side of life." Monty Python.

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Le test du dirty est normal, il permet d'éviter la modification intempestive et non désirée d'un enregistrement, il permet de lock/delock les zones de saisie.
    Lorsqu'il y a modification de l'enregistrement (dirty à true), une action sur Suivant/précédent/créer affiche le message. Cela permet également de faire alterner les boutons Modifier/Enregistrer.

    La modification (dirty passe à true) se produit systématiquement dans ton form_current, tu mets à jour tout une série de champs.
    Il semble que tu souhaites vouloir utiliser des chemins relatifs mais que tu le transformes en absolu lorsque tu parcours les fiches. Je n'en comprend ni le but ni l'utilité.


    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Bonjour à tous,

    Un immense merci à toi micniv, ma BDD fonctionne parfaitement ! J'ai bien comprit d'où provenaient mes erreurs .

    Pour le fait de faire des ajouts, c'est tout à fait ça, il faut paramétrer sur "Ajout" Oui et "Suppression" Oui.

    loufab :
    Il semble que tu souhaites vouloir utiliser des chemins relatifs mais que tu le transformes en absolu lorsque tu parcours les fiches. Je n'en comprend ni le but ni l'utilité.
    Désolé mais je ne comprend pas ce que tu veux dire par le fait que je transformes mes chemins en absolus au lieu de relatifs ...
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  14. #14
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Un grand bonjour à Loufab.
    J'ai profité de ce fil pour mieux connaitre la classe MELA (et un peu la bidouiller au passage ..)
    en tout cas c'est CLASSE, bravo !
    Micniv
    "Always look at the bright side of life." Monty Python.

  15. #15
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    J'en profite pour vous poser une dernière question ...

    Comment faire pour pouvoir "modifier" également les champs de l'entête ?

    Merci d'avance.

    Falneur
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  16. #16
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Merci micniv, c'est fait pour être amélioré. (y)
    @falneur :
    Et bien tu déclares des constantes avec des chemins relatifs (relatifs à la racine de l'application).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const rep_Photos_Chiens = "\Stockage\Photos chiens\"
    Que tu complètes probablement quelque part avec un :
    .
    C'est une bonne technique pour pouvoir installer/copier l'application où l'on veut.

    Mais au lieu de l'utiliser en tant que tel, en ne stockant que le nom du fichier "bidochon.jpg" dans ta table, tu stockes l'intégralité (répertoire de l'appli + chemin relatif + fichier) au moment du form_current.
    Là tu perds le bénéfice du système que tu as mis en place.
    La continuité de cette méthode :
    Stocke le nom de ton fichier dans la table et lui uniquement, le reste tu l'as en permanence dans la constante et le currentProject.path.
    Lorsque tu as besoin d'utiliser l'image, tu concatènes le chemin avec le fichier stocké à la volée. (au besoin un fonction utilisateur peut te faciliter ça)
    Ainsi tu n'as plus cette incohérence de gestion, et plus cette écriture sur le form_current.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    L'en-tête, même si on peut l'utiliser comme tu le fais, n'est pas destiné à recevoir les zones de saisie. On y met un titre, des boutons... des choses qui sont générales à la source (table ou requete) et non à l'enregistrement (la ligne de la table).

    Mon conseil est de déplacer ces zones dans la partie principale et au besoin de mettre une ligne de séparation entre ceux-ci est le reste. Le tuto explique tout ça.

    Cette classe est prévue pour éviter de mettre la "plomberie" -le crud ou mela- dans chaque formulaire et au moyen de quelques lignes de retrouver la même ergonomie et fonctionnalité pour l'ensemble de l'application.

    Citation Envoyé par Falneur Voir le message
    J'en profite pour vous poser une dernière question ...

    Comment faire pour pouvoir "modifier" également les champs de l'entête ?

    Merci d'avance.

    Falneur
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  18. #18
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Je constate que tu as recréé une zone liste de recherche dans l'en-tête alors que cette fonctionnalité est prévue par la classe.
    Regarde le tuto pour la mise en oeuvre.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  19. #19
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Bonjour à tous,

    Je crois voir ce que tu veux me dire loufab mais j'ai du mal à faire le cheminement pour arriver au même résultat qu'actuellement .

    Dans ma table je dispose de :

    Photo : Où est stocké le nom de l'image "bidochon.jpg"
    chm_Photo : Où est inscrit le chemin de cette photo

    Dans mon formulaire :

    J'ai un cadre d'image "img_Photo" dont les données sont reliées à "chm_Photo" de ma table.

    Le chemin qui est stocké par le champs "chm_Photo" est inscrit par cette procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        ' Si le champ "Photo" est non nul ; Alors on affiche l'image du chemin ; Sinon, on affiche la photo "Aucune photo.png"
        If Len(Me.Photo) > 0 Then
            Me.chm_Photo = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & Me.Photo
            Else
            Me.chm_Photo = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & "Aucune photo.png"
        End If
    Je ne vois pas comment me passer du champs "chm_Photo" et indiquer à mon cadre le chemin qu'il doit suivre pour afficher la photo ...

    EDIT :

    Le bouton "Ajouter photo" suit cette procédure :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub btn_Ajouter_Photo_Click()
     
        ' Déclaration des variables
        Dim strLink_Photo As String
     
        ' Gestion des erreurs
        On Error GoTo Catch01
     
        ' Récupération du nom du fichier par la boite de dialogue (mdl_Explorateur_fichier)
        strLink_Photo = OuvrirUnFichier(Me.hwnd, "Sélectionnez une photo pour " & Me.Nom, 2, , , CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens)
     
        ' Si la boite renvoie une adresse non nulle: Si Longueur(strLink) > 0 Alors
        If Len(strLink_Photo) > 0 Then
            ' Ajout du nom de l'image dans le champ "Photo"
            Me.Photo = strLink_Photo
            ' Ajout du chemin de l'image dans le champ "chm_Photo"
            Me.chm_Photo = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & Me.Photo
        End If
     
        'Rafraîchir le formulaire
        Me.Refresh
     
    Exit Sub
     
    Catch01:
        Select Case Err.Number
            Case 2114
                ' Cas d'un type de fichier photo non supporté ... on sort de la procédure
                MsgBox "Le format de l'image n'est pas supporté ", vbCritical + vbOKOnly, "Application Photos"
                Exit Sub
            Case 2220
                ' Cas d'un emplacement non valide du fichier images
                MsgBox "Le fichier n'a pas été trouvé à l'emplacement indiqué : " & vbCrLf & Me.Photo, vbCritical + vbOKOnly, "Application Photos"
                Exit Sub
            Case Else
                ' Tout autre erreur
                MsgBox "Erreur inattendue : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Application Photos"
        End Select
        Err.Clear
     
    End Sub
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

  20. #20
    Membre du Club Avatar de Falneur
    Homme Profil pro
    Concepteur industriel
    Inscrit en
    Août 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Concepteur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    C'est bon j'ai trouvé ! Et je ne suis pas peu fier d'y être arrivé seul (pour une fois...)

    J'ai remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       If Len(Me.Photo) > 0 Then
            Me.chm_Photo = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & Me.Photo
            Else
            Me.chm_Photo = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & "Aucune photo.png"
        End If
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If Len(Me.Photo) > 0 Then
            img_Photo.Picture = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & Me.Photo
            Else
            img_Photo.Picture = CurrentProject.Path & mdl_Chemins.rep_Photos_Chiens & "Aucune photo.png"
        End If
    C'est vrai que je m'était suis bien compliqué la vie ... Surtout pour quelque chose qui encombrait mon code ...

    loufab : Je vais suivre ton conseil et utiliser mon entête de formulaire uniquement pour les boutons MELA.


    Un immense à vous trois pour toute l'aide que vous m'avez apporté !

    Je suis pas un expert mais grâce à vous et vos explications claires et précises, j'ai tout comprit à mon problème. Tout est question de logique mais je dois bien vous avouer que sans micniv, je n'aurai pas pu trouver seul ...

    Developpez.net est vraiment une communauté géniale ! Les gens sont très sympathique et les meilleurs aident les plus nuls .
    Falneur.

    La logique vous mènera d’un point A à un point B. L’imagination vous emmènera où vous voulez ~ Albert EINSTEIN ~

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur incompréhensible avec UBound
    Par Neuromancien2 dans le forum ASP
    Réponses: 2
    Dernier message: 15/06/2007, 11h52
  2. erreur incompréhensible avec fopen
    Par maysa dans le forum Langage
    Réponses: 2
    Dernier message: 08/06/2007, 12h03
  3. Incompréhension avec la commande "find"
    Par Charly94 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 28/12/2006, 18h17
  4. Réponses: 4
    Dernier message: 25/09/2006, 14h57
  5. incompréhension avec ado
    Par Orgied dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/05/2004, 18h24

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