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 variable vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    autre
    Inscrit en
    Mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 2
    Par défaut Somme variable vba
    Bonjour,

    Sur mon fichier excel, à chaque fois que la valeur de la colonne C est différente de celle qui la précède, une ligne est insérée.
    Sur la ligne insérée, en colonne D, je souhaite sommer la colonne D de toutes les cellules ayant la même valeur en C.?
    C'est la première fois que je travailles avec VBA donc je suis un peu perdue sur cette partie.

    Pour l'instant j'ai ce qui suit :

    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
    Sub Insérer_Lignes()
     
    Dim Lg As Long, i As Long
        Lg = Range("A65536").End(xlUp).Row
        Application.CutCopyMode = False
            For i = Lg To 2 Step -1
                If Range("c" & i - 1) <> Range("c" & i) Then
                    Range(Range("c" & i), Range("c" & i + 0)).EntireRow.Insert
                    Range(Range("c" & i), Range("c" & i + 0)).EntireRow.Interior.Color = RGB(225, 225, 225)
                    'Sur case D du row inséré, sommer les valeurs de D du range sus dit
            Next i
        Rows("2:2").Select
        Selection.RowHeight = 12
        Rows("1:1").Select
        Selection.RowHeight = 80
     
    End Sub
    Si quelqu'un pouvait m'aider. ca serait super Sachant que je ne suis pas douée en informatique.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Voici
    Pièce jointe 593318

    Le code
    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
    32
    33
    34
    35
    36
    37
    38
    39
    Sub Insérer_Lignes()
        Dim Lg As Long, i As Long, DerLig_Total As Range
        Application.ScreenUpdating = False
        Lg = Range("A" & Rows.Count).End(xlUp).Row
        Set DerLig_Total = Columns("C").Find("Total", lookat:=xlWhole)
        If Not DerLig_Total Is Nothing Then
            MsgBox "Les totaux ont déjà été traités"
            Exit Sub
        End If
        Cells(Lg + 1, "C") = "Total"
        For i = Lg To 2 Step -1
            If Range("c" & i - 1) <> Range("c" & i) Then
                Rows(i).EntireRow.Insert
                Range(Cells(i, "A"), Cells(i, "F")).Interior.Color = RGB(225, 225, 225)
                Set DerLig_Total = Columns("C").Find("Total", lookat:=xlWhole)
                If Not DerLig_Total Is Nothing And DerLig_Total.Row > i Then
                    Range(Cells(i, "D"), Cells(i, "F")).FormulaR1C1 = "=SUM(R" & i + 1 & "C:R" & DerLig_Total.Row - 1 & "C)"
                    Cells(i, "C") = "Total"
                    With Range(Cells(i, "A"), Cells(i, "F")).Font
                        .Bold = True
                        .Size = 20
                    End With
                    Rows(i).RowHeight = 42.75
                End If
            End If
        Next i
     
        Range("C" & Rows.Count).End(xlUp).ClearContents
        Set DerLig_Total = Nothing
    End Sub
     
    Sub Supprimer_Totaux()
        Dim DerLig As Long, i As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        For i = DerLig To 2 Step -1
            If Cells(i, "C") = "Total" Then Rows(i).Delete
        Next i
    End Sub
    Cdlt

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    autre
    Inscrit en
    Mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 2
    Par défaut
    Merci beaucoup Arturo.
    J'ai réussi à l'adapter parfaitement à mon fichier final.

Discussions similaires

  1. [Toutes versions] VBA : Somme à variable en fonction de la date du jour
    Par Le Bon Ben Ter dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/01/2018, 09h46
  2. [XL-2010] Somme d'une colonne variable VBA
    Par Blaiz58 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/06/2014, 12h57
  3. [VBA et SQL] Requête SQL utilisant une variable VBA
    Par Altrensa dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 06/07/2007, 10h23
  4. envoyer le contenu de variables vba vers une feuille excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h58
  5. Valeur par defaut a partir d'une variable vba ?
    Par Alpha31 dans le forum Access
    Réponses: 2
    Dernier message: 06/06/2006, 16h00

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