Formule non active quand fichier verrouillé à l'ouverture
- Messages
- 101
- Excel
- 2019 fr
- Inscrit
- 28/05/2016
- Emploi
- Technicien en formation - Formateur
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
ne fonctionne pas. Il faut pour cela déverrouiller l'onglet et reverrouiller pour que ce soit actif.='FORMULAIRE D''ÉVALUATION GGC'!C2
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
- Messages
- 101
- Excel
- 2019 fr
- Inscrit
- 28/05/2016
- Emploi
- Technicien en formation - Formateur
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"
- Messages
- 101
- Excel
- 2019 fr
- Inscrit
- 28/05/2016
- Emploi
- Technicien en formation - Formateur
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