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 :

Macro pour somme dans première cellule vide [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable qualité
    Inscrit en
    Octobre 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Responsable qualité

    Informations forums :
    Inscription : Octobre 2020
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Macro pour somme dans première cellule vide
    Bonjour à tous et merci de prendre le temps de me lire
    je pose ce post aujourd'hui car j'ai besoin d'aide.
    J'ai un classeur Excel comportant une succession de lignes complétées séparées par des lignes vides.
    J'aurais besoin qu'Excel réalise la somme des lignes complétées et rapporte le résultat dans la ligne vierge du dessous pour les colonnes F à K.

    Exemple :

    En colonne F: une succession de lignes comportant des valeurs séparées par une ligne vide
    F1 à F14: comportant des valeurs
    F15 : Vide = Somme de ses valeurs de F1 à F14
    F16 à F29: comportant des valeurs
    F30: Vide = Somme de ses valeurs de F16 à F29 etc...

    et idem jusqu'à la colonne K...

    J'utilise actuellement ce 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
    Dim DL As Integer
    Dim TC As Variant
    Dim TLV() As Integer
    Dim J As Integer
     
    DL = Cells(Application.Rows.Count, 1).End(xlUp).Row
    TC = Range("A1:B" & DL)
    ReDim Preserve TLV(J)
    TLV(J) = -1: J = J + 1
    For i = 1 To UBound(TC, 1)
        If TC(i, 1) = "" Then
            ReDim Preserve TLV(J)
            TLV(J) = i - 1
            J = J + 1
        End If
    Next i
    ReDim Preserve TLV(J)
    TLV(J) = DL
    For J = 1 To UBound(TLV)
    Cells(TLV(J) + 1, 12).Value = "Total"
                    Cells(TLV(J) + 1, 6).Value = Application.WorksheetFunction.Sum(Range(Cells(TLV(J - 1) + 2, 6), Cells(TLV(J), 2))) 'somme F
                    Cells(TLV(J) + 1, 7).Value = Application.WorksheetFunction.Sum(Range(Cells(TLV(J - 1) + 2, 7), Cells(TLV(J), 2))) 'somme F
                    Cells(TLV(J) + 1, 8).Value = Application.WorksheetFunction.Sum(Range(Cells(TLV(J - 1) + 2, 8), Cells(TLV(J), 2))) 'somme H
                    Cells(TLV(J) + 1, 9).Value = Application.WorksheetFunction.Sum(Range(Cells(TLV(J - 1) + 2, 9), Cells(TLV(J), 2))) 'somme I
                    Cells(TLV(J) + 1, 10).Value = Application.WorksheetFunction.Sum(Range(Cells(TLV(J - 1) + 2, 10), Cells(TLV(J), 2))) 'somme J
                    Cells(TLV(J) + 1, 11).Value = Application.WorksheetFunction.Sum(Range(Cells(TLV(J - 1) + 2, 11), Cells(TLV(J), 2))) 'somme K
        Cells(TLV(J) + 1, 12).Resize(1, 2).Font.Bold = True
    Next J
    Malheureusement il fonctionne super bien par la colonne F mais pas pour les suivantes.
    En effet, il réalise, par exemple pour la colonne G, la somme des lignes complétées de la colonne G ajoutée à celle de la colonne F :

    Si on reprend mon exemple de tout à l'heure cela donne :

    G1 à G14: comportant des valeurs
    G15 : Vide = Somme de ses valeurs de F1 à G14
    G16 à G29: comportant des valeurs
    G30: Vide = Somme de ses valeurs de F16 à G29

    Alors que je souhaiterais qu'il ne fasse que la somme des lignes de la colonne G

    Quelqu'un pourrait il me conseiller avant que je finisse chauve

    D'avance un grand merci à tous

    et belle journée

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 952
    Points : 5 180
    Points
    5 180
    Par défaut
    bonjour
    tester ça pour colonne F
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub soustotaux()
    Dim derligne As Long, ligne As Long
    derligne = Columns(6).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    x = 1
    Do While ligne < derligne
    ligne = Columns(6).Find("", , , , xlByColumns, xlNext).Row
    Range("f" & ligne) = Application.WorksheetFunction.Sum(Range("f" & x & ":" & "f" & ligne - 1))
    x = ligne + 1
    Loop
    End Sub

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Responsable qualité
    Inscrit en
    Octobre 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Responsable qualité

    Informations forums :
    Inscription : Octobre 2020
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Merci pour votre retour
    Alors ca fonctionne très bien pour la colonne F mais si je veux exécuter également le même code sur les autres colonnes ça ne marche pas. Je pense que je ne mis prend pas comme il faut.
    Voici ce que je viens d'utiliser pour faire les sous totaux sur les lignes f et g

    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
    Dim derligne As Long, ligne As Long
     
    derligne = Columns(6).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    x = 1
    Do While ligne < derligne
        ligne = Columns(6).Find("", , , , xlByColumns, xlNext).Row
        Range("f" & ligne) = Application.WorksheetFunction.Sum(Range("f" & x & ":" & "f" & ligne - 1))
        x = ligne + 1
    Loop
     
    derligne = Columns(7).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    x = 1
    Do While ligne < derligne
        ligne = Columns(7).Find("", , , , xlByColumns, xlNext).Row
        Range("g" & ligne) = Application.WorksheetFunction.Sum(Range("g" & x & ":" & "g" & ligne - 1))
        x = ligne + 1
    Loop

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 952
    Points : 5 180
    Points
    5 180
    Par défaut
    quelles sont les colonnes svp ?

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 952
    Points : 5 180
    Points
    5 180
    Par défaut
    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
    Sub soustotaux()
    Dim derligne As Long, ligne As Long
     
    derligne = Columns(6).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    x = 1
    Do While ligne < derligne
    ligne = Columns(6).Find("", , , , xlByColumns, xlNext).Row
    Range("f" & ligne) = Application.WorksheetFunction.Sum(Range("f" & x & ":" & "f" & ligne - 1))
    x = ligne + 1
    Loop
    Dim derligne2 As Long, ligne1 As Long
    derligne2 = Columns(11).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    y = 1
    Do While ligne1 < derligne2
    ligne1 = Columns(11).Find("", , , , xlByColumns, xlNext).Row
    Range("k" & ligne1) = Application.WorksheetFunction.Sum(Range("k" & y & ":" & "k" & ligne1 - 1))
    y = ligne1 + 1
    Loop
     
    End Sub

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 952
    Points : 5 180
    Points
    5 180
    Par défaut
    si non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub soustotaux()
    Dim derligne As Long, ligne As Long
    For C = 6 To 11 Step 5
    derligne = Columns(C).Find("*", , , , xlByColumns, xlPrevious).Row + 1
    x = 1
    Do While ligne < derligne
    ligne = Columns(C).Find("", , , , xlByColumns, xlNext).Row
    Cells(ligne, C) = Application.WorksheetFunction.Sum(Range(Cells(x, C), Cells(ligne - 1, C)))
    x = ligne + 1
    Loop
    ligne = 0
    x = 0
    Next C
    End Sub

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Responsable qualité
    Inscrit en
    Octobre 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Responsable qualité

    Informations forums :
    Inscription : Octobre 2020
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Cela fonctionne

    Merci infiniment pour votre aide et votre patience

    Bonne journée à vous

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Responsable qualité
    Inscrit en
    Octobre 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Responsable qualité

    Informations forums :
    Inscription : Octobre 2020
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    La deuxième proposition fonctionne également j'ai juste remplacé le Step 5 par Step 1 pour que cela s'applique sur toutes les colonnes entre de f à k.

    Merci sincèrement.

    PS : pouvez vous m'indiquer comment vous vous êtes formé au langage VBA, j'aimerais vraiment me former dans ce domaine

  9. #9
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 952
    Points : 5 180
    Points
    5 180
    Par défaut
    je n'ai jamais eu de formation ni des études en informatique ...mais j'ai arrivé un jour en décembre 2013 sur ce super et j'ai constaté que c'est un trésor
    depuis je suis ici ...je suis les discussion et qd je trouve des codes importants et qui peuvent me servir un jour je copie dans un répertoire ...ça m'a beaucoup aidé dans mon bolo.... puis j'ai commencé à répondre dans la limite de mes connaissances à des discussions...j'apprends chaque jour des nouveautés grâce au membre de ce forum... et je me sens satisfait chaque fois je participe à aider quelqu'un sans savoir son origine ni le gendre

    je ne suis pas un héro qui raconte son histoire mais si tu veux tu peux

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Responsable qualité
    Inscrit en
    Octobre 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Responsable qualité

    Informations forums :
    Inscription : Octobre 2020
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour BENNASR

    Je suis désolée pour ma réponse tardive, j'ai du m'absenter quelques jours.
    Je suis totalement d'accord avec vous. Un vrai trésor. Le sujet VBA me passionne réellement.
    Autodidacte alors. c'est super, je pense que c'est le plus formateur. . J'essaie aussi à mon niveau mais je ne suis pas très douée.
    En tout cas merci beaucoup pour votre aide et votre bienveillance
    Peut être à bientôt sur d'autres conversations et belle continuation à vous.

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

Discussions similaires

  1. macro pour selectionner la premiere cellule vide de mon tableau
    Par trickzer dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 09/01/2018, 22h38
  2. [XL-2010] copy dans première cellule vide
    Par patapman dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/01/2016, 13h39
  3. [XL-2000] Macro pour somme de cellules colorées
    Par clévic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/06/2013, 23h51
  4. Macro pour coller série de cellules dans liste
    Par Phyvon61 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2009, 20h26
  5. Macro copier coller première cellule vide
    Par jul85 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/02/2008, 18h06

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