Bonjour,

le titre est un peu confus alors voilà en image ce que je cherche à faire

Nom : DonnéesANettoyer.png
Affichages : 310
Taille : 41,7 Ko

et voila mon code qui permet de traiter une partie des données seulement

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
29
30
31
32
33
34
35
36
37
38
39
40
 
Sub Blabla()
 
Dim dl, i, j, arrondi As Integer
Dim Pas As Double
 
dl = 30
Pas = 0.5
 
i = 3
j = i + 1
 
'---------Marche très bien pour garder la valeur la plus proche du pas.
 
Do While Cells(i, 1) - Cells(j, 1) < Pas
 
    ' Si des 2 valeurs supérieure au pas la première est plus proche
    ' de la valeur exacte de la première cellule (cells i,1) moins le pas
    'alors exclure cette valeur de la suppression sinon la supprimer et garder la deuxième
    If (Cells(j + 1, 1) + Cells(j, 1)) / 2 < Cells(i, 1) - Pas Then
        Range(Cells(i + 1, 1), Cells(j - 1, 2)).Font.Color = RGB(192, 32, 255) 'coloration des C supprimées
        arrondi = 1 ' marqueur pour déterminer où arrondir
    ElseIf (Cells(j + 1, 1) + Cells(j, 1)) / 2 >= Cells(i, 1) - Pas Then
        Range(Cells(i + 1, 1), Cells(j, 2)).Font.Color = RGB(192, 32, 255) 'coloration des cellules supprimées
       arrondi = 0 ' marqueur pour déterminer où arrondir
    End If
 
 
       j = j + 1
    Loop
'--------------------------------------------
 
'------------------------------------
 
If arrondi = 1 Then
    Cells(j - 1, 1) = Round(Cells(j - 1, 1), 1)
ElseIf arrondi = 0 Then
    Cells(j, 1) = Round(Cells(j, 1), 1)
End If
End Sub
En fait j'aimerais, comme vous l'aurez sans doute compris, relancer la boucle while une fois qu'elle arrive à sa condition de fin, mais je ne sais pas comment faire.
Et peut-être qu'il y a une autre méthode moins compliquée pour arriver à mes fins, mais que je ne connais pas.

Bref si quelqu'un pouvait m'aider à appliquer le même traitement à la suite de mes données, ce serait super !

Merci d'avance pour votre aide,

David