Formule non active quand fichier verrouillé à l'ouverture

Bonjour à tous, c'est encore moi

Je suis tannant je sais mais j'apprends tellement alors je pose mes questions

J'achève mon projet tranquillement pas vite…

Mon formulaire d'évaluation doit être disponible pour les gérants, mais bien évidemment verrouillé.

Différentes macro et formules dans ce document, qui comporte 2 onglets de travail visibles, et 1 onglet de données (pour les menu déroulant) masqué.

Mon problème porte sur une copie de cellules d'un onglet vers une autre cellule d'un autre onglet.

Fait étrange, quand le fichier est ouvert en étant verrouillé, la formule de copie du genre

='FORMULAIRE D''ÉVALUATION GGC'!C2

ne fonctionne pas. Il faut pour cela déverrouiller l'onglet et reverrouiller pour que ce soit actif.

Mais si le fichier est ouvert en étant déverrouillé (ce qu'on ne veut pas évidemment), ça fonctionne.

Pouvez-vous m'aider?

Voici le fichier :

(mot de passe : ren123)

Voici le code de l'onglet où se trouve la cellule à copier (les gérants peuvent saisir de l'information)

Private Sub ComboBox3_Change()
Range("C7").Value = ComboBox3.Value
End Sub
Private Sub ComboBox1_Change()
Range("C2").Value = ComboBox1.Value
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim i, ii
If Target.Columns.Count = 1 Then
i = Target.Row
ii = Target.Value
Set Notes = Range("E15:I38") ' plage où les notes existent
    CouleurVerte = RGB(198, 224, 180)
    CouleurBlanche = vbWhite
    If Not Application.Intersect(Notes, Target) Is Nothing Then
        Cancel = True
        ActiveSheet.Protect Password:="ren123", UserInterfaceOnly:=True
        With Target
            If .Interior.Color = CouleurBlanche Then
                Range("E" & i & ":I" & i).Interior.Color = CouleurBlanche
                .Interior.Color = CouleurVerte
                Range("J" & i).Formula = "= " & ii & "*" & " D" & i & " /5"
            Else
                .Interior.Color = CouleurBlanche
                Range("J" & i).Value = ""
            End If
        End With

    End If
    End If
End Sub

Voici le code de l'onglet où l'information est copiée depuis le premier onglet

Sub nom_magasin_identique()
' nom_magasin_identique Macro
    Range("C6:D6").Select
    ActiveCell.FormulaR1C1 = "='FORMULAIRE D''ÉVALUATION'!R[1]C"
    Range("C7:D7").Select
End Sub
Sub nom_employé_identique()
' nom_employé_identique Macro
    Range("C5:D5").Select
    ActiveCell.FormulaR1C1 = "='FORMULAIRE D''ÉVALUATION'!R[1]C"
    Range("C6:D6").Select
End Sub
Sub date_poste_identique()
' date_poste_identique Macro
    Range("B3:C3").Select
    ActiveCell.FormulaR1C1 = "='FORMULAIRE D''ÉVALUATION'!RC[1]"
    Range("B4").Select
End Sub
Sub titre_poste_identique()
' titre_poste_identique Macro
    Range("B2:C2").Select
    ActiveCell.FormulaR1C1 = "='FORMULAIRE D''ÉVALUATION'!RC[1]"
    Range("B3:C3").Select
End Sub
Sub date_eval_identique()
' date_eval_identique Macro
    Range("C7:D7").Select
    ActiveCell.FormulaR1C1 = "='FORMULAIRE D''ÉVALUATION'!R[1]C"
    Range("A8:I8").Select
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim i, ii
If Target.Columns.Count = 1 Then
i = Target.Row
ii = Target.Value
Set Notes = Range("E11:I19") ' plage où les notes existent
    CouleurVerte = RGB(198, 224, 180)
    CouleurBlanche = vbWhite
    If Not Application.Intersect(Notes, Target) Is Nothing Then
        Cancel = True
        ActiveSheet.Protect Password:="ren123", UserInterfaceOnly:=True
        With Target
            If .Interior.Color = CouleurBlanche Then
                Range("E" & i & ":I" & i).Interior.Color = CouleurBlanche
                .Interior.Color = CouleurVerte
                Range("J" & i).Formula = Target.Value
            Else
                .Interior.Color = CouleurBlanche
                Range("J" & i).Value = ""
            End If
        End With

    End If
    End If
End Sub

Merci d'avance et bonne journée

Laurent

Bonjour,

Essaie ceci ...

Dans "DieseArbeitsmappe" ... ajoute ce code ...

Private Sub Workbook_Open()
Dim Sh As Worksheet

   For Each Sh In ThisWorkbook.Worksheets
      Sh.Protect Password:="ren123", UserInterfaceOnly:=True
   Next Sh
End Sub

Ensuite, désactive ou supprime la ligne ActiveSheet.Protect Password:="ren123", UserInterfaceOnly:=True dans Worksheet_BeforeDoubleClick de chacune des feuilles.

Enregistre le fichier, ferme-le, rouvre à nouveau ... teste ...

ric

Bonjour,

Et bien ça a l'air de bin fonctionner avec mon propre essai

C'est super!

Merci beaucoup.

J'aimerais cependant comprendre pourquoi cela ne fonctionnait pas? car c'est quasiment le même code…

Bonjour,

La différence :

- ton code de départ > les feuilles étaient protégées dès le début contre le code, les formules et la manipulation des usagers = erreur.

- ce nouveau code > les feuilles ne sont pas protégées contre le code* et les formules, mais elles sont protégées contre les manipulations des usagers = succès.

* Il peut arriver que certaines actions du code soient bloquées quand même. Mais, la plupart du temps, c'est bon.

ric

* Il peut arriver que certaines actions du code soient bloquées quand même. Mais, la plupart du temps, c'est bon.

ric

Bonjour,

Dans le Cas ou comme le dit ric certaines actions restent bloquées alors reste la solution de

déprotection puis reprotection.

en modifiant ta ligne : ActiveSheet.UnProtect Password:="ren123"

et en ajoutant juste avant le end Sub : ActiveSheet.Protect Password:="ren123"

Bonjour,

La différence :

- ton code de départ > les feuilles étaient protégées dès le début contre le code, les formules et la manipulation des usagers = erreur.

- ce nouveau code > les feuilles ne sont pas protégées contre le code* et les formules, mais elles sont protégées contre les manipulations des usagers = succès.

* Il peut arriver que certaines actions du code soient bloquées quand même. Mais, la plupart du temps, c'est bon.

ric

Merci , c'est effectivement comma ça que je le comprenais mais c,est très bien expliqué alors c'est bon je comprends mieux.

en modifiant ta ligne : ActiveSheet.UnProtect Password:="ren123"

et en ajoutant juste avant le end Sub : ActiveSheet.Protect Password:="ren123"

Je vais le tenter aussi pour essayer cette solution, merci

Rechercher des sujets similaires à "formule active quand fichier verrouille ouverture"