[Résolu] Erreur d'execution 13 Incompatibilité de type

Lebonetletruand

XLDnaute Occasionnel
Bonsoir,

La macro suivante empèche, après avoir informé l'opérateur, la saisie de certains caractères dans une colonne. Objectif de la macro : Les valeurs saisies dans cette colonne, serviront ensuite à générer le nom des feuilles dans un nouveau classeur (et certains caractères ne sont pas autorisés pour nommer une feuille). La macro fonctionne. Alors que fais-je ici...
Mon problème est le suivant :
Lorsque je sélectionne deux cellules ou plus (en même temps) dans cette colonne, et que je j'appuie sur la touche "supprimer", le message d'erreur en intitulé s'affiche. Il ne s'affiche pas si je n'ai sélectionné qu'une seule cellule pour la même opération (à savoir "supprimer").
Le problème est que je ne serai pas utilisateur de cette macro, et ce message risque d'ennuyer ou de "faire peur" à l'utilisateur.

Pourriez vous m'apporter une solution ou une piste. Merci par avance.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Set isect = Application.Intersect(Target, Range("B4:C63"))

If Not isect Is Nothing Then
If InStr(1, Target, ":") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
Else
If InStr(1, Target, "/") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")

Else
If InStr(1, Target, "\") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")

Else
If InStr(1, Target, "?") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")

Else
If InStr(1, Target, "*") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")

Else
If InStr(1, Target, "[") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")

Else
If InStr(1, Target, "]") Then
MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")

End If
End If
End If
End If
End If
End If
End If
End If


End Sub
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Erreur d'execution 13 Incompatibilité de type

bonsoir

un on error peut il faire la demande

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Set isect = Application.Intersect(Target, Range("B4:C63"))
On Error GoTo fin:
    If Not isect Is Nothing Then
        If InStr(1, Target, ":") Then
            MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
            ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
        Else
            If InStr(1, Target, "/") Then
                MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
                ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
            Else
                If InStr(1, Target, "\") Then
                    MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
                    ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
                Else
                    If InStr(1, Target, "?") Then
                        MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
                        ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
                    Else
                        If InStr(1, Target, "*") Then
                            MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
                            ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
                        Else
                            If InStr(1, Target, "[") Then
                                MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
                                ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
                            Else
                                If InStr(1, Target, "]") Then
                                    MsgBox "La saisie des caractères   :  \  /  ?  *  [  ] n'est pas permise dans cette colonne"
                                    ActiveCell(0, 1) = InputBox("Veuillez modifier le libellé du nom de l'adhérent")
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
Exit Sub
fin:
MsgBox "Vous ne pouvez pas supprimer plusieurs cellules à la fois"
End Sub
 

Lebonetletruand

XLDnaute Occasionnel
Re : Erreur d'execution 13 Incompatibilité de type

Excellente réponse James007. Sourire

Gilbert, j'ai essayé également ton code pour pouvoir te répondre mais il ne fonctionne pas chez moi (peut être incompatibilité de version Excel).

Merci à vous deux. Mon problème est résolu.
 

Discussions similaires

Réponses
6
Affichages
190
Réponses
21
Affichages
962

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260