VBA erreur d'execution, HELP!

espionne

XLDnaute Nouveau
Bonjour,j'ai réalisé une macro que voici:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range
Set cellule = Application.Intersect(Range("M5:AQ41"), Target)
If cellule Is Nothing Then Exit Sub
Select Case Target.Value
Case "JR"
Target.Interior.ColorIndex = 45
Case "CP"
Target.Interior.ColorIndex = 50
Case Empty
Target.Interior.ColorIndex = 0
Case "RTT"
Target.Interior.ColorIndex = 35
Case "MAL"
Target.Interior.ColorIndex = 6
Case "RECUP"
Target.Interior.ColorIndex = 4
Case "FOR"
Target.Interior.ColorIndex = 12
le probleme c'est que quand je veux incrémenter des cellules avec des valeurs contenues dans macro, ca affiche erreur d'execution 13, incompatibilité de type. Même si cela ne m'empeche pas d'incrémenter ( je ferme le message d'erreur), cela m'enerve. Quelqu'un a t'il la solution ? merci beaucoup par avance
 

Dan

XLDnaute Barbatruc
Re : VBA erreur d'execution, HELP!

Bonsoir,

essaye ceci :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("M5:AQ41"), Target) Is Nothing Then
Select Case Target
Case "JR"
Target.Interior.ColorIndex = 45
Case "CP"
Target.Interior.ColorIndex = 50
Case Empty
Target.Interior.ColorIndex = 0
Case "RTT"
Target.Interior.ColorIndex = 35
Case "MAL"
Target.Interior.ColorIndex = 6
Case "RECUP"
Target.Interior.ColorIndex = 4
Case "FOR"
Target.Interior.ColorIndex = 12
End Select
End If
End Sub
N'oublie pas de respecter les majuscules dans les données que tu vas utiliser.
Amicalement
Dan
 

kjin

XLDnaute Barbatruc
Re : VBA erreur d'execution, HELP!

Bonsoir,
Peut-être comme ça, pour éviter le bug à la recopie incrémentée
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range
Set cellule = Application.Intersect(Range("M5:AQ41"), Target)
If Target.Count < 2 Then
If cellule Is Nothing Then Exit Sub
Select Case Target.Value
Case "JR"
Target.Interior.ColorIndex = 45
Case "CP"
Target.Interior.ColorIndex = 50
Case Empty
Target.Interior.ColorIndex = 0
Case "RTT"
Target.Interior.ColorIndex = 35
Case "MAL"
Target.Interior.ColorIndex = 6
Case "RECUP"
Target.Interior.ColorIndex = 4
Case "FOR"
Target.Interior.ColorIndex = 12
End Select
End If
End Sub
 

Dan

XLDnaute Barbatruc
Re : VBA erreur d'execution, HELP!

re,

Evite d'utiliser le mot Cellule qui correspond à une fonction d'excel.
Si on utilise la proposition de Kjin, la macro peut devenir :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("M5:AQ41"), Target) Is Nothing Then
Select Case Target
Case "JR"
Target.Interior.ColorIndex = 45
Case "CP"
Target.Interior.ColorIndex = 50
Case Empty
Target.Interior.ColorIndex = 0
Case "RTT"
Target.Interior.ColorIndex = 35
Case "MAL"
Target.Interior.ColorIndex = 6
Case "RECUP"
Target.Interior.ColorIndex = 4
Case "FOR"
Target.Interior.ColorIndex = 12
End Select
End If
End Sub
Dan
 

Discussions similaires

Statistiques des forums

Discussions
312 495
Messages
2 088 964
Membres
103 992
dernier inscrit
Christine 974