XL 2010 Erreur 91

kadelmalin

XLDnaute Occasionnel
bonjour aux participants dans ce forum,
j'ai créé une petite macro mais il semble y avoir une erreur quelque part; il m'affiche erreur 91. Voulez-vous m'aider s'il vous plait. Je joins un classeur teste. Merci.
 

Pièces jointes

  • TST_Class.xlsm
    18.1 KB · Affichages: 7

vgendron

XLDnaute Barbatruc
Bonjour
essaie plutot ce code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sld As Currency
If Not Intersect(Target, Range("B10:B21")) Is Nothing Then 'si le changement intervient dans la plage B10:B21
    If Target = 300 Then 'si la valeur saisie est 300
        Target.Offset(0, 6) = ActiveSheet.Range("C5").Value 'on met la valeur de C5 à droite de la cellule modifiée - 6 colonnes à droite
    End If
End If

End Sub
 
Dernière édition:

kadelmalin

XLDnaute Occasionnel
Bonjour,
Le ".value" ne donne rien du tout et la solution de la formule est à écarter , la cellule réceptrice est un champ de saisie. La macro que vous m'avez refilée fonctionne bien sauf qu'une autre macro dans un module est en interaction avec cette feuille, quand je l'actionne elle fait réagir cette dernière.
 
C

Compte Supprimé 979

Guest
Bonjour KadelMalin,

Dans le code, précédemment donné par vgendron, une chose importante a été oubliée
il faut arrêter les évènements, sinon ça risque de tourner en boucle et plantage
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Sld As Currency
  If Not Intersect(Target, Range("B10:B21")) Is Nothing Then 'si le changement intervient dans la plage B10:B21
    If Target = 300 Then                         'si la valeur saisie est 300
      Application.EnableEvents = False
      Target.Offset(0, 6) = ActiveSheet.Range("C5").Value 'on met la valeur de C5 à droite de la cellule modifiée - 6 colonnes à droite
      Application.EnableEvents = True
    End If
  End If
End Sub

Sinon, il faut dans ce cas utiliser
Code:
 Application.EnableEvents = False
exécuter le code, puis
Code:
 Application.EnableEvents = True

A+
 
Dernière modification par un modérateur:

kadelmalin

XLDnaute Occasionnel
Bonjour KadelMalin,

Dans le code, précédemment donné par vgendron, une chose importante a été oubliée
il faut arrêter les évènements, sinon ça risque de tourner en boucle et plantage
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Sld As Currency
  If Not Intersect(Target, Range("B10:B21")) Is Nothing Then 'si le changement intervient dans la plage B10:B21
    If Target = 300 Then                         'si la valeur saisie est 300
      Application.EnableEvents = False
      Target.Offset(0, 6) = ActiveSheet.Range("C5").Value 'on met la valeur de C5 à droite de la cellule modifiée - 6 colonnes à droite
      Application.EnableEvents = True
    End If
  End If
End Sub

Sinon, il faut dans ce cas utiliser
Code:
 Application.EnableEvents = False
exécuter le code, puis
Code:
 Application.EnableEvents = True

A+
Bonjour
C'est réglé. J'ai neutralisé dans le module incriminé la commande : Range("C13:C26").ClearContents
s'il y a une possibilité de mettre à zéro cette plage sans recourir à une boucle ce sera parfait . Merci de votre aide.