XL 2010 Comment protéger une feuille sauf quelques cellules VBA code erreur 400

Flower6731

XLDnaute Nouveau
Bonjour à tous
Help j’ai besoin de votre aide cela fais 3 jours que je bloque.
Je vous explique j’ai un fichier ou j’ai créer une Macro voir ci-dessous : tous fonctionne sauf quand je veux protège la feuille du classeur sauf les cellules entre H2 à H15, la macro se lance et bloque message d’erreur 400 puis elle ne colorie plus les cellules. Je suis désespéré. Je vous remercie pour votre aide.

........................................................................
Sub enregistrer_classeur ()

Dim Chemin As String, Fichier As String

Chemin = ´´C:\Users\´´
Fichier = ´´Commande´´

ActiveWorkbook.SaveCopyAs Chemin & Fichier

MsgBox (´´Enregistrement effectué’´)

Range (´´H2:H15’´).Clear

Range (‘´H2’´).Interior.Color = RGB (242, 242, 242)

Range (‘´H3’´).Interior.Color = RGB (221, 242, 218)

Range (‘´H4’´).Interior.Color = RGB (197, 217, 242)

Range (‘´H2’´).Select

End Sub
.................................. ...............................
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Flower,
En PJ un essai avec :
1- Range("H2:H15").ClearContents au lieu de Range("H2:H15").Clear il n'efface alors que le contenu non les cellules
2- J'ai ajouté Unprotect Protect pour accéder à la mise en forme des cellules.
Cette mise en forme est protégée quand les feuilles sont verrouillées. On le vois en cliquant sur H2, le petit seau est grisé ce qui veut dire qu'on ne peut modifier la couleur de fond.
 

Pièces jointes

  • Classeur123.xlsm
    14 KB · Affichages: 13

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,

Les lignes de code ci-dessous fonctionnent après avoir déverrouillé H2:H15 puis paramétrer la protection comme suit :

1602404362201.png

VB:
Range("H2:H15").ClearContents

Range("H2").Interior.Color = RGB(242, 242, 242)

Range("H3").Interior.Color = RGB(221, 242, 218)

Range("H4").Interior.Color = RGB(197, 217, 242)

Range("H2").Select

La méthode clear des cellules efface tout et remet leur état de protection à Vérrouillé, les lignes suivantes ne peuvent donc plus s'exécuter avec cette méthode.
Utiliser la méthode .ClearContents à la place.

Cordialement
 

Flower6731

XLDnaute Nouveau
Bonjour Flower,
En PJ un essai avec :
1- Range("H2:H15").ClearContents au lieu de Range("H2:H15").Clear il n'efface alors que le contenu non les cellules
2- J'ai ajouté Unprotect Protect pour accéder à la mise en forme des cellules.
Cette mise en forme est protégée quand les feuilles sont verrouillées. On le vois en cliquant sur H2, le petit seau est grisé ce qui veut dire qu'on ne peut modifier la couleur de fond.

Bonjour Sylvanu,
merci pour ton retour. J'ai essayé ta macro en modifiant la mienne voir ci-dessous :
ça ne marche pas quand je lance la macro elle met un code erreur 400 et n'efface pas les choses en cellules H2 à H15.
…………………………………………………………………………………………………………………………..
Sub enregistrer_classeur()

Dim Chemin As String, Fichier As String

Chemin = "C:\Users\123\Desktop\test 02\test"
'Ajoute la date du jour et l'heure dans le nom du fichier
Fichier = "COMMANDE_" & Range("H4") & "_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmm") & ".xlsm"

ActiveWorkbook.SaveCopyAs Chemin & Fichier

MsgBox ("Enregistrement effectué => Cliquer sur OK")

Sheets("Feuil2").Unprotect

Range("H2:H15").ClearContents

Range("H2").Interior.Color = RGB(242, 242, 242)

Range("H3").Interior.Color = RGB(221, 217, 196)

Range("H4").Interior.Color = RGB(197, 217, 241)

