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 :

Fonction minimum différent de zéro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 39
    Points
    39
    Par défaut Fonction minimum différent de zéro
    Bonjour

    comment créer une fonction pour afficher le minimum d'une serie sans tenir compte des valeurs nulles?

    cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function minimumquinze(st1 As Range, st2 As Range, st3 As Range, st4 As Range, st5 As Range, st6 As Range, st7 As Range, st8 As Range, st9 As Range, st10 As Range, st11 As Range, st12 As Range, st13 As Range, st14 As Range, st15 As Range) As Variant
    Application.Volatile
     
    minimum = Application.WorksheetFunction.Min(st1, st2, st3, st4, st5, st6, st7, st8, st9, st10, st11, st12, st13, st14, st15)
     
    minimumquinze = minimum
     
    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 : 51
    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,

    Une solution avec les formules et sans VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(PETITE.VALEUR(A1:A6;1)=0;PETITE.VALEUR(A1:A6;2);PETITE.VALEUR(A1:A6;1))

  3. #3
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Merci à Jérôme Fontaine pour l'idée de départ. Cela m'évitera de m'ennuyer les prochaines fois avec une formule matricielle.
    Un problème avec cette première formule s'il y a plusieurs valeurs nulles dans la plage.
    On peut rectifier le tir avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = PETITE.VALEUR ( plage ; NB.SI ( plage ; 0 ) + 1 )
    Bonnes fêtes
    Cordialement
    Claude

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 39
    Points
    39
    Par défaut
    Bonsoir,

    en fait mes valeurs ne se trouvent pas dans une plage de cellules, mais dans des cellules non adjacentes. j'ai essayé en remplaçant la plage par les cellules, cela ne semble pas fonctionner ...

    y a-t-il une solution ?

    merci

  5. #5
    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 934
    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 934
    Points : 28 930
    Points
    28 930
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Hélas, la fonction NB.SI ne peut pas travailler avec des cellules non-contiguës alors que PETITE.VALEUR le peut.
    Il faudra trouver une autre solution avec d'autres formules. C'est dommage cette combinaison était séduisante.

  6. #6
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Points : 1 925
    Points
    1 925
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par gaston64 Voir le message
    Bonsoir,

    en fait mes valeurs ne se trouvent pas dans une plage de cellules, mais dans des cellules non adjacentes. j'ai essayé en remplaçant la plage par les cellules, cela ne semble pas fonctionner ...

    y a-t-il une solution ?

    merci
    Si je ne me trompes une plage de cellules non adjacentes dans une formule ne traitera que le premier élément de cette plage.
    Je ne me rappelles plus beaucoup des manipulations avec la fonction Index sous forme référentielle. ça peut être une alternative je suppose.
    Pour une plage de cellules contigües de n ligne et n colonne la fonction Si imbriquée dans Min devrait suffire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =min(si(ou(maplage<>"";maplage<>0);maplage;""))
    entrée sous forme matricielle.

    (je devrais ouvrir mon excel pour voir ce qui peut se faire avec une plage non adjacente.)
    Cordialement.

    Bonsoir.
    Mais bien sûr que Petite.Valeur le peut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =PETITE.VALEUR((B3:B8;B11:B16;C18:C31;B32:C55);1)
    Pour la fonction Index imbriqué dans Min c'est un peu compliqué. C'est possible d'obtenir un résultat. comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Min(INDEX((B4:B9;B12:B17;C19:C32;B33:C56);;1;{1.2.3.4}))
    Là il faut savoir cibler ce qu'on veut dans les arguments références et ref n°.
    Quand les références sont de dimensions différentes c'est un peu délicat. Il faudra user de quelques acrobaties.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 39
    Points
    39
    Par défaut
    merci pour vos réponses

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

Discussions similaires

  1. Fonction types différents
    Par Elstak dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/06/2008, 11h48
  2. VstI, les fonctions minimums
    Par NiamorH dans le forum Bibliothèques
    Réponses: 8
    Dernier message: 08/01/2008, 19h09
  3. Réponses: 4
    Dernier message: 07/01/2008, 12h19
  4. Réponses: 18
    Dernier message: 06/10/2007, 23h03
  5. Réponses: 4
    Dernier message: 07/03/2006, 15h54

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