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 lignes d'un tableau [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 24
    Points
    24
    Par défaut Somme des lignes d'un tableau
    Bonjour à tous,
    j'ai face à moi un problème pas bien compliqué, pourtant je ne m'en sors pas.
    Je vous l'expose:
    je dispose d'un tableau, simple mais volumineux (environ 10k lignes, 30 colonnes), dans lequel je souhaite simplement sommer les valeurs par ligne et placer le résultat en queue de cette ligne.
    De par le nombres des données j'ai abandonné différents tests, puisque j'aimerais une macro qui tourne rapidement.
    J'aimerais donc savoir si vous avez quelque chose susceptible de m'intéresser.

    Le dernier code que j'ai essayé est celui ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DerniereligneR = Feuilreçu.Cells(Rows.Count, "A").End(xlUp).Row
    DerniereCol = Feuilreçu.Cells(4, Columns.Count).End(xlToLeft).Column
     
    For I = 5 To DerniereligneR
        Set rng = Range(Feuilreçu.Cells(I, "D"), _
        Feuilreçu.Cells(I, DerniereCol).End(xlUp))
     
        dblSum = Application.WorksheetFunction.Sum(rng)
        rng.Offset(I, rng.Columns.Count - 1) _
        .Resize(1, 1).Value = dblSum
    Next I
     
    (avec dblSum as Double et rng as Range)
    j'ai essayé de l'adapter à mon problème, mais je ne comprends pas les résultats obtenus, donc je ne comprends pas mon erreur

    Je vous remercie par avance du temps que vous voudrez bien me consacrer,
    bonne fin de journée

    (je tiens à préciser qu'il s'agit d'une fonction qui s'intègre dans un programme assez vaste, donc s'il vous plait parlons seulement de code VBA)

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 105
    Points
    105
    Par défaut
    Je pense que ca peut faire l'affaire. J'ai pas teste donc ca reste a voir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim cmpt as Long
     
    DerniereligneR = Feuilreçu.Cells(Rows.Count, "A").End(xlUp).Row
    DerniereCol = Feuilreçu.Cells(4, Columns.Count).End(xlToLeft).Column
     
    For ligne = 1 To DerniereligneR
      For colonne = 1 To DerniereCol
         If colonne = DernierCol Then
            Cells(ligne,colonne).Value = cmpt
            cmpt = 0
        Else cmpt = cmpt + Cells(ligne,colonne)
      Next colonne
    Next ligne

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    Pas bête du tout,
    je te remercie!!

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Une autre possibilité afin d'éviter une double boucle ce qui devrait accélérer un peu l'exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DerniereligneR = Feuilreçu.Cells(Rows.Count, 1).End(xlUp).Row
    DerniereCol = Feuilreçu.Cells(4, Columns.Count).End(xlToLeft).Column
     
    For i = 5 To DerniereligneR
        Set Rng = Feuilreçu.Range(Feuilreçu.Cells(i, 4), Feuilreçu.Cells(i, DerniereCol))
        Feuilreçu.Cells(i, DerniereCol + 1) = Application.WorksheetFunction.Sum(Rng)
    Next i
    Potzo, attention le résultat de ta variable cmpt va écraser la valeur de la dernière colonne

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

Discussions similaires

  1. Somme récapitulative des lignes dans un tableau croisé
    Par andre94200 dans le forum Cognos
    Réponses: 1
    Dernier message: 06/03/2013, 08h48
  2. Somme des lignes dans tableau CROISE DYNAMIQUE
    Par maeva13 dans le forum QlikView
    Réponses: 7
    Dernier message: 24/10/2011, 17h22
  3. Somme des lignes dans un tableau croisé dynamique
    Par lyonnaisdu26 dans le forum QlikView
    Réponses: 0
    Dernier message: 24/10/2011, 09h20
  4. Cacher des lignes d'un tableau
    Par frechy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/07/2005, 12h05
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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