Range("H5").Interior.Color = RGB(220, 230, 241)

Range("H6").Interior.Color = RGB(242, 220, 219)

Range("H7").Interior.Color = RGB(235, 241, 222)

Range("H8").Interior.Color = RGB(228, 223, 236)

Range("H9").Interior.Color = RGB(218, 238, 243)

Range("H10").Interior.Color = RGB(253, 233, 217)

Range("H11").Interior.Color = RGB(255, 204, 255)

Range("H12").Interior.Color = RGB(255, 255, 204)

Range("H2").Select

Sheets("Feuil2").Protect

End Sub
……………………………………………………………………………………………………….
 

Flower6731

XLDnaute Nouveau
bonjour,

Les lignes de code ci-dessous fonctionnent après avoir déverrouillé H2:H15 puis paramétrer la protection comme suit :

Regarde la pièce jointe 1081143
VB:
Range("H2:H15").ClearContents

Range("H2").Interior.Color = RGB(242, 242, 242)

Range("H3").Interior.Color = RGB(221, 242, 218)

Range("H4").Interior.Color = RGB(197, 217, 242)

Range("H2").Select

La méthode clear des cellules efface tout et remet leur état de protection à Vérrouillé, les lignes suivantes ne peuvent donc plus s'exécuter avec cette méthode.
Utiliser la méthode .ClearContents à la place.

Cordialement

Bonjour Roblochon,

merci pour ta réponse ;) Je début avec les macros, je comprend mieux alors avec tes explications.
J'ai fais comme vous m'avez dit voir ci-dessous :
Cela marche cependant une fois que je clique sur le bouton pour lancer la macro le message d'erreur revient "400". Comment faire pour ne plus le voir ?


Sub enregistrer_classeur()

Dim Chemin As String, Fichier As String

Chemin = "C:\Users\123\Desktop\test 02\test"
'Ajoute la date du jour et l'heure dans le nom du fichier
Fichier = "COMMANDE_" & Range("H4") & "_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmm") & ".xlsm"

ActiveWorkbook.SaveCopyAs Chemin & Fichier

MsgBox ("Enregistrement effectué => Cliquer sur OK")

Range("H2:H15").ClearContents

Range("H2").Interior.Color = RGB(242, 242, 242)

Range("H3").Interior.Color = RGB(221, 217, 196)

Range("H4").Interior.Color = RGB(197, 217, 241)

Range("H5").Interior.Color = RGB(220, 230, 241)

Range("H6").Interior.Color = RGB(242, 220, 219)

Range("H7").Interior.Color = RGB(235, 241, 222)

Range("H8").Interior.Color = RGB(228, 223, 236)

Range("H9").Interior.Color = RGB(218, 238, 243)

Range("H10").Interior.Color = RGB(253, 233, 217)

Range("H11").Interior.Color = RGB(255, 204, 255)

Range("H12").Interior.Color = RGB(255, 255, 204)

Range("H2").Select

End Sub
 

Flower6731

XLDnaute Nouveau
bonjour,

Les lignes de code ci-dessous fonctionnent après avoir déverrouillé H2:H15 puis paramétrer la protection comme suit :

Regarde la pièce jointe 1081143
VB:
Range("H2:H15").ClearContents

Range("H2").Interior.Color = RGB(242, 242, 242)

Range("H3").Interior.Color = RGB(221, 242, 218)

Range("H4").Interior.Color = RGB(197, 217, 242)

Range("H2").Select

La méthode clear des cellules efface tout et remet leur état de protection à Vérrouillé, les lignes suivantes ne peuvent donc plus s'exécuter avec cette méthode.
Utiliser la méthode .ClearContents à la place.

Cordialement
Bonjour Roblochon merci pour votre réponse j’ai réussi à corriger la macro.
Bonne journée
 

Statistiques des forums

Discussions
312 169
Messages
2 085 923
Membres
103 041
dernier inscrit
Ousmane