Buggage de ma macro en feuille verouillé

  • Initiateur de la discussion Eric
  • Date de début
E

Eric

Guest
Bonjour à tous,

Je rencontre un pti pb avec une de mes macro lors de la mis en protection de ma feuille de classeur.
Cette macro dont le but est de colorier une série de case(qui ont été débloqué bien sur auparavant) qd le toggle bouton qui la commande est enclenché bug une fois que la feuille est protégé.

Voici le code
Private Sub ToggleButton4_Click()
If ToggleButton4 = True Then
ActiveWorkbook.ActiveSheet.Range('tout4').Interior.ColorIndex = 6
Else
ActiveWorkbook.ActiveSheet.Range('estan4').Interior.ColorIndex = 40
ActiveWorkbook.ActiveSheet.Range('fabr4').Interior.ColorIndex = 15
End If
End Sub

Il m´indique:
Erreur 1004
Impossible d´asigner la propriéte´s color index....


N´y at il pas une solution pour la faire marcher en feuille protégé...

MErci d avance

Eric
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Je crois bien que tu es obligé de déproteger ta feuille avnt d'appliquer ta couleur et de reprotéger ensuite

Cela donnerait à peu près

Private Sub ToggleButton4_Click()
ActiveWorkbook.ActiveSheet.Unprotect
If ToggleButton4 = True Then
ActiveWorkbook.ActiveSheet.Range('tout4').Interior.ColorIndex = 6
Else
ActiveWorkbook.ActiveSheet.Range('estan4').Interior.ColorIndex = 40
ActiveWorkbook.ActiveSheet.Range('fabr4').Interior.ColorIndex = 15
End If
ActiveWorkbook.ActiveSheet.Protect
End Sub

Bon courage
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Buggage de ma macro en feuille verouillé

Bonjour Pascal, Eric, le Forum


Je ne suis pas tout à fait d'accord, bien que je soies pressé, je pense Pascal que tu as oublié la méthode Protect avec l'argument 'UserInterfaceOnly'


Voir mon Post du 29-01-03 00:09
Lien supprimé

Où je reprends un très bon explicatif du 'Grand Chef à Trois Plumes' (Laurent Longre :whistle: )

Sinon une mini démo en fichier joint

NB ne pas oublier que ce genre de déclaration est Volatile, d'où la nécessité d'y faire appel en Workbook_Open (voir post en lien pour explications complémentaires)

Sinon, je vois que tu montes bien en postes Pascal ;), moi en ce moment, je n'ai absolument plus du tout de temps pour mon Forum favori et vous prie de m'en excuser.

Bien à vous tous et toutes
@+Thierry [file name=UserInterfaceOnly.zip size=9084]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/UserInterfaceOnly.zip[/file]
 

Pièces jointes

  • UserInterfaceOnly.zip
    8.9 KB · Affichages: 17
E

Eric

Guest
Merci de votre aide..

Avec la tienne Pascal, je ne rencontre aucun pb

Avec celle de thierry, ca bug toujours

dans ThisWorkbook

Option Explicit
------------
Private Sub Workbook_Open()
Feuille3.Protect UserInterfaceOnly:=True
End Sub

Feuille 3 (Standart)

Option Explicit
-------
Private Sub ToggleButton4_Click()
If ToggleButton4 = True Then
ActiveWorkbook.ActiveSheet.Range('tout4').Interior.ColorIndex = 6
Else
ActiveWorkbook.ActiveSheet.Range('estan4').Interior.ColorIndex = 40
ActiveWorkbook.ActiveSheet.Range('fabr4').Interior.ColorIndex = 15
End If
End Sub




Antoine
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Eric, Antoine, Pascal

Rapidos... Essaies avec une Boucle (car si tu travailles sur plusieurs feuilles 'Feuil3' ne sera forcément pas celle active, on dirait...)


Private Sub Workbook_Open()
Dim WS As WorkSheet

For Each WS in ThisWorkBook
WS.Protect UserInterfaceOnly:=True
Next

End Sub

Je File

Bonne Soirée
@+Thierry
 
A

Antoine

Guest
Salut

J´ai beau reessayé avec la boucle de Thierry ds mon classeur.. Cela ne marche pas..
Par contre qd j´insère ma macro ds le sien .. ce la marche..
Preuve quíl y a un truc que j´ai oublié de faire.
C´est peut etre la présence de plusieurs macros sur une meme feuille qui perturbent un peu l´application
J´ai d autres macro sur cette meme feuille dont une qui ne marche pas en mode verouillage egalement...
C´est une macro qui sert à cacher des colonnes en fonction d une variable..Dim z As Variant

z = Range('H17').Value

If z = 2 Then
Columns('a:an').EntireColumn.Hidden = False
Columns('an:bz').EntireColumn.Hidden = True
ElseIf z = 3 Then
Columns('a:bh').EntireColumn.Hidden = False
Columns('bh:bz').EntireColumn.Hidden = True
ElseIf z = 4 Then

Columns('t:BZ').EntireColumn.Hidden = False
Else
Columns('t:bz').EntireColumn.Hidden = True
End If

Error 1004 IMposible d asigner la propriété HIDDEN de la classe RAnge

Merci pour les tentatives de résolution

Antoine
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Antoine (ou Eric), Pascal, le Forum

Je n'ai pas trop de temps pour assumer le suivi de cette question.

Pour autant que j'ai testé, la méthode Hide est acceptée sur des Feuilles Protégée avec l'Argument 'UserInterfaceOnly:=True'.

Pour autant que je sache, plusieurs macros pourraient fonctionner sur plusieurs feuilles si tu as bien compris le processus. Toutefois certaines Actions ne sont pas permises sur feuille protégée même avec l'Argument 'UserInterfaceOnly:=True'.... Mais donc pas 'Hide' de colonne...

Pour autant que celà fonctionne uniquement (J'insiste sur ce Point) lorsque la feuille est protégée de cette manière par VBA et nom manuellement.

Pour autant également que tu appliques cette Protection par VBA à chaque ouverture du Classeur (car ceci est Volatile)

Sinon relis encore le lien que j'ai mis car j'ai expressément regroupé les explication de Frédérique Sigonneau et Laurent Longre, afin d'éviter cette incompréhension sur cette méthode.

Sinon et bien, c'est que tu as un autre souci, comme par exemple que tu ne travailles pas sur la feuille souhaitée, car dans ta macro, aucune feuille n'est spécifiée...

Si vraiment tu n'y arrives pas, appliques alors la méthode de Pascal, qui, quoique qu'un peu plus lourde, fonctionnera tout aussi bien...

Bon Après Midi
@+Thierry
 
A

Antoine

Guest
Bonjour Thierry

Grâce à tes explications et tes links. j´ai pu comprendre le rôle qu´avait UserINterfaceOnly... Comme dans l´aide de VBA, j´avais rien trouvé je continuais à la verouiller manuellement et c´est ca qui tout bloqué ..
Après avoir lu tes links, tout m´ a paru beaucoup plus clair..

Qu´est ce que je ferai ss ce forum.. C´et vraiment une des meilleures choses que j´ai pu rencontré en naviguant sur le net..

Bravo à toi et toute l´équipe d´experts
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus