Worksheet_change, en automatique sur feuille protégée, comment?

anderson

XLDnaute Nouveau
Bonjour,

J'ai un classeur Excel protéger par mot de passe contenant deux feuilles.
Une des feuilles est protégée complètement et l'autre partiellement.
J'aimerais qu'à chaque fois qu'on change le contenu de certaines cellules,
soit manuellement ou en automatique, la date d'aujourd'hui s'inscrit sur la feuille
où la modification a était réalisée.
Comment puis- je le mettre en œuvre?

Pour la feuille protégée partiellement, je me suis servis de cette macro:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("B2:F3")) Is Nothing Then [J8] = Format(Date, "Le dd mmmm yyyy")
End Sub
qui fonctionne, trouvez sur ce forum.

Mais cette macro ne fonctionne pas sur la première feuille du classeur ou les cellules sont protégées complètement et que la modification des cellules se fait automatiquement à partir des cellules de la deuxième feuille du classeur.

Oui, avec ce classeur fourni je pourrais écrire dans la cellule i4; =two!j8 mais ce n'est qu'un exemple que je fourni en fichier .zip

Merci d'avance... :)
 

Pièces jointes

  • worksheet.zip
    5.7 KB · Affichages: 38

dixit

XLDnaute Impliqué
Re : Worksheet_change, en automatique sur feuille protégée, comment?

bonsoir,
Monsieur de Lapalisse dirait : déprotéger, modifier la cellule puis protéger.
sheets("nom de la feuille").unprotect
les modifications .... puis
sheets("nom de la feuille").protect
si un mot de passe est prévu, il faut le passer en argument
bye
 

anderson

XLDnaute Nouveau
Re : Worksheet_change, en automatique sur feuille protégée, comment?

lu dixit,
Je suis novice en macro, c'est du copier/coller en ce moment et beaucoup de temps en test.
J'ai pris le même classeur, sans aucune protection, même macro (celle sur mon premier "post") sur les deux feuilles.
La formule fonctionne sur la feuille ou la modification de la cellule se fait manuellement (clic souris et clavier).
Alors que la macro ne fonctionne pas sur la feuille (one) ou la modification de la cellule est crée en automatiquement par une ou plusieurs cellules, de la feuille (two), de ce classeur. :)
 

ledzepfred

XLDnaute Impliqué
Re : Worksheet_change, en automatique sur feuille protégée, comment?

anderson, dixit,

une procédure worksheet_change si elle est placée dans l'éditeur vba en feuil1 ne fonctionnera qu'en feuille 1, pour qu'elle s'applique à une autre feuille il faut la placer également dans la feuille de l'editeur vba correspondante.

Si on veut qu'une seule procédure gère tous les feuillets d'un classeur, il faut mettre le code dans Thisworkbook

Par contre la remarque de dixit concernant la déprotection protection est juste donc tu ne pourras t'en passer dans le code de la feuille 2

A+
 

alex67800

XLDnaute Impliqué
Re : Worksheet_change, en automatique sur feuille protégée, comment?

Bonsoir Anderson, dixit,

Il est normal que ton worksheets_change ne focntionne pas, car en fait tes cellules B2:F2 comportent des formules qui renvoient les valeurs de la feuille "two". Il ni a donc aucun évènement change (même si les valeurs chanegnt) la formule reste inchangée "elle"!

Par contre tu peux modifier le code change de ta feuille "two", pour intéragir sur la feuille "one" comme ceci:

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False

If Not Intersect(Target, Range("B2:F3")) Is Nothing Then
[J8] = Format(Date, "Le dd mmmm yyyy")
With Worksheets("one")
.Unprotect [COLOR="Red"]Password:="toto"[/COLOR]
.[I4] = Format(Date, "Le dd mmmm yyyy")
.Protect [COLOR="red"]Password:="toto"[/COLOR]
End With
Application.ScreenUpdating = True
End If
End Sub
Remplace ton code dans worsheet_change de ta feuille "two" par celle-ci et regrade si cela te convient.

La partie en rouge est facultative ou modifiable. Cela met un mot de passe à ta protection.

A te lire!


Edit: Oupsss Bonsoir ledzepfred
 
Dernière édition:

anderson

XLDnaute Nouveau
Re : Worksheet_change, en automatique sur feuille protégée, comment?

Bonjour,
Un grand merci à alex67800, ledzepfred etdixit ! :D
@alex67800, ta macro fonctionne sur ce classeur de test, sauf le "end if".
Dés que je test sur le projet de départ, je rajouterai "résolu"...
Dites je post à 19h et résolu à 23h :eek:, bravo et encore merci :)
Désolé, pour la réponse tardive, je suis au boulot!
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 688
Membres
105 509
dernier inscrit
hamidvba