Bonjour,

Grâce à l'assistance de Theze, j'ai réussit à faire évoluer sérieusement mes codes.
En m'appuyant sur l'un de ses codes je vais chercher la valeur de la cellule voisine (à droite) pour coloriser un textbox. Mon code fonctionne, enfin presque, car il remplit tous les textbox avec la couleur attendue, mais il bug sur la première ligne "If Sheets SMEP" lorsqu'il finit de parcourir la plage concernée. Je pense que je n'ai pas donné l'instruction
" Stop si c'est la dernière case (Textbox)", sachant que cette dernière case peut évoluer selon les cas.
Pouvez vous m'indiquez l'amélioration nécessaire. Je joint le code afin que ce soit plus facile à comprendre.

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
Sub SMPCouleurs()
 
    Dim Ctrl As Control
 
    'parcour la collection des contrôles de la Form
    For Each Ctrl In TMa2.MultiPage1.Pages("SMPNom").Controls
 
        If TypeName(Ctrl) = "TextBox" Then
 
            With Ctrl
 
    'cas de la lettre F
        If Sheets("SMP").Range(Right(.Name, Len(.Name) - InStrRev(.Name, "F") + 1)).Offset(0, 1).Value = "V" Then
            Ctrl.BackColor = vbGreen
                End If
        If Sheets("SMP").Range(Right(.Name, Len(.Name) - InStrRev(.Name, "F") + 1)).Offset(0, 1).Value = "R" Then
            Ctrl.BackColor = vbRed
                End If
        If Sheets("SMP").Range(Right(.Name, Len(.Name) - InStrRev(.Name, "F") + 1)).Offset(0, 1).Value = "M" Then
            Ctrl.BackColor = vbMagenta
                End If
        If Sheets("SMP").Range(Right(.Name, Len(.Name) - InStrRev(.Name, "F") + 1)).Offset(0, 1).Value = "J" Then
            Ctrl.BackColor = vbYellow
                End If
 
            End With
 
                 End If
        Next
 
End Sub
Merci de votre aide

Thierry