Bordure et somme automatique sous condition

Bonjour

Ma préoccupation fait suite à ma précédente fluidement résolue.

En effet, ayant déjà une grande base de données sériées et dont les séries sont séparées les unes des autres par une ligne vide, je ne sais comment me prendre pour chaque série automatiquement :

  • Insérer toutes les bordures ;
  • Faire la somme automatique la colonne E en partant des titres de chaque et où le résultat sera logé dans la dernière cellule de chaque série en faisant abstraction de la valeur préexistante de cette dernière cellule de la colonne E
  • Faire le tri croissant par valeur de la colonne E de chaque série

Dans le fichier exemple BAZE :

Feuil1 : base de données sériées

Feuil2 : résultat attendu après exécution de la macro.

Quelqu’un pourrait m’aider s’il vous plait ?

5baze.xlsx (20.62 Ko)

Salut DD7,

Un double-clic sur la feuille démarre la macro

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow%
'
Cancel = True
Application.ScreenUpdating = False
'
For x = 1 To Range("A" & Rows.Count).End(xlUp).Row + 1
    If Cells(x, 1) = "ID" Then iRow = x
    If Cells(x, 1) = "" Then _
        Cells(x - 1, 5) = WorksheetFunction.Sum(Range("E" & iRow & ":E" & x - 2)): _
        Range("A" & iRow & ":E" & x - 1).Borders.LineStyle = xlContinuous
Next
'
Application.ScreenUpdating = True
'
End Sub
5dd7.xlsm (15.66 Ko)


A+

Cette reponse concise repond parfaitement à mes attentes. Merci beaucoup Curculis57 👏.

Néanmoins comment me passer du double-clique sur la feuille pour lancer la macro ? Parce que je peux faire un double inopiné sans pour autant vouloir lancer la macro

Aussi à la fin, le tri croissant des valeurs de chaque série de la colonne E ne s'exécute pas

Salut DD7,

ah, oui, j'ai zappé le tri...

J'ai créé la macro dans le 'Module 1' : ALT-F8 pour l'exécuter.

Public Sub Bordures_Tri()
'
Dim iRow%
'
Cancel = True
Application.ScreenUpdating = False
'
For x = 1 To Range("A" & Rows.Count).End(xlUp).Row + 1
    If Cells(x, 1) = "ID" Then iRow = x
    If Cells(x, 1) = "" Then _
        Range("A" & iRow + 1 & ":E" & x - 2).Sort key1:=Range("E" & iRow + 1), order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlNo: _
        Range("E" & x - 1).Value = WorksheetFunction.Sum(Range("E" & iRow + 1 & ":E" & x - 2)): _
        Range("A" & iRow & ":E" & x - 1).Borders.LineStyle = xlContinuous
Next
'
Application.ScreenUpdating = True
'
End Sub
6dd7.xlsm (16.20 Ko)


A+

Oui celle-ci repond parfaitement bien aux attentes 👏👍🥇

Merci beaucoup pour votre disponibilité et promptitude.

Rechercher des sujets similaires à "bordure somme automatique condition"