Bonjour,

Je souhaite écrire dans une cellule et modifier la couleur de mon texte feuille de deux manières différentes via une même procédure :
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
 
Sub Texte_demande_rd(target As Range, tableau_ind As Variant)
 
    Dim valsaisie As String
    Dim ligne As Integer
    Dim col As Integer
    Dim p1 As Integer
    ligne = target.Row
    col = target.Column
 
    If target = "x" Or target = "X" Then
        If target.Offset(0, -8) Like "1.1.*" Then
            For i = 1 To 29
                If target.Offset(0, -6) = tableau_ind(2, i) Then
                    valsaisie = tableau_ind(4, i) & tableau_ind(3, i)
                    target.Offset(0, -4) = Verif_contenu(target.Offset(0, -4), valsaisie & " ")
                    If InStr(1, target.Offset(0, -4), valsaisie) <> 0 Then target.Offset(0, -4).Characters(InStr(1, target.Offset(0, -4), valsaisie), Len(valsaisie)).Font.Color = RGB(255, 0, 0)
                    Exit For
                End If
            Next i
[...]
Par la suite, je dois faire appelle à cette macro de deux façon différente :
  1. au sein d'une autre procédure (code placé dans un module) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If IsEmpty(Cell) = False Then
            Cell.Offset(0, 5) = "X" 'cochage de la colonne RD
            Call Texte_demande_rd(Cell.Offset(0, 5), tableau)
    End If
  2. lors de cochage de la celulle concernée par l'utilisateur (code placé dans la feuille concernée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal cible As Range)
     
        Dim tabl As Variant
     
        If Not Intersect(Columns("J"), cible) Is Nothing And cible.Count = 1 And cible.Row > 1 Then
            tabl = Construction_parois(f_listes_deroulantes, "Index", 4)
            Call Texte_demande_rd(cible, tabl)
        End If
     
    End Sub


La première solution fonctionne a merveille mais une erreur 1004 me bloque à la ligne 17 lors de l'appel depuis worksheet_change...

L'erreur 1004 persiste si je remplace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
If InStr(1, target.Offset(0, -4), valsaisie) <> 0 Then target.Offset(0, -4).Characters(InStr(1, target.Offset(0, -4), valsaisie), Len(valsaisie)).Font.Color = RGB(255, 0, 0)
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
If InStr(1, target.Offset(0, -4), valsaisie) <> 0 Then Sheets(f_suivi_chantier).Cells(ligne, col - 6).Characters(InStr(1, Cells(ligne, col - 6), valsaisie), Len(valsaisie)).Font.Color = RGB(255, 0, 0)
et mon texte ne se met même plus en rouge...

Merci d'avance pour vos remarques et conseils !