Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion Elisa47
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
Bonjour TooFatBoy,

Merci beaucoup pour vos remarques. Effectivement, c'est beaucoup mieux ainsi.
Pour écrire ce code je m'étais servi d'une vidéo trouvée sur internet ..., mes connaissances en VBA étant très limitées.
Encore merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
301
Réponses
32
Affichages
1 K
Réponses
2
Affichages
371
Réponses
14
Affichages
337
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…