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 :

Macro à excécuter dans un sous-formulaire


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Macro à excécuter dans un sous-formulaire
    Bonjour,

    j'ai un formulaire qui se nomme "F_RMC_Appro", et qui contient un sous-formulaire qui se nomme "SF_RMC_Appro".
    Dans mon sous-formulaire, s'affiche une liste de fournisseurs avec différentes informations les concernant, selon une recherche multi-critères.
    Ce que j'aimerais faire, c'est afficher une image (Image40) sur les lignes pour lesquelles le fournisseur a été ajouté il y a moins de 90 jours.
    J'ai dans mon sous-formulaire une zone de texte affichant la date d'ajout du fournisseur (Date_Ajout), et j'ai donc aussi ajouté une zone de texte qui affiche la date du jour (DDJ).
    Le problème, c'est que je suis débutant en vba sous Access, et je ne sais pas exactement comment rédiger la macro.
    Ce que j'ai fais, et qui ne fonctionne pas, c'est placer cette macro, dans mon formulaire principal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
        If Forms("F_RMC_Appro").Controls("SF_RMC_Appro").DDJ - Forms("F_RMC_Appro").Controls("SF_RMC_Appro").Date_Ajout < 90 Then
            Forms("F_RMC_Appro").Controls("SF_RMC_Appro").Image40.Visible = True
          Else: Forms("F_RMC_Appro").Controls("SF_RMC_Appro").Image40.Visible = False
        End If
    End Sub
    Je suis certain que la syntaxe n'est pas bonne, ne connaissant pas encore bien vba. Et je ne suis pas sûr de la manière de faire des comparatifs de date sous vba.

    Quelqu'un peut-il m'aider svp?

    Merci,
    Laurent.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je te suggère le code suivant à mettre dans le sous-formulaire puisque, apparemment, tout s'y passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private sub GererImage()
        if date() - me.[DD]<90 then
             me.Image40.Visible = True
          else 
             me.Image40.Visible = false
        end if
    End Sub
    et peut-être plutôt sur l'événement "Sur Activation" (*On current").

    tu as juste à mettre

    Si cela ne marche pas avec Sur Activation, tu peux facilement essayer avec d'autre événement.

    Attention ce code ne va fonctionner QUE si tu es en mode "Formulaire unique".

    Le Me. réfère au formulaire (ou sous-formulaire et, plus généralement, à l'objet) courant.

    et on peut faire plus compact mais moins évident :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.Image40.Visible = (date() - me.[DD]<90)
    Ceci s'appelle une équation logique. (date() - me.[DD]<90) retourne Vrai ou Faux.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2016
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Salut marot_r

    Merci pour ta réponse.
    Mon problème est que mes résultats d'affichent dans un formulaire continu, car je veux afficher une liste des fournisseurs disponibles selon plusieurs critères de recherche. Et dans un formulaire continu, il est ainsi plus facile de les comparer.
    Existe t-il ou est-il possible d'afficher ou de masquer un élément dans un formulaire continu?

    Merci beaucoup,
    Laurent.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    0JBonjour.

    De ce que j'ai compris depuis la version 2007, tu peux associer une image sur disque à un contrôle image et définir sa source dans un champ texte.

    1. Donc tu pourrais ajouter une image sur ton formulaire (ou utiliser l'image existante),
    2. choisir le "type d'image" : attaché
    3. et dans la propriété "Source Contrôle" mettre nom de ton champ (ex : [NomImage]).


    Dans une requête qui va te servir de source de données tu vas mettre un champ calculé du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomImage:iif(Date()-[NomTaTable].[DD]<90; CurrentProject.path & "\NomTonImage.JPG"); Null)
    Là où le nom sera complété tu devrais avoir l'image, sinon rien.

    En passant il est recommandé de donner des nom significatifs aux contrôles. Ici [Image41], cela ne dit vraiment rien. Quelque chose comme [ImageNouveauFournisseur] Ou [ImageMoins90j] ont plus de sens.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [AC-2010] Macro "Ouvrir formulaire where" sur double-clic dans un sous-formulaire
    Par Beaver dans le forum Macros Access
    Réponses: 3
    Dernier message: 21/04/2015, 11h07
  2. Macro dans un sous-formulaire
    Par larsen71 dans le forum Macros Access
    Réponses: 2
    Dernier message: 29/07/2014, 15h10
  3. [AC-2007] Macro dans un sous-formulaire
    Par cyberpantR dans le forum Access
    Réponses: 4
    Dernier message: 21/11/2013, 18h15
  4. [AC-2010] Macro dans un sous-formulaire
    Par cabcox dans le forum Modélisation
    Réponses: 1
    Dernier message: 25/09/2012, 17h20
  5. [AC-2010] Macro d'ouverture dans un sous formulaire
    Par sardaucar dans le forum IHM
    Réponses: 2
    Dernier message: 26/08/2012, 12h05

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