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 d'une colonne variable VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut Somme d'une colonne variable VBA
    Bonjour à tous,

    Je rencontre un petit problème au sein d'une fonction me permettant de faire la somme d'une colonne dont la longueur peut varier.
    En fait, le problème est quand je change une donnée dans la colonne, cela ne change pas le résultat de la somme ...
    Le paramètre de ma fonction est qu'il faut choisir la premier cellule (début de la plage de la somme) et la somme se fait jusqu'à la dernière ligne plaine de celle colonne .

    Si vous pouvez m'aider, je suis preneur

    Merci beaucoup

    Voila ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function credit_line_sum(num_line)
     
    num_column = ActiveCell.Column
    first_line = num_line.Row
    last_line = Cells(Rows.Count, num_column).End(xlUp).Row
    'sum_lines = 0
     
       credit_line_sum = Application.WorksheetFunction.Sum(Range(Cells(first_line, num_column), Cells(last_line, num_column)))
     
    End Function

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Bonjour,

    Ne s'agit-il pas simplement d'un problème sur le paramètre de calculs de ton fichier Excel ?
    Pour le vérifier, écris la somme à la main et regarde si tes valeurs changent. Si ce n'est pas le cas, c'est que tu es en calcul manuel.

    Cordialement,

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ajoute Sinon, étrange fonction

  4. #4
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    Gado2600,

    Quand j'utilise la fonction somme de base de excel, cela fonctionne très bien si je change des valeurs à l'intérieur de la plage.

    Mercatog,
    Quand j'utilise Application.Volatile, la fonction bug en permanence. Je ne peux même pas débogger VBA ^^


    En fait, j'ai remarqué, que ma somme change que quand je modifie la première valeur de la plage de donnée mais dès que je modifie la deuxième valeur, cela n'a aucun impact sur la calcul de la somme ... :/

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    L'aide
    Application.Volatile, méthode

    Cette méthode marque comme volatile une fonction personnalisée. Une fonction volatile doit être recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille de calcul. Une fonction non volatile n'est recalculée qu'en cas de changement des variables d'entrée. Cette méthode est sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par l'utilisateur utilisée pour calculer une cellule de feuille de calcul.
    Donc... voilà ta réponse

    Sinon, comme dit plus haut, si tu explique ce que somme cette fonction par rapport à la cellule dans laquelle elle est écrite et par rapport à la cellule paramètre.

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    Bon avec Application.volatile, ça fonctionne mais il reste un dernier problème, c'est que vu que j'utilise cette fonction plusieurs fois, dès que je change une cellule dans une colonne, ça me met la même somme pour toutes les cellules.

    Dans l'image ci-dessous, la somme correspond à la colonne S mais les colonnes R et T devraient faire les sommes de leurs colonnes et non afficher le résultat de la colonne S

    Nom : sum.gif
Affichages : 3764
Taille : 15,5 Ko

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Rng étant la première cellule à partir de laquelle le total est calculé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function Total(ByVal Rng As Range) As Double
    Dim Db As Long, Fn As Long
     
    Application.Volatile
    With Rng.Worksheet
        Db = Rng.Row
        Fn = .Cells(.Rows.Count, Rng.Column).End(xlUp).Row
        Total = Application.Sum(Rng.Resize(Fn - Db + 1))
    End With
    End Function

  8. #8
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    J'ai trouvé une solution à ce problème en utilisant Range pluôt que cells pour définir le début et la fin de la colonne.

    Mais maintenant, le dernier problème que je rencontre est que dès que je change une valeur dans une autre feuille, cela actualise le fonction avec les valeur de cette feuille ... ce qui pose problème :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function credit_line_sum(num_line)
     
    Application.Volatile
     
    first_line = num_line.Address
     
    credit_line_sum = Application.WorksheetFunction.Sum(Range(first_line, Range(first_line).End(xlDown)))
     
    End Function

  9. #9
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    Merci beaucoup mercatog, cela fonctionne parfaitement

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

Discussions similaires

  1. Sélectionner une colonne variable tableau VBA
    Par Tux1 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/12/2012, 14h43
  2. [XL-2003] VBA - Somme d'une colonne variable
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2010, 17h17
  3. Somme d'une colonne (avec nombre de rangée variable)
    Par Berny77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2008, 23h30
  4. comment calculer la somme d'une colonne d'un dbgrid
    Par kirty dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/07/2006, 20h55
  5. comment modifier le nom d'une colonne via VBA?
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 24/11/2005, 15h36

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