1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Process
    Inscrit en
    mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur Process
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 6
    Points : 5
    Points
    5

    Par défaut code vba :Recherche le valeur super et iinfér dans une table d'une valeur avec decimal saisie ds un formulaire

    Bonjour,

    Tout d’abords, je tiens a vous dire que je suis novice en ce qui concerne la programmation sur vba access.

    Je sollicite votre aide afin de trouver une solution a mon problème.

    Voila :

    j'ai crée une base de donnée avec 2 tables T_Jaugeage_BAC_Huile et T_Table54A

    J'ai crée un formulaire Form1 ou je dois introduire une valeur en décimal (exemple = 13,4) sur une textbox Temp_BAC_aprés_EXP avec comme source la table T_Jaugeage_BAC_Huile

    J'ai crée un code vba pour rechercher la valeur supérieure et inférieure de 13,4 qui se trouve dans la table T_Table54A. Exemple :
    Si 13,4 alors il doit trouver 12 et 14.
    Si 12,8 alors il doit trouver 12 et 14
    Si 16.8 alors il doit trouver 16 et 18 .... etc

    Le problème est que lorsque je saisi par exemple 18.8 dans la textbox Temp_BAC_aprés_EXP au niveau du Form1. J’obtiens le message : erreur de syntaxe (virgule) dans l'expression ...
    Alors que lorsque je saisi une valeur sans décimale (exemple 17) la valeur retournée est 0 au lieu de 18.

    La base de données est en pièce jointe

    Je vous remercie d'avance pour votre aide.
    Salutations
    CalcProd.rar

  2. #2
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 942
    Points : 3 306
    Points
    3 306

    Par défaut

    Bonsoir,
    il faut utiliser le séparateur de décimales déclaré dans les paramètres locaux (panneau de configuration Windows)

  3. #3
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 942
    Points : 3 306
    Points
    3 306

    Par défaut

    Je pense qu'il faut tout simplement convertir la saisie en numérique, essaie ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Command3_Click()
     
    VCF = DLookup("VCF", "T_Table54A", "[Temp]= " & Val(Me.Temp_BAC_aprés_EXP) & " AND [Den15]= " & Me.Den15_EXP_H)
     
    D1T1 = DLookup("Temp", "T_Table54A", " [Temp] <= " & Val(Me.Temp_BAC_aprés_EXP))
    D1T2 = DLookup("Temp", "T_Table54A", " [Temp] >= " & Val(Me.Temp_BAC_aprés_EXP))
     
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Process
    Inscrit en
    mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur Process
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 6
    Points : 5
    Points
    5

    Par défaut

    Merci pour vos repense.

    En ce qui concerne le décimale c'est OK.

    Reste maintenant comment rechercher les valeurs inférieurs et supérieure de la saisi sur le form1-> textbox=Temp_BAC_aprés_EXP.

    Exemple 13.4 -> doit retourner 12 comme valeur inférieure et 14 comme valeur superieure à partir du champ (Temp) de la table T_Table_54A

    merci d'avance

  5. #5
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 942
    Points : 3 306
    Points
    3 306

    Par défaut

    Reste maintenant comment rechercher les valeurs inférieurs et supérieure de la saisi sur le form1-> textbox=Temp_BAC_aprés_EXP.
    Cà, c'est plus compliqué ... sur le moment, je ne vois pas comment

  6. #6
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 942
    Points : 3 306
    Points
    3 306

    Par défaut

    Bonsoir,
    essaie ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Command3_Click()
    Dim sngTemp As Single
    ' conversion de la saisie
    sngTemp = CSng(Me.Temp_BAC_aprés_EXP)
     
    VCF = DLookup("VCF", "T_Table54A", "[Temp]= " & Replace(CStr(Me.Temp_BAC_aprés_EXP), ",", ".") & " AND [Den15]= " & Me.Den15_EXP_H)
     
    ' Arrondi au nombre inférieur
    D1T1 = DMax("Temp", "T_Table54A", " [Temp] <= " & Fix(sngTemp))
    ' Arrondi au nombre supérieur
    D1T2 = DLookup("Temp", "T_Table54A", " [Temp] >= " & Abs(Int(-sngTemp)))
     
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Process
    Inscrit en
    mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur Process
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 6
    Points : 5
    Points
    5

    Par défaut Merci infiniment

    Monsieur tee_grandbois, votre code marche à merveille.

    Je vous remercie infiniment pour votre support.

    Salutations
    Baghdadi Abdelilah

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Code VBA recherche dépendant de 2 dates dans tableau
    Par shadown08 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/10/2016, 13h12
  2. Réponses: 4
    Dernier message: 21/05/2013, 20h59
  3. [XL-2003] code vba recherche
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 13/12/2012, 11h16
  4. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 18h11
  5. Réponses: 2
    Dernier message: 24/04/2006, 11h27

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