Erreur d'exécution "13"

Bonjour,

Mon problème de code VBA est sûrement simple...mais étant novice, je ne comprends pas comment le régler.

Je suis sous Excel 365/Mac

J'ai un code sur la feuille qui me permet d'abréger un texte (exemple : "Congés" devient "C"). J'ai pour cela mis ce code :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("Motif")) Is Nothing Then

Select Case Target

Case "Congés"

Target = "C"

Case "Récup"

Target = "R"

Case "Maladie"

Target = "M"

Case "Prise en charge direct ou défs"

Target = "A"

End Select

End If

End Sub

Mais du coup, ma macro effacer pour vider les cellules avant la saisie me renvoie une erreur d'exécution sur Case"Congés".

Voila la macro :

Sub vidercellule()

'

' vidercellule Macro

'

'

Range("E10:AI11").Select

Selection.ClearContents

End Sub

Je pense que le souci vient du contenu de la cellule qui est du texte...

A votre avis,

Merci de votre aide et de vos retours.

Baptiste

bonjour,

une proposition de correction à tester

Private Sub Worksheet_Change(ByVal Target As Range)
if target.count<>1 then exit sub
If Not Application.Intersect(Target, Range("Motif")) Is Nothing Then
Select Case Target
Case "Congés"
Target = "C"
Case "Récup"
Target = "R"
Case "Maladie"
Target = "M"
Case "Prise en charge direct ou défs"
Target = "A"
End Select
End If

End Sub

Bonjour h2so4 ,

Et merci pour le coup de main. Cela fonctionne.

Le fait de rajouter - if target.count<>1 then exit sub a solutionné le problème. peux tu m'expliquer ?

Merci

bonjour,

Range("E10:AI11").clearcontents

modifie une plage de données. comme il y a une modification (change), l'événement worksheet_change est activé, l'objet target fait référence à toute la plage, donc E10:AI11. parmi ces cellules je suppose qu'il y a également une ou plusieurs cellules qui font partie de ta plage nommée "motif", ce qui provoque l'exécution du select case target, instruction qui se plante dans ses instructions case car target fait référence à une plage de cellules et non à une cellule unique.

en ajoutant l'instruction

If target.count<>1 then exit sub

j'exclus du traitement les cas de plage de plusieurs cellules.

Merci !!!!!

Rechercher des sujets similaires à "erreur execution"