Sub Macro1()
Dim r As Range 'déclare la variable r (Recherche)
Dim dest As Range 'déclare la variable dest (DESTination)
Dim ld As Integer 'déclare la variable ld (Ligne de Départ)
Dim lf As Integer 'déclare la variable lf (Ligne de Fin)
Dim x As Integer 'déclare la variable x (incrément)
'définit la variable r (recherche dans la colonne B de l'onglet "tableau" le mot "Somme", à partir de B1, en partie)
Set r = Sheets("tableau").Columns(2).Find("Somme", Sheets("tableau").Range("B1"), xlValues, xlPart)
'définit la cellule de destination dest
Set dest = Sheets("graph").Range("B2")
'supprime les anciennes valeurs dans l'onglet "graph"
Range(dest, dest.Offset(3, 1)).ClearContents
ld = r.Row 'définit la ligne de départ
lf = Sheets("tableau").Range("C65536").End(xlUp).Row - 1 'définit la ligne de fin
For x = ld To lf 'boucle sur les cellules comprises entre la ligne de départ et la ligne de fin
'condition : si la cellule en colonne C contient une valeur
If Cells(x, 3).Value <> "" Then
Range(Cells(x, 2), Cells(x, 3)).Copy dest 'copie les deux cellules en B et C et les colle dans dest
Set dest = dest.Offset(1, 0) 'redéfinit dest (une ligne en dessous)
End If 'fin de la condition
Next x 'prochaine cellule de la boucle
With Sheets("graph") 'prend en compte l'onglet "graph"
.Activate 'active l'onglet
'tri par ordre croissant en fonction de la colonne C
.Range("B2:C5").Sort Key1:=Sheets("graph").Range("C2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With 'fin de la prise en compte de l'onglet "graph"
End Sub