Protections dans une macro

Bonjour le Forum,

Hier, grâce au aide de U. Milité , que je remercie encore, j'ai pu réglé un problème de macro concernant la couleur de certains cadres.

Afin de complète cet exercice, j'aurai de nouveau besoin de vos lumières, je ne suis pas encore calé en Vba.

Reprenant ce dossier, j'aurai besoin que celui-ci Déprotège toutes les feuilles avant le lancement de la macro Color et que celle-ci se termine par une protection de toutes les feuilles sans mot de passe.

J'ai essayé sans succès.

Merci à Vous.

DanVoit

Bonjour,

Un essai ... voir si ça convient ....

ric

Bonsoir Ric,

Parfait, c'est excatement cela.

Je ne pensais pas que la solution était aussi simple.

Merci

Bonne Soirée & WK.

ric

Bonsoir

encore une petit modife

Sub ColorCadre()
Application.ScreenUpdating = False
   tabloF = Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
   ChoixCouleur.Show
   For f = 1 To 12
      Sheets(tabloF(f - 1)).Activate
      Sheets(tabloF(f - 1)).Unprotect
      Set plage = Sheets(tabloF(f - 1)).Range("C5:F5,H5:K5,M5:P5,C15:F15,H15:K15,M15:P15,C21:F21,H21:K21,M21:P21")
      plage.Interior.Color = macouleur
      Sheets(tabloF(f - 1)).Protect
   Next f
Sheets(tabloF(0)).Activate
End Sub

A+

Maurice

Bonjour à tous,

Intéressant, j'ai zappé ce retour au début.

ric

Bonsoir,

Merci à vous 2,

Concernant la modif de : archer

Le retour fonctionne mais le résultat des couleurs ne va pas, les cadres deviennent noires.

Une question : à quoi correspond cette fonction dans le code : tabloF(f - 1)) et pourquoi For f = 1 To 11 devient For f = 1 To 11

Merci encore.

DanVoit.

Bonjour,

Utilise ce code-ci :

Les tableaux commencent à 0 ... Le tabloF est lu de 0 à 11 pour avoir 12 articles.

Sub ColorCadre()
Application.ScreenUpdating = False
   tabloF = Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
   ChoixCouleur.Show
   For f = 0 To 11
      Sheets(tabloF(f)).Activate
      Sheets(tabloF(f)).Unprotect
      Set plage = Sheets(tabloF(f)).Range("C5:F5,H5:K5,M5:P5,C15:F15,H15:K15,M15:P15,C21:F21,H21:K21,M21:P21")
      plage.Interior.Color = macouleur
      Sheets(tabloF(f)).Protect
   Next f
Sheets(tabloF(0)).Activate
End Sub

ric

Bonjour ric,

Merci pour l'explication,j'ai compris le déroulement.

Parfait.

Cependant, chez moi, j'obtient un résultat négatif car les bordures deviennent et restent noires avec ce code.

DanVoit.

Bonjour à tous,

A quoi sert la feuille 1 ? En la supprimant, voici le code:

Public macouleur As Long

Sub ColorCadre()
    tabloF = Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
    ChoixCouleur.Show
    For f = 0 To 11
         Sheets(f + 1).Unprotect
        Set plage = Sheets(tabloF(f)).Range("C5:F5,H5:K5,M5:P5,C15:F15,H15:K15,M15:P15,C21:F21,H21:K21,M21:P21")
        plage.Interior.Color = macouleur
         Sheets(f + 1).Protect
    Next f
    Sheets("Janvier").Select
End Sub

Une proposition toute simple.

Cordialement

Bonjour à tous,

Dans le module contenant la macro Sub ColorCadre()

En haut avant la macro, il faut insérer :

Public macouleur As Long rendant la variable publique ... sa valeur peut ainsi passer d'un code à l'autre. Sinon, la valeur donnée à "macouleur" dans le userform "ChoixCouleur" est perdu en avant de revenir dans la macro "ColorCadre".

Les bordures restent noire car la valeur de la variable est perdu en chemin.

Ceci fonctionnera :

Public macouleur As Long

Sub ColorCadre()
Application.ScreenUpdating = False
   tabloF = Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
   ChoixCouleur.Show
   For f = 0 To 11
      Sheets(tabloF(f)).Activate
      Sheets(tabloF(f)).Unprotect
      Set plage = Sheets(tabloF(f)).Range("C5:F5,H5:K5,M5:P5,C15:F15,H15:K15,M15:P15,C21:F21,H21:K21,M21:P21")
      plage.Interior.Color = macouleur
      Sheets(tabloF(f)).Protect
   Next f
Sheets(tabloF(0)).Activate
End Sub

ric

Bonjour ddetp88,

La Feuil1..... à rien, simple oublie, j'aurais du pour cet exemple la supprimer.

Ok pour la solution, cela marche.

J'ai aussi celle-ci que j'aime bien, hé oui à force de chercher, on trouve les réponses les plus simples, comme quoi :

Assigner les 2 macros au même bouton en collant le nom dela macro

Sub Général

Call 'Macro 1

Call 'Macro 2

Call 'Macro 3

End sub

Merci à vous tous pour le coup de main et la leçon de Vba, cela va réellement me servir.

Bonne journée.

DanVoit.

ric

Rechercher des sujets similaires à "protections macro"