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

IHM Discussion :

Aller chercher une valeur hors du formulaire actif


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 49
    Points : 33
    Points
    33
    Par défaut Aller chercher une valeur hors du formulaire actif
    Bonjour,

    Dans ma base de facturation, j'ai un formulaire de saisie de facture qui inclue 2 sous -formulaires :
    • DetailsFacture : contient les infos générales sur les articles
    • TarifsSpeciaux : contient des infos particulières sur les articles, propres à certains clients.


    Sur le champ PVHT de Détails facture, j'ai inséré le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub PVHT_Enter()
        If Nz(Tbase, 0) = 0 Then
        Me.PVHT = Nz(Me.TL1, 0)
            ElseIf Nz(Tbase, 0) = 2 Then
            Me.PVHT = Nz(Me.TL2, 0)
                ElseIf Nz(Tbase, 0) = 3 Then
                Me.PVHT = Nz(Me.TsPlace, 0)
    End If
    End Sub
    ça fonctionne très bien mais je voudrais ajouter un If au début, pour transformer le code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub PVHT_Enter()
        If Me.Tarifs_spéciaux = -1 Then
        Me.PVHT = Me.PU_SPE
            ElseIf Nz(Tbase, 0) = 0 Then
            Me.PVHT = Nz(Me.TL1, 0)
                ElseIf Nz(Tbase, 0) = 2 Then
                Me.PVHT = Nz(Me.TL2, 0)
                    ElseIf Nz(Tbase, 0) = 3 Then
                    Me.PVHT = Nz(Me.TsPlace, 0)
    End If
    End Sub

    Le problème se situe au niveau de PU_SPE :
    ce champ ne se trouve pas dans le sous-formulaire DétailsFacture mais dans TarifsSpeciaux ; comment faire pour récupérer sa valeur ?

    Merci d'avance de votre aide

    Catherine

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pour lire des infos dans un sous-formulaire, tout est dans ce tuto : http://loufab.developpez.com/tutorie...pelformulaire/

    Philippe

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 49
    Points : 33
    Points
    33
    Par défaut
    Merci de ta réponse ; j'avais déjà regardé un peu mais pas au bon endroit !

    J'ai modifié mon code mais ça ne marche toujours pas

    Voilà le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub PVHT_Enter()
        If Me.Tarifs_spéciaux = -1 Then
        Me.PVHT = Forms.Frm_FactureEntete.SsFrm_TarSpe.Form.PU_SPE
          ElseIf Nz(Tbase, 0) = 0 Then
            Me.PVHT = Nz(Me.TL1, 0)
                ElseIf Nz(Tbase, 0) = 2 Then
                Me.PVHT = Nz(Me.TL2, 0)
                    ElseIf Nz(Tbase, 0) = 3 Then
                    Me.PVHT = Nz(Me.TsPlace, 0)
    End If
    End Sub
    Le code est sur le champ PVHT du sous-formulaire Frm_FactureDetails.
    Le formulaire Frm_FactureEntete est le formulaire principal contenant également le sous-formulaire SsFrm_TarSpe.
    SsFrm_TarSpe n'est pas un sous-formulaire de Frm_FactureDetails.

    Merci d'avance de vos lumières, je suis inculte en VBA !

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Salut,

    Essaie avec cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PVHT=Forms!Frm_FactureEntete!SsFrm_TarSpe.Form!PU_SPE
    Vérifie bien le nom de tous tes objets:
    Frm_FactureEntete
    SsFrm_TarSpe
    PU_SPE


    et donnes nous le message d'erreur

    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 49
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par User Voir le message
    Salut,

    Essaie avec cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PVHT=Forms!Frm_FactureEntete!SsFrm_TarSpe.Form!PU_SPE
    Vérifie bien le nom de tous tes objets:
    Frm_FactureEntete
    SsFrm_TarSpe
    PU_SPE


    et donnes nous le message d'erreur

    A+
    Alors...
    ça marche, mais pas comme il faudrait

    En fait, le problème, c'est que ça renvoie le même tarif pour tous les produits, quel que soit le code article.

    Tous les produits facturés se retrouvent avec le tarif du 1er produit de la liste des tarifs spéciaux, quel que soit le produit facturé.

    ça vient peut-être de la structure de mes tables ?

    Je joins une version simplifiée de ma base, si ça peut aider !

    Merci d'avance

    Catherine

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Je ne peux lire ta base, je suis sous Access 2003 .

    Peux-tu faire une copie d'écran de ton formulaire et nous expliquer le problème...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 49
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par User Voir le message
    Je ne peux lire ta base, je suis sous Access 2003 .

    Peux-tu faire une copie d'écran de ton formulaire et nous expliquer le problème...
    Bonjour,

    J'ai fait une copie de ma base en format 2000 et une copie d'écran.

    La saisie des données de facturation se fait dans le sous-formulaire du bas et les tarifs spéciaux (dans la fenêtre au dessus à droite, en jaune) sont à extraire d'un autre sous-formulaire, indépendant de celui du détails de la facturation, mais lié à l'entête.

    Le souci c'est que la valeur de tarif spécial extraite est le 1ère de la liste, quel que soit le code article saisi !

    Je ne sais pas si je suis claire je me prends tellement la tête avec ça !

    Merci d'avance de votre aide

    Catherine
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut Idée
    Bonjour,

    Il faudrait créer un RecordSet avec les données du ssFormulaire Tarif spéciaux
    pour pouvoir atteindre l'enregistrement correspondant au Code_article du sous formulaire détail facture comme cela on aurait le prix de l'article en question.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 49
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par rjamin Voir le message
    Bonjour,

    Il faudrait créer un RecordSet avec les données du ssFormulaire Tarif spéciaux
    pour pouvoir atteindre l'enregistrement correspondant au Code_article du sous formulaire détail facture comme cela on aurait le prix de l'article en question.
    Alors ça, je ne sais pas faire

    Quelle est la procédure ?

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Salut,

    Tu peux utiliser la méthode proposé par rjamin...

    Mais si tu ne connais pas trop le VBA et DAO je te conseille plutôt la fonction de domaine DLookup

    Ton code deviendrai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub PVHT_Enter()
        If Me.Tarifs_spéciaux = -1 Then
        'Me.PVHT = Forms!Frm_FactureEntete!SsFrm_TarSpe.Form!PU_SPE
        Me.PVHT = Nz(DLookup("PU_SPE", "[Tarifs Speciaux]", "[Code_du_client]='" & Nz(Me.Parent!Code_client, "") & "' and [Code_article]='" & Nz(Me!Code_article, "") & "'"), 0)
            ElseIf Nz(Tarif_base, 0) = 0 Then
            Me.PVHT = Nz(Me.Tarif_livraison_1, 0)
                ElseIf Nz(Tarif_base, 0) = 2 Then
                Me.PVHT = Nz(Me.Tarif_livraison_2, 0)
                    ElseIf Nz(Tarif_base, 0) = 3 Then
                    Me.PVHT = Nz(Me.Tarif_sur_place, 0)
    End If
    End Sub

    Me.PVHT est égal à zéro si il ne trouve pas de code article correspondant...

    J'ai vu ta base: bon courage, à première vue c'est pas évident à mettre en place

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 49
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par User Voir le message
    Salut,

    Tu peux utiliser la méthode proposé par rjamin...

    Mais si tu ne connais pas trop le VBA et DAO je te conseille plutôt la fonction de domaine DLookup

    Ton code deviendrai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub PVHT_Enter()
        If Me.Tarifs_spéciaux = -1 Then
        'Me.PVHT = Forms!Frm_FactureEntete!SsFrm_TarSpe.Form!PU_SPE
        Me.PVHT = Nz(DLookup("PU_SPE", "[Tarifs Speciaux]", "[Code_du_client]='" & Nz(Me.Parent!Code_client, "") & "' and [Code_article]='" & Nz(Me!Code_article, "") & "'"), 0)
            ElseIf Nz(Tarif_base, 0) = 0 Then
            Me.PVHT = Nz(Me.Tarif_livraison_1, 0)
                ElseIf Nz(Tarif_base, 0) = 2 Then
                Me.PVHT = Nz(Me.Tarif_livraison_2, 0)
                    ElseIf Nz(Tarif_base, 0) = 3 Then
                    Me.PVHT = Nz(Me.Tarif_sur_place, 0)
    End If
    End Sub

    Me.PVHT est égal à zéro si il ne trouve pas de code article correspondant...

    J'ai vu ta base: bon courage, à première vue c'est pas évident à mettre en place
    Bonsoir et Merci pour ce code,

    C'est bien mais le fait que Me.PVHT soit égal à zéro pour les tarifs courants me pose problème ; enfin, ça posera problème à mon client !

    C'est vrai que ce n'est pas simple : mon client avait une base Windev et un petit logiciel de compta dont il n'utilisait qu'une partie, je dois remplacer les 2 !
    C'est mon 1er client et je n'avais pas anticipé toutes ces difficultés

    Enfin, j'arrive à m'en sortir, en particulier grâce à ce forum et vous tous, j'en apprends tous les jours.

    Concernant la méthode proposé par rjamin, je crois que j'ai compris comment créer le RecordSet mais j'en fait quoi, une fois créé, je le mets où ?



    D'avance merci,

    Catherine

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Salut,

    Pour mon code tu peux remplacer 0 par null

    Sinon pour le recordSet:

    tu peux regarder ce tuto

    Une fois que tu as crée ton recordSet (RecSet) à partir du sql et de la condition que je t'ai donné, tu vérifies s'il est vide, si non alors tu affectes la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if Not(RecSet.eof) Then
          Me.PVHT = RecSet!PU_SPE   
       end if

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/04/2015, 21h06
  2. [XL-2010] Aller chercher une valeur dans une feuille de nom non connu
    Par escalopepane dans le forum Conception
    Réponses: 2
    Dernier message: 22/01/2014, 17h01
  3. [MooTools] Aller chercher une valeur avec mootools
    Par zenka dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 30/07/2010, 10h57
  4. aller chercher une image dans un formulaire
    Par mike5923 dans le forum Struts 1
    Réponses: 2
    Dernier message: 11/01/2008, 10h43
  5. Réponses: 9
    Dernier message: 11/07/2007, 23h46

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