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 :

Ecrire une fonction de Cumul


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 87
    Points
    87
    Par défaut Ecrire une fonction de Cumul
    Bonjour,

    Je cherche à réaliser une fonction VBA qui calcul la somme d'une ligne d'une plage jusqu'a une certaine Colonne.

    Je pense que l'on peut le faire comme cela :
    SOMME(DECALER(Plage;ligne;0;1;Colonne)

    Mais j'aimerais une fonction VBA qui fasse la même chose en appelant
    CUMUL(Plage,ligne,colonne)

    J'ai essayé le programme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function Cumul(plage As Range, ligne As Integer, colonne As Integer) As Double
     
    Cumul = Application.WorksheetFunction.Sum(plage.Offset(ligne - 1, 0).Range(Cells(1, 1), Cells(1, colonne)))
     
    End Function
    Mais ça ne marche que quant la plage fait référence à une plage de la feuille active et pas quand on a une référence sur une autre feuille (ex feuille2!plage ou [classeur.xls]feuille!plage).

    Comment faire simplement une fonction qui marche avec une plage située sur une autre feuille et/ou classeur ?

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    une simple formule matricielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    =SOMME((COLONNE(1:1)<=$B$3)*(1:1))
    à essayer en mettant el ligne 1 des données et en b3 le nombre de colonnes de cumul souhaité en entrant avec ctrl+majus+entr

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 87
    Points
    87
    Par défaut
    Merci Random,

    Je n'avais pas creusé la voie de la formule matricielle que je ne connais pas encore (je débute dans Excell)

  4. #4
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir
    et tout simplement

    =SOMME(Plage1;Plage2)
    =SOMME(Feuil1!E10:E14;Feuil2!A1:A8)

    Salutations

Discussions similaires

  1. Ecrire une fonction d'accès à un membre
    Par dhoorens dans le forum C++
    Réponses: 3
    Dernier message: 01/01/2007, 19h01
  2. [javascript] Ecrire une fonction "include"
    Par gscorpio dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/10/2006, 10h49
  3. [VB6]Ecrire une fonction dans ma feuille Excel
    Par ToxiK dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2006, 20h04
  4. Réponses: 1
    Dernier message: 07/06/2006, 18h18
  5. Réponses: 15
    Dernier message: 15/12/2005, 14h36

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