Oui mais je veux qu'il ne crée qu'une seule fois une nouvelle feuille. Et par contre qu'il crée une nouvelle ligne pour chaque nouvelle valeur.
Par exemple si j'ai :
A B C D
1 1 2 1
3 1 3 5
4 0 3 1
0 0 3 3
alors je dois additionner 1 + 5 et copier 6 dans une cellule, puis 1 + 3 et copier 4 dans une autre cellule (car on passe de 1 à 0 dans B)
Avec les différentes aides et comentaire j'ai pour l'instant le code suivant:
Si tu as encore de l'aide à m'accorder!! En tout cas merci beaucoup!Code:Option Explicit Sub macro2() Dim ligne As Integer Dim total As Double Dim feuille As Worksheet Dim Flag_Ok As Boolean Dim NL As Integer Dim NB As Integer Dim x As Integer Dim ST As Double NL = 1 NB = 1 ligne = 2 total = Worksheets("feuil1").Range("D" & ligne).Value 'les données démarrent à partir de la seconde ligne : PROBLEME 1 'feuille selection existe ?? For x = 1 To Worksheets.Count If Worksheets(x).Name = "selection" Then Flag_Ok = True Exit For End If Next x 'ajout feuille si existe pas If Not Flag_Ok Then Set feuille = Sheets.Add feuille.Name = "selection" End If With Worksheets("feuil1") .Range("B2:D" & .Range("B" & Rows.Count).End(xlUp).Row).Sort Key1:=.Range("B2") 'tri zone par Colonne B: PROBLEME 2 Do While .Cells(ligne, 2).Value <> "" 'données à comparées en colonne 2 If .Cells(ligne, 2).Value = .Cells(ligne + 1, 2) Then total = total + .Cells(ligne + 1, 4).Value NB = NB + 1 Else 'je mets les résultats dans un autre onglet If NB > 1 Then 'x cellules colonnes 2 egales ST = total + .Cells(ligne + 1, 4) Else 'une seule cellule ST = .Cells(ligne, 4) End If Worksheets("selection" ).Cells(NL, 1).Value = ST NL = NL + 1 'incremente ligne feuille resultat total = 0 'initialisation Somme: PROBLEME 3 End If ligne = ligne + 1 'incremente ligne feuille donnees Loop End With End Sub
-----