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 :

Somme des inverses [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Somme des inverses
    Bonjour,

    Je cherche à programmer une fonction calculant la somme des valeurs inverses dans une colonne. Lorsqu'une case rencontrée est vide, je souhaite que la fonction ignore cette case.

    J'ai programmé la fonctione de base comme suit, mais j'ai du mal à trouver comment éviter les cases 'vides'. Pouvez vous m'aider ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function suminv(plage As Range) As Double
    Dim case As Range, total As Double
    Application.Volatile
    total = 0
    For Each case In plage
    total = total + (1 / case.Value)
    Next
    suminv = total
    End Function
    Merci par avance

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function SumInv(plage As Range) As Double
    Dim C As Range, Total As Double
        Application.Volatile
        For Each C In plage
            If C <> "" Then Total = Total + (1 / C.Value)
        Next
        SumInv = Total
    End Function
    Cordialement.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut
    Merci !

  4. #4
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 461
    Par défaut
    Bonjour à tous,

    Remplacer dans le code la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C <> "" Then Total = Total + (1 / C.Value)
    par la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C <> "" And C <> 0 Then Total = Total + (1 / C.Value)
    pour éviter aussi les cellules contenant des 0...

    Cordialement

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

Discussions similaires

  1. [Access] Combinatoire : Liste article dont la somme des prix
    Par enibris dans le forum Langage SQL
    Réponses: 14
    Dernier message: 17/03/2006, 10h03
  2. Somme des valeurs de certaines lignes
    Par Tartenpion dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/02/2006, 16h46
  3. somme des champs null
    Par s.rais dans le forum Access
    Réponses: 4
    Dernier message: 09/02/2006, 09h05
  4. Réponses: 2
    Dernier message: 09/01/2006, 16h10
  5. Somme des champs ? existe t il une fonction ...
    Par dark_vidor dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/01/2006, 11h57

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