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 :

Code VBA pour trouver la valeur max


Sujet :

VBA Access

  1. #1
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut Code VBA pour trouver la valeur max
    Bonjour,

    J'ai un formulaire avec des contrôles dépendants.
    Je voudrais faire un calcul pour affecter une valeur à un autre contrôle dépendant de manière à ce que ça soit automatiquement inséré dans la table.

    Mon problème est que je bloque pour trouver la fonction VBA pour trouver la valeur maximale.

    Je sens aussi que je ne prend pas le chemin le plus direct et trouve mon code bien lourd pour pas grand chose...

    Voici mon code:

    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
    Private Sub cmd_calcul_Click()
    
    Dim isol_jour As Double
    Dim isol_nuit As Double
    Dim isol_soir As Double
    Dim isol As Double
    
    If Me.niveau_jour_1.Value > 70 Or Me.niveau_nuit_1.Value > 65 Or Me.niveau_soir_1.Value > 68 Then
    
    isol_jour= Me.niveau_jour_1.Value - 40
    isol_nuit = Me.niveau_nuit._1Value - 35
    isol_soir = Me.niveau_jour_1.Value - 40
    
    isol = max(isol_jour, isol_soir, isol_nuit) 
    
    Me.isol_1.Value = isol
    End If
    
    End Sub
    Bien sûr, il ne connait pas la fonction MAX. J'ai essayé Dmax, mais ne sais pas comment l'utiliser avec les variables.

    Question bonus:
    je fais le calcul pour les niveau_XXX_1, mais je devrait le faire aussi pour niveau_XXX_2 à niveau_XXX_12. Si quelqu'un a une astuce.

    Merci d'avance pour vos contrib !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 103
    Par défaut
    Bonjour

    Bien sûr, il ne connait pas la fonction MAX.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isol = max(isol_jour, isol_soir, isol_nuit)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if isol_jour>isol_soir then isol=isol_jour else isol=isol_soir 
    if isol_nuit>isol then isol = isol_nuit
    Question bonus:
    je fais le calcul pour les niveau_XXX_1, mais je devrait le faire aussi pour niveau_XXX_2 à niveau_XXX_12. Si quelqu'un a une astuce.
    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
     
    Private Sub cmd_calcul_Click()
     
    Dim isol_jour As Double
    Dim isol_nuit As Double
    Dim isol_soir As Double
    Dim isol As Double
     
    If Me.niveau_jour_1.Value > 70 Or Me.niveau_nuit_1.Value > 65 Or Me.niveau_soir_1.Value > 68 Then
     
    isol_jour= Me.niveau_jour_1.Value - 40
    isol_nuit = Me.niveau_nuit._1Value - 35
    isol_soir = Me.niveau_jour_1.Value - 40
     
    isol = mmax(isol_jour, isol_soir, isol_nuit) 
     
    Me.isol_1.Value = isol
    End If
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Function MMax(Valeur1, valeur2, valeur3)
     
    If Valeur1 > valeur2 Then MMax = Valeur1 Else MMax = valeur2
    If valeur3 > MMax Then MMax = valeur3
     
    End Function
    ou bien

    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
     
    Private Sub cmd_calcul_Click()
     
    Dim isol_jour As Double
    Dim isol_nuit As Double
    Dim isol_soir As Double
    Dim isol As Double
     
    For F=1 to 12
     
    If Me.controls("niveau_jour_" & F).Value > 70 Or Me.controls("niveau_nuit_" & f).Value > 65 Or Me.controls("niveau_soir_" & f).Value > 68 Then
     
    isol_jour= Me.controls("niveau_jour_" & f).Value - 40
    isol_nuit = Me.controls("niveau_nuit._" & f).Value - 35
    isol_soir = Me.controls("niveau_jour_" & f).Value - 40
     
    If isol_jour> isol_nuit Then isol= isol_jour Else isol= isol_nuit 
    If isol_soir > isolThen isol= isol_soir 
     
    Me.controls("isol_" & f).Value = isol
     
    next
     
    End If
     
    End Sub

    NON TESTÉ
    Alors ?
    Cdlt.)

  3. #3
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    Ca m'a l'air pas mal tout ça !
    Je vais essayer.

    Merci.

  4. #4
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 30
    Par défaut
    C'est parfait tout ça.

    J'ai un autre problème maintenant.

    J'utilisais une CommandBox pour lancer la procédure, et tout allait bien.

    Maintenant, je voudrais que ça s'initialise au chargement du formulaire (FormLoad), mais j'ai un message:

    Impossible d'attribuer une valeur à cet objet


    Le débogueur me renvoit à la ligne:
    Me.isol_1.Value = isol
    Si tu a une idée.
    @ bientôt

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 103
    Par défaut
    Bonjour,

    Il existe une différence substantielle entre Form_Load(), sur chargement et Form_Open(Cancel As Integer), sur ouverture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Form_Open(Cancel As Integer)
     
    Me.isol_1.Value = isol
     
    End Sub

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 43
    Par défaut
    Salut,
    Quand on ouvre un form tout est Vide ou à Zéro. C'est normal que le système ne peut pas attribuer une valeur.
    Il faut EXECUTER le code d'attribution et non affecter une valeur.

Discussions similaires

  1. Code VBA pour filtrer des valeurs dans un tcd
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/09/2013, 10h53
  2. trouver code vba pour excel
    Par dianbobo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/05/2010, 16h29
  3. Réponses: 2
    Dernier message: 14/10/2009, 08h57
  4. Réponses: 13
    Dernier message: 11/04/2009, 19h03
  5. [VBA-E]Methode pour trouver une valeur qui apparait plusieur fois
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/05/2006, 13h11

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