VBA Excel : incompatibilité de type

Résolu/Fermé
tbeghain - 19 janv. 2011 à 15:24
tbeghain Messages postés 58 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 22 février 2021 - 20 janv. 2011 à 08:26
Bonjour,

Je voulais pouvoir affecter des couleurs à une cellule en fonction du contenu de la cellule.
En regardant sur Internet, j'ai eu un bout de code qui fonctionne très bien sauf lorsque je tente de copier ou de supprimer une ligne ou une colonne . le message est :
erreur d'exécution 13 ' Incompatibilité de type'

Le bout de code est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Pas d'info" Then
Target.Interior.ColorIndex = 35
End If
If Target.Value = "En attente" Then
Target.Interior.ColorIndex = 34
End If
If Target.Value = "En cours" Then
Target.Interior.ColorIndex = 36
End If
If Target.Value = "Ne fonctionne pas" Then
Target.Interior.ColorIndex = 3
End If
If Target.Value = "Annulé" Then
Target.Interior.ColorIndex = 40
End If
If Target.Value = "Terminé" Then
Target.Interior.ColorIndex = 4
End If
End Sub

Est-ce qu'il manque quelque chose ?
Merci pour vos réponses
A voir également:

2 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
19 janv. 2011 à 20:11
Bonsoir,
Le problème vient du fait que lorsque tu supprime une ligne, tu as plusieurs cellules de sélectionnées d'où la difficulté de lire la valeur de la cellule. Tu peux vérifier qu'il n'y a qu'une cellule de sélectionnée avant d'effectuer tes opérations :
If Target.Count = 1 Then
If Target.Value = "Pas d'info" Then
...
End If
End If


@+
0
tbeghain Messages postés 58 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 22 février 2021 3
20 janv. 2011 à 08:26
Bonjour,
Le problème est résolu, sur les conseils d'un autre internaute, j'ai modifié le code
de la façon suivante, et ça fonctionne très bien. merci en tout cas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target Is Nothing And Target.Cells.Count = 1 Then
Select Case Target.Value
Case "Pas d'info"
Target.Interior.ColorIndex = 35
Case "En attente"
Target.Interior.ColorIndex = 34
Case "En cours"
Target.Interior.ColorIndex = 36
Case "Ne fonctionne pas"
Target.Interior.ColorIndex = 3
Case "Annulé"
Target.Interior.ColorIndex = 40
Case "Terminé"
Target.Interior.ColorIndex = 4
End Select
End If
End Sub
0