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 du Club
    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
    Points : 56
    Points
    56
    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 expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    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,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  3. #3
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Ajoute Sinon, étrange fonction
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre du Club
    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
    Points : 56
    Points
    56
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Membre du Club
    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
    Points : 56
    Points
    56
    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 : 3482
Taille : 15,5 Ko

  7. #7
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    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
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Membre du Club
    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
    Points : 56
    Points
    56
    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 du Club
    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
    Points : 56
    Points
    56
    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