Bonjour

je cherche à tester la valeur d'une cellule à chaque changement de cette dernière afin de pouvoir formater la cellule en fonction du nombre de caractères. Cependant, quelquefois la valeur peut commencer par zéro et dans ce cas, excel ne lit pas le zéro. J'ai essayé de mettre un format texte mais cela ne fonctionne pas non plus et met le bazar dans le reste du code. Quelqu'un a-t-il une solution à me proposer ?

Par avance, merci.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

Private Sub worksheet_change(ByVal target As Range)

'permet de sortir de la procédure si plus d'une cellule est sélectionnée
'sinon la suite de la macro renvoie un message d'erreur

If target.Count > 1 Then Exit Sub

If Intersect(target, Range("a2:a200")) Is Nothing Then
    Exit Sub
    Else
        'vérification que la cellule est remplie
        If Len(target.Value) = 0 Then
            Exit Sub
            Else
            
            'Vérification que ce n'est que des chiffres
                If Not target.Value Like String(Len(target.Value), "#") Then
                    target.Interior.ColorIndex = 3
                    target.NumberFormat = "General"
                    target.Select
                    MsgBox "Votre code ne doit contenir que des chiffres"
                    Exit Sub
                End If

            'Vérification que le premier caractère est un zéro
'Cette partie du code ne fonctionne pas :-(
            If Left(target.Value, 1) = "0" Then
                If Len(target.Value) = 4 Then
                    target.Interior.ColorIndex = 2
                    target.NumberFormat = "0# ###"
                        Else
                            If Len(target.Value) = 5 Then
                            target.Interior.ColorIndex = 2
                            target.NumberFormat = "0# ## ##"
                            End If
                End If
            
            Else
                'Vérifie qu'il y a au moins 5 caractères
                If Len(target.Value) < 5 Then
                    target.Interior.ColorIndex = 3
                    target.NumberFormat = "General"
                    target.Select
                    MsgBox "Votre code est inférieur à 5 caractères. Merci de vérifier votre saisie"
                End If
                                
                'Vérifie qu'il n'y a pas plus de 6 caractères
                If Len(target.Value) > 6 Then
                    target.Interior.ColorIndex = 3
                    target.NumberFormat = "General"
                    target.Select
                    MsgBox "Votre code est supérieur à 6 caractères. Merci de vérifier votre saisie"
                End If
                
                'Vérifie qu'il y a 6 caractères
                If Len(target.Value) = 6 Then
                    target.Interior.ColorIndex = 2
                    target.NumberFormat = "## ## ##"
                End If
                
                'Vérifie qu'il y a 5 caractères
                If Len(target.Value) = 5 Then
                    target.Interior.ColorIndex = 2
                    target.NumberFormat = "## ###"
                End If
            End If
    End If
End If

End Sub