OVH Cloud OVH Cloud

Erreur d'exécution "13"

3 réponses
Avatar
Quaisako
Bonjour le Forum,

'Ce code protège les cellules ayant pour valeur "~".

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim Rg As Range
Set Rg = Intersect(Target, Range("B7:AE" &
Range("B65536").End(xlUp).Row))

'If Not Rg Is Nothing Then
' If Target.Value = 1 Or Target.Value = 0 Then

If Not Rg Is Nothing Then

If Target.Value = "~" Then

Me.Protect
Else
Me.Unprotect

End If
End If

End Sub

Si par inadvertance, un user sélectionne 2 ou + cellules, un message
d'erreur apparait.
Erreur d'exécution "13"

Comment éviter l'apparition de ce message?

Merci d'avance.
Jipé

3 réponses

Avatar
FxM
Bonjour,

Note préalable : ce qui suit n'a pas été testé !

Je suppose que tu souhaites ne pas exécuter la macro en cas de sélection
multiple :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.cells.count > 1 then exit sub


Si tu préfères protéger chacune des cellules répondant au critère :
remplace :
If Target.Value = "~" Then
Me.Protect
Else
Me.Unprotect
End If

par :
for each cel in target
if cel.value = "~" then cel.protect else cel.unprotect
next cel


@+
FxM

Bonjour le Forum,

'Ce code protège les cellules ayant pour valeur "~".

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim Rg As Range
Set Rg = Intersect(Target, Range("B7:AE" &
Range("B65536").End(xlUp).Row))

'If Not Rg Is Nothing Then
' If Target.Value = 1 Or Target.Value = 0 Then

If Not Rg Is Nothing Then

If Target.Value = "~" Then

Me.Protect
Else
Me.Unprotect

End If
End If

End Sub

Si par inadvertance, un user sélectionne 2 ou + cellules, un message
d'erreur apparait.
Erreur d'exécution "13"

Comment éviter l'apparition de ce message?

Merci d'avance.
Jipé




Avatar
Quaisako
Merci FxM.

Je ne sais pas si c'est possible, mais
ce que je souhaite, c'est exécuter la macro même en cas de sélection
multiple,
mais surtout qu'il n'y ai aucun message proposant le débogage.

Jipé

"FxM" a écrit dans le message de news:

Bonjour,

Note préalable : ce qui suit n'a pas été testé !

Je suppose que tu souhaites ne pas exécuter la macro en cas de sélection
multiple :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.cells.count > 1 then exit sub


Si tu préfères protéger chacune des cellules répondant au critère :
remplace :
If Target.Value = "~" Then
Me.Protect
Else
Me.Unprotect
End If

par :
for each cel in target
if cel.value = "~" then cel.protect else cel.unprotect
next cel


@+
FxM

Bonjour le Forum,

'Ce code protège les cellules ayant pour valeur "~".

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim Rg As Range
Set Rg = Intersect(Target, Range("B7:AE" &
Range("B65536").End(xlUp).Row))

'If Not Rg Is Nothing Then
' If Target.Value = 1 Or Target.Value = 0 Then

If Not Rg Is Nothing Then

If Target.Value = "~" Then

Me.Protect
Else
Me.Unprotect

End If
End If

End Sub

Si par inadvertance, un user sélectionne 2 ou + cellules, un message
d'erreur apparait.
Erreur d'exécution "13"

Comment éviter l'apparition de ce message?

Merci d'avance.
Jipé




Avatar
Quaisako
Re à tous,

La ligne d'erreur étant "If Target.Value = "~" Then", j'ai ajouté un "On
Error Resume Next" et un "On Error GoTo 0"

Ca a l'air de fonctionner, mais je ne suis pas sûr des conséquences.
Pouvez-vous me dire si dans cette macro, tout est en ordre ?
Merci.
Jipé

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim Rg As Range
Set Rg = Intersect(Target, Range("B7:AE" &
Range("B65536").End(xlUp).Row))

'If Not Rg Is Nothing Then
' If Target.Value = 1 Or Target.Value = 0 Then

On Error Resume Next

If Not Rg Is Nothing Then

If Target.Value = "~" Then

Me.Protect
Else
Me.Unprotect

On Error GoTo 0

End If
End If

End Sub



"Quaisako" a écrit dans le message de
news:
Merci FxM.

Je ne sais pas si c'est possible, mais
ce que je souhaite, c'est exécuter la macro même en cas de sélection
multiple,
mais surtout qu'il n'y ai aucun message proposant le débogage.

Jipé

"FxM" a écrit dans le message de news:

Bonjour,

Note préalable : ce qui suit n'a pas été testé !

Je suppose que tu souhaites ne pas exécuter la macro en cas de sélection
multiple :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.cells.count > 1 then exit sub


Si tu préfères protéger chacune des cellules répondant au critère :
remplace :
If Target.Value = "~" Then
Me.Protect
Else
Me.Unprotect
End If

par :
for each cel in target
if cel.value = "~" then cel.protect else cel.unprotect
next cel


@+
FxM

Bonjour le Forum,

'Ce code protège les cellules ayant pour valeur "~".

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim Rg As Range
Set Rg = Intersect(Target, Range("B7:AE" &
Range("B65536").End(xlUp).Row))

'If Not Rg Is Nothing Then
' If Target.Value = 1 Or Target.Value = 0 Then

If Not Rg Is Nothing Then

If Target.Value = "~" Then

Me.Protect
Else
Me.Unprotect

End If
End If

End Sub

Si par inadvertance, un user sélectionne 2 ou + cellules, un message
d'erreur apparait.
Erreur d'exécution "13"

Comment éviter l'apparition de ce message?

Merci d'avance.
Jipé