Erreur incompatibilité de type

Rebonsoir,

J'ai bien avancé sur la customisation de mon fichier Excel; ceci dit j'ai une erreur quand j'exécute l'action suivante :

sélection d'une plage de cellule manuellement et suppression de leur contenu => cela dérange mon code vba a priori => "Erreur d'exécution 13, incompatibilité de type".

La plage de cellule que je supprime est effectivement une plage concernée par mes lignes de code...

Voici mon code :

Private Sub Worksheet_Change(ByVal Target As Range)

'On facilite la saisie de l'utilisateur en préremplissant certaines cellules

'Extensions
If Target.Address = "$E$16" And Target.Value = "Non" Then
    [E17] = "NA"
    [E18] = "NA"
End If
If Target.Address = "$E$16" And Target.Value = "Oui" Then
    [E17] = "Oui"
    [E18] = "Non"
End If

'Clés
If Target.Column = 3 And (Target.Row >= 22 And Target.Row <= 50) Then
    If Target.Value = "Clé" Then
        Target.Offset(0, 2) = "NA"
        Target.Offset(0, 3) = "NA"
        Target.Offset(0, 4) = "NA"
        Target.Offset(0, 5) = "NA"
    End If
End If

'Cylindres
If Target.Column = 3 And (Target.Row >= 22 And Target.Row <= 50) Then
    If Target.Value = "Cylindre" Then
        Target.Offset(0, 4) = "Standard (Laiton nickelé satiné)"
        Target.Offset(0, 5) = "NA"
    End If
End If

'Double entrée
If Target.Column = 4 And (Target.Row >= 22 And Target.Row <= 50) Then
    If Target.Value = "Double entrée" Then
        Target.Offset(0, 1) = "31,5"
        Target.Offset(0, 2) = "31,5"
    End If
End If

'Boutons
If Target.Column = 4 And (Target.Row >= 22 And Target.Row <= 50) Then
    If Target.Value = "Bouton" Then Target.Offset(0, 4) = "Standard (forme H)"
End If

'Demi-cylindres
If Target.Column = 4 And (Target.Row >= 22 And Target.Row <= 50) Then
    If Target.Value = "Demi-cylindre" Then
        Target.Offset(0, 1) = "10"
        Target.Offset(0, 2) = "31,5"
    End If
End If

End Sub

Une exécution pas à pas détaillée me mène à la première ligne de code mais pourtant cette ligne ainsi que l'ensemble de mon code fonctionne.

Comment empêcher l’apparition de ce message d'erreur quand je veux reset mes cellules?

Merci d'avance pour votre aide

Vip4rk

Bonsoir,

en début de code vous pouvez essayer de mettre :

If Target.CountLarge > 1 Then Exit Sub

ce qui a pour effet de sortir du code si une sélection multiple est faite

@ bientôt

LouReeD

Vous pourriez également faire ceci :

mettre en commun :

If Target.Column = 3 And (Target.Row >= 22 And Target.Row <= 50) Then

et ensuite imbriquer les test pour connaître la forme

@ bientôt

LouReeD

Merci énormément @LouReeD ça marche nikel!!

Et de plus ton conseil est effectivement approprié et logique haha

Vip4rk

Pour le fun j'ai réduit votre code :

Private Sub Worksheet_Change(ByVal Target As Range)
    ' s'il y a une sélection multiple on quitte
    If Target.CountLarge > 1 Then Exit Sub
    'On facilite la saisie de l'utilisateur en préremplissant certaines cellules
    'Extensions
    If Target.Address = "$E$16" Then
        If Target.Value = "Non" Then
            [E17] = "NA"
            [E18] = "NA"
        ElseIf Target.Value = "Oui" Then
            [E17] = "Oui"
            [E18] = "Non"
        End If
    End If
    If Target.Row >= 22 And Target.Row <= 50 Then
    If Target.Column = 3 Then
        'Clés
        If Target.Value = "Clé" Then Target.Offset(0, 2).Resize(, 4) = "NA"
        'Cylindres
        If Target.Value = "Cylindre" Then
            Target.Offset(0, 4) = "Standard (Laiton nickelé satiné)"
            Target.Offset(0, 5) = "NA"
        End If
    ElseIf Target.Column = 4 Then
        'Double entrée
        If Target.Value = "Double entrée" Then
            Target.Offset(0, 1) = "31,5"
            Target.Offset(0, 2) = "31,5"
        End If
        'Boutons
        If Target.Value = "Bouton" Then Target.Offset(0, 4) = "Standard (forme H)"
        'Demi-cylindres
        If Target.Value = "Demi-cylindre" Then
            Target.Offset(0, 1) = "10"
            Target.Offset(0, 2) = "31,5"
        End If
    End If
End Sub

@ voir si ça marche toujours !

@ bientôt

LouReeD

Salut vip4rk,

Salut LouReed,

décidément, aujourd'hui, je suis toujours prêt après la guerre

Private Sub Worksheet_Change(ByVal Target As Range)
'
'On facilite la saisie de l'utilisateur en préremplissant certaines cellules
'
If Selection.Count > 1 Then Exit Sub
Application.EnableEvents = False
'
'Extensions
If Not Intersect(Target, Range("E16")) Is Nothing Then
    [E17] = IIf(Target = "Oui", "Oui", "NA")
    [E18] = IIf(Target = "Oui", "Non", "NA")
End If
'Clés
If Not Intersect(Target, Range("C22:C50")) Is Nothing Then
    If Target.Value = "Clé" Then Target.Offset(0, 2).Resize(1, 4).Value = "NA"
    If Target.Value = "Cylindre" Then
        Target.Offset(0, 4) = "Standard (Laiton nickelé satiné)"
        Target.Offset(0, 5) = "NA"
    End If
End If
'Double entrée
If Not Intersect(Target, Range("D22:D50")) Is Nothing Then
    If Target.Value = "Double entrée" Then Target.Offset(0, 1).Resize(1, 2).Value = 31.5
    If Target.Value = "Bouton" Then Target.Offset(0, 4) = "Standard (forme H)"
    If Target.Value = "Demi-cylindre" Then
        Target.Offset(0, 1) = "10"
        Target.Offset(0, 2) = "31,5"
    End If
End If
'
Application.EnableEvents = True
'
End Sub

A+

Purée merci les gars je vais utiliser votre code !

Un grand merci!

C'est passionnant le vba quand même

Vip4rk

Bonsoir curulis57 !

je n'avais pas vu la "double entrée" ! et le reste non plus !

@ bientôt

LouReeD

Rechercher des sujets similaires à "erreur incompatibilite type"