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 :

Calcul sommes en automatique en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut Calcul sommes en automatique en VBA
    Bonjour a tous,

    Pouvez-vous svp me dire comment simplifier le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub MacrT()
     
    Sheets("Feuil1").Select
     
    'Initialisation de la boucle
    Dim i As Integer
     
    i = 1
     
    'Boucle la colonne 1
    Do While (Cells(1, i).Value <> "")
        FonctCalSom (i)
        i = i + 2
    Loop
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Sub FonctCalSom(ByVal col As Integer)
     
    'Initialisation de la boucle
        Dim i As Integer
        i = 2
     
        'Boucle sur la liste de cellule
        Do While (Cells(i, 1).Value <> "")
     
     
                If Cells(i, 1).Value <> "" Then
     
     
                Set MaPlage = Range("b3:b6")
                Maformule = "=sum(" & MaPlage.AddressLocal() & ")"
                Cells(2, 2).Formula = Maformule
     
                Set MaPlage = Range("c3:c6")
                Maformule = "=sum(" & MaPlage.AddressLocal() & ")"
                Cells(2, 3).Formula = Maformule
     
     
    Else
                Cells(i, 2).Value = ""
     
                End If
            i = i + 1
        Loop
     
    End Sub
    L'objectif c'est que la col3 soit remplie automatiquement comme les deux colonnes col1 et col2 et que "E2" reste vide si pas de valeurs sous les lignes de lign2 à lign5.

    Je ne souhaite pas modifier a chaque nouvelle colonne mettre le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set MaPlage = Range("d3:d6")
    Maformule = "=sum(" & MaPlage.AddressLocal() & ")"
    Cells(2, 4).Formula = Maformule
    Merci d'avance pour votre aide:confused:
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Es-tu obligé de faire une formule plutôt que mettre le résultat directement ?

    Si tu n'es pas obligé alors oui ton code peut être beaucoup simplifié

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut
    Bonjour Igloobel,

    Avant merci pour ta réponse rapide
    non je ne suis pas obligé d'avoir la formule dans le résultat les valeurs me suffisent.
    mais je suis prôneur pour la solution avec la formule comme ça je pourrai adapté le code pour d'autres formules si besoin

    Merci pour ton aide.
    A+

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Bizarre ton code, tu boucles x fois et tout ça pour sommer B3:B6 et C3:C6 ? Tu demande l'argument Col dans ta fonction mais tu ne l'utilise pas ?
    Ta macro peut alors se résumer à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub MacrT()
     
        With Sheets("Feuil1")
     
            .Cells(2, 2).Value = Application.Sum(.Range("b3:b6"))
            .Cells(2, 3).Value = Application.Sum(.Range("b3:b6"))
     
        End With
     
    End Sub
    Hervé.

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Bon, super THEZE, ton codes est concis, top, je

    sinon moins concis mais peut-être plus proche de tes connaissances actuelles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Macro_Test1()
    'Déclaration des variables
    Dim Nom_feuil As String
    Dim i As Long
    Dim Coln As Long
    Dim Lign As Long
    Dim Cumul As Double
     
    'initialisation des variables
    Coln = 2
    Cumul = 0
    Nom_feuil = "Feuil1"
     
    'Programmation
    For Lign = 3 To ThisWorkbook.Worksheets(Nom_feuil).UsedRange.Rows.Count
        Cumul = Cumul + Cells(Lign, col).Value
    Next
    Cells(2, 2).Value = Cumul
    End Sub
    tu dis
    ... mais je suis prôneur pour la solution avec la formule comme ça je pourrai adapté le code pour d'autres formules si besoin ...
    Je te déconseille de mettre des formules par code VBA c'est gourmand en temps d'éxécution et fait grossir le classeur surtout qu'il est pas difficile de boucler sur les colonnes en plus des lignes

    A+

Discussions similaires

  1. VBA Calcul somme sur une autre feuil
    Par gibba88 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/02/2014, 14h13
  2. Calcul automatique en Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 24/07/2010, 09h00
  3. [XL-2007] Calcul Somme en VBA
    Par IronBibs dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/11/2009, 15h30
  4. [VBA-E] Calcul de formule automatique
    Par ashurai dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/05/2006, 16h43
  5. Calcul/Somme XML / XSL , comment faire ?
    Par Superpoisson dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/09/2005, 12h28

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