Bonjour à tous,

J'ai un classeur contenant des dates, dont certaines étaient inconnus au moment de la saisie initial et se trouve sous le format "(XX/02/2017)" par exemple, avec deux "X" à la place du jour. J'ai donc écris une macro permettant de supprimer les parenthèses, et de changer les "X" en jours (XX ou 0X changé en 01, 1X changé en 15 et 2X changé en 30) :

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
For i = 2 To 10561
    test = ThisWorkbook.Sheets("PLA-PLANNING").Cells(i, 8)
    x = InStr(1, test, "(", 1)
    y = InStr(1, test, ")", 1)
 
    If Left(test, 3) = "(1X" Then
        test = Replace(test, "1X", "15")
    End If
    If Left(test, 3) = "(2X" Then
        test = Replace(test, "2X", "30")
    End If
    If Left(test, 3) = "(0X" Then
        test = Replace(test, "0X", "01")
    End If
    If Left(test, 3) = "(XX" Then
        test = Replace(test, "XX", "01")
    End If
 
    If x <> 0 Then
        test = Replace(test, "(", "")
        test = Replace(test, ")", "")
    End If
 
    ThisWorkbook.Sheets("PLA-PLANNING").Cells(i, 8) = test
 
Next i
Aucun beug, elle fonctionne comme je veux à une exception près : lors de la réécriture dans la cellule, si le jour a été remplacé par "01", il est interverti avec le mois. Concrètement, une date à la base "(XX/02/2017)" ou "(0X/02/2017)" sera remplacé par 02/01/2017, au lieu de 01/02/2017 sans que je comprenne pourquoi ... Savez vous comment éviter ça ?

Merci d'avance pour votre aide !