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 :

création d'une fonction min sur vba


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut création d'une fonction min sur vba
    bonjour j'ai crée une fonction max sur vba qui fonctionne, j'ai donc voulu créer une fonction MIN juste en inversant le comparateur mais cela ne fonctionne pas, pouvez-vous m'aidez à la corriger ? (il s'agit de trouver la note minimale dans une liste). je vous remercie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function notemin(plage As Object) As Double
    Dim parc As Object
    Dim note As Double
    For Each parc In plage
        If parc < note Then
         note = parc
        End If
    Next parc
    notemin = note
    End Function

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser la formule "min" d'excel ?

    Pour ton problème, à la déclaration, la variable note est égal à 0. Difficile de trouver une note inférieur.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    parce que l'on devait ecrire une fonction en cours, pour trouver la note maximale j'avais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function notemax(plage As Object) As Integer
    Dim parc As Object
    Dim note As Double
    For Each parc In plage
        If parc > note Then
         note = parc
        End If
    Next parc
    notemax = note
    End Function
    et cela marchait, je ne comprends pas pourquoi pour la note minimale ça ne fonctionne pas ... pourquoi la variable est-elle égale à 0 ici ?

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    pourquoi la variable est-elle égale à 0 ici ?
    Une variable de type numérique est par défaut à 0 et une variable de type Alpha (String) est une chaine vide.

    Analyse ton code et tu verras que le problème se situe au niveau de la valeur de cette variable au démarrage de la boucle.

    NB: le code est bon, tu y es presque

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    je n'arrive toujours pas à voir mon erreur ...
    je déclare la variable "note" comme un réel pourtant

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 920
    Points : 28 905
    Points
    28 905
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme te l'a dit Jérôme, ta variable note étant au départ égal à zéro, jamais sauf si tu as une valeur négative dans ta plage de cellules nommée Plage, ton test logique ne trouvera une valeur inférieure.
    Donc tu devrais donner comme valeur de départ la valeur de la première cellule de la plage et ensuite tester.
    Tu peux aussi démarrer avec une valeur très haute pour la variable note mais ce n'est pas très orthodoxe.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    je vous remercie beaucoup pour votre aide, je n'avais pas pensé à donner une valeur initiale à la variable !!

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

Discussions similaires

  1. [XL-2003] Appeler une fonction Javascript sur un site depuis VBA
    Par zneidi77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2012, 09h37
  2. [XL-2007] Excel VBA Création d'une fonction
    Par Tisbouch dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/05/2010, 19h22
  3. Erreur sur création d'une fonction
    Par mister3957 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 30/04/2010, 16h10
  4. [VBA][E-07] Création d'une fonction personnelle "IsIncluded"
    Par BME2411 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/12/2008, 10h17
  5. Réponses: 6
    Dernier message: 06/03/2007, 00h06

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