Bonsoir,
Dans un fichier de plusieurs feuilles,
j'ai des noms définis sans référence à une feuille (Définir nom / référence = !M21 par exemple pour ProvAUTRE)

Dans la feuille base j'ai une macro qui utilise les noms définis sur un Worksheet_Change(ByVal Target As Range)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Worksheet_Change(ByVal Target As Range)
 
 ' permet la modification des cellules H11 et i11 pour la provision de fin contrat selon les cellules M19,20 et 21
If Not Application.Intersect(Target, Range("m14:m15")) Is Nothing Then 'ces cellules déterminent la valeur de la cellule M19
  ActiveSheet.Unprotect 'dévérouille la feuille pour modifier les range dessous
    Application.EnableEvents = False 'permet de bloquer les évènements tant que la macro n'est pas finie
      Range("h11").Value = "PROVISION JOUR(S) FIN DE CONTRAT"
      Range("i11").Value = Range("ProvDAYRATE").Value
    Application.EnableEvents = True 'réactive les évènements
Else
     If Not Application.Intersect(Target, Range("ProvAUTRE:SommenonAFFECT")) Is Nothing Then 'modification de M22 ou 23 qui ont la priorité
   ActiveSheet.Unprotect 'dévérouille la feuille pour modifier les range dessous
        Application.EnableEvents = False
         If Range("SommenonAFFECT").Value <> 0 Then
            Range("h11").Value = "MONTANT NON AFFECTé"
            Range("i11").Value = Range("SommenonAFFECT").Value
        Else
            If Range("ProvAUTRE").Value <> 0 Then
                Range("h11").Value = "PROVISION AUTRE FIN DE CONTRAT"
                Range("i11").Value = Range("ProvAUTRE").Value
            Else 'si l'un ou l'autre est remis à 0 alors on revient à la provision classique daily rate
                Range("h11").Value = "PROVISION JOUR(S) FIN DE CONTRAT"
                Range("i11").Value = Range("ProvDAYRATE").Value
            End If
        End If
        Application.EnableEvents = True
   ActiveSheet.Protect 'vérouille la feuille
 End If
End If
end sub
Dans une autre feuille, j'ai une case à option et selon le résultat, je viens changer un des paramètres (Cf. code ci-dessous) sur de la feuille BASE mais j'ai une erreur "méthode Range de l'objet Worksheet a échoué sur la macro précédente ligne 11.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
If Range("i8").Value = 1 Then 'si CDD alors ..
Worksheets("base").Range("e20").Value = "OUI" ' préca = oui par défaut
 
Else
 
Worksheets("base").Range("e20").Value = "NON" ' sinon préca = non par défaut
 
End If
Je comprends a priori pourquoi cela bloque mais y trouver une solutions car avant d'avoir défini les noms pour les Range concernés, j'avais les références des cellules dans les Range et cela fonctionnait.

Merci pour votre retour