Sub Bouton3_QuandClic()
Dim c As Range, c1 As Range
Dim plage As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim present As Boolean
Dim ligne As Integer
Dim graphique As Chart
Set ws1 = Sheets('feuil1')
Set ws2 = Sheets('feuil2')
ws2.ChartObjects.Delete 'supprime le graphique en page 2
'efface les colonnes A,B et C de la feuille 2
ws2.Columns('A:C').ClearContents
'pour chaque cellule(c)de C11 à Cn de la feuille de 1
For Each c In ws1.Range('c11:c' & ws1.Range('c65536').End(xlUp).Row)
'pour chaque cellule(c1)de A1 à An de la feuille de 2
For Each c1 In ws2.Range('a1:a' & ws2.Range('a65536').End(xlUp).Row)
'si les deux cellules sont egales (meme nom de fournisseur)
If c1 = c Then
'variable present devient true
present = True
'on stocke le numéro de ligne
ligne = c1.Row
End If
Next c1
'si present = vrai donc si le meme fournisseur à été trouvé
If present = True Then
'additionne en colonne 2 de la feuille 2, avec la colonne F de la feuille 1
ws2.Cells(ligne, 2) = ws2.Cells(ligne, 2) + c.Offset(0, 3)
'additionne en colonne 3 de la feuille 2, avec la colonne G de la feuille 1
ws2.Cells(ligne, 3) = ws2.Cells(ligne, 3) + c.Offset(0, 4)
'remet la variable present à false pour une nouvelle ligne
present = False
'sinon
Else
'cherche la première ligne vide de la colonne A
derligne = ws2.Range('a65536').End(xlUp).Row + 1
'et renvoi les données
ws2.Cells(derligne, 1) = c
ws2.Cells(derligne, 2) = c.Offset(0, 3)
ws2.Cells(derligne, 3) = c.Offset(0, 4)
End If
Next c
'ajout des entetes
ws2.Range('a1') = 'fournisseurs'
ws2.Range('b1') = '-'
ws2.Range('c1') = '+'
Set plage = ws2.Range('a1').CurrentRegion
'trie des données
plage.Sort Key1:=ws2.Range('B2'), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'creation du graphique
Set graphique = Charts.Add
With graphique
.ChartType = xlColumnStacked
.SetSourceData Source:=plage, PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=ws2.Name
End With
End Sub