Autres VBA - Erreur d'exécution '13'

Elisa47

XLDnaute Nouveau
Bonjour le forum,

Dans un tableau, j'ai un code qui me permet de détecter les doublons et de les supprimer.
Le code fonctionne correctement, mais si je sélectionnne plusieurs cellules et que je supprime les valeurs de ces cellules, j'ai le message suivant :
Erreur d’exécution ‘13’:
Incompatibilité de type

Voici le code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Application.WorksheetFunction.CountIf(Range("b2:f35"), Target) > 1 Then
    If MsgBox("Attention ce joueur est déjà dans la grille." & Chr(10) & "Veux-tu l'effacer ?", vbYesNo + vbQuestion) = vbYes Then
        If vbYes Then
            Target.Value = ""
        Else
            Exit Sub
        End If
    End If
End If

End Sub

Merci pour votre aide
 

Pièces jointes

  • exemple.xlsm
    14.4 KB · Affichages: 1

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Le code fonctionne correctement
Certes, mais au niveau de sa logique il me semble ne pas être bon.


VB:
    If MsgBox("Attention ce joueur est déjà dans la grille." & Chr(10) & "Veux-tu l'effacer ?", vbYesNo + vbQuestion) = vbYes Then
        If vbYes Then
            Target.Value = ""
        Else
            Exit Sub
        End If
    End If

1- Le "Exit Sub" ne sert à rien puisqu'il n'y a aucune instruction ensuite jusqu'à la fin de la macro.

2- Ici on ne teste pas la réponse de l'utilisateur, on teste simplement la valeur de vbYes. Donc quelle que soit la réponse de l'utilisateur, le résultat du test sera toujours le même.

3- Le "Exit Sub" ne sert à rien puisque, comme expliqué au point numéro 2, on ne passera jamais par le "Else".


Une seule ligne devrait suffire :
VB:
    If MsgBox("Attention ce joueur est déjà dans la grille." & Chr(10) & "Veux-tu l'effacer ?", vbYesNo + vbQuestion) = vbYes Then Target.ClearContents
 
Dernière édition:

Statistiques des forums

Discussions
312 207
Messages
2 086 232
Membres
103 161
dernier inscrit
Rogombe bryan