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

Macros et VBA Excel Discussion :

Calcul automatique en Vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Calcul automatique en Vba
    Bonjour à tous,

    Je vais essayé d'exposer mon problème le plus clairement possible.
    J'ai un tableau Excel dans lequel les données commencent à être affichées à la ligne 4 (Titres colonnes en ligne 3).
    Dans la colonne I se trouve la somme de plusieurs cellules de la même ligne (somme G+H).
    Voici donc ma question :
    Lorsque dans la celulle de la colonne I où se trouve le résultat est
    - inférieur à 40 alors indiquer "aucun prix"
    - compris entre 40 et 49.99 indiquer "Mention d'Honneur"
    - compris entre 50 et 54.99 indiquer "Grand Prix régional"
    - compris entre 55 et 59.99 indiquer "Premier Prix National"
    - compris entre 60 et 70 indiquer "Grand Prix National"

    De plus à partir de 61 et le plus près de 70 indiquer "Grand Prix d'Or"

    La saisie des données se fait par un UserForm. Lorsque la ligne est complète, le résultat apparait lors du changement de ligne.

    Je pourrai faire cela en formule Excel, mais c'est long et fastidieux.
    Pourriez-vous m'aider à trouver une macro qui pourrait résoudre mon problème.

    Je vous en remercie par avance

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    je pensais simplement résoudre cela via une fonction que tu pourrais intégrer dans tes formules .

    donc juste au cas où là voici:
    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
     
    Function TitrePrix(Resultat As Variant) As String
     
    Select Case Fix(Resultat)
        Case Is < 40
            TitrePrix = "aucun prix"
        Case 40 To 49
            TitrePrix = "Mention d'Honneur"
        Case 50 To 54
            TitrePrix = "Grand Prix Régional"
        Case 55 To 59
            TitrePrix = "Premier Prix National"
        Case 60 To 70
            TitrePrix = "Grand Prix National"
        Case Else
            TitrePrix = "Grand prix d'Or"
    End Select
     
    End Function
    mais j'avoue que je n'ai pas très bien compris la dernière condition....

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour mayekeul,

    Tout d'abord, merci pour ta réponse.
    Quant à la dernière condition de mon problème, le candidat le plus proche de 70 reçoit le prix Or. Il est peu probable que 2 candidats arrivent à la même note.

    J'avez oublié, où dois-je mettre ton code ? Est-ce dans un module ?
    Il y a longtemps que je n'ai pas mis vraiement le nez dans Vba alors j'ai du mal à me remettre en route.
    Encore merci

  4. #4
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    oui tu met cela dans un module

    et sur la cellule tu peux appeler la fonction

    que voici:
    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
     
    Function TitrePrix(Resultat As Double, ResultatsLaureats As Range) As String
    'résultat est la valeur à tester
    'ResultatsLaureats est l'ensemble des résultats à évaluer en vue de connaitre le grand gagnant
     
     
    'résultat de base
    Select Case Fix(Resultat)
        Case Is < 40
            TitrePrix = "aucun prix"
        Case 40 To 49
            TitrePrix = "Mention d'Honneur"
        Case 50 To 54
            TitrePrix = "Grand Prix Régional"
        Case 55 To 59
            TitrePrix = "Premier Prix National"
        Case 60 To 70
            TitrePrix = "Grand Prix National"
    End Select
     
    'est-ce le meilleur résultat?
    'si oui, c'est un gaillard ce lascar!
    If Application.WorksheetFunction.Max(ResultatsLaureats) = Resultat Then TitrePrix = "Grand Prix d'Or"
     
    End Function

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai donc mis ton code dans un module puis ce code dans ma feuille de calcul
    mais un message d'erreur apparait "Argument non facultatif", et là je suis perdu. J'ai appuyé sur l'aide mais je n'ai rien compris.
    Qu'est-ce qui cloche ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    TitrePrix
    End Sub

  6. #6
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour, ce que tu dois faire, c'est ceci

    mettre mon code dasn un module vierge
    (ça je pense que tu as fait)

    ensuite dans une cellule tu peux indiquer a titre d'exemple la formule suivante


    à noter que les deux parametres sont requis

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

Discussions similaires

  1. [AC-2007] Calculer automatiquement avec un code VBA
    Par yankd dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/09/2012, 09h23
  2. [Toutes versions] executer code vba apres le calcul automatique des fomules
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/12/2011, 17h42
  3. [VBA-E] Calcul Automatique Date
    Par nono le golfeur dans le forum Excel
    Réponses: 7
    Dernier message: 03/04/2007, 16h38
  4. [VBA Excel] Calcul automatique
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/02/2007, 09h16
  5. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53

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