Cellule en couleur - Plantage quand feuille protégée

olivepao

XLDnaute Occasionnel
Bonjour à tous

Dans un formulaire, je teste si tous les champs sont remplis avant enregistrement.

Tout fonctionne nickel. Je viens d'ajouter une intruction pour coloriser la première cellule non remplie.

Si la feuille est non protégée tous fonctionne mais si je protège la feuille, ce qui doit être je me retrouve avec une erreur 1004 Impossible de définir la propriété ColorIndex de la Class Interior".

Voici le code :


Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  '
  ' Macro exécutée à l'enregistrement du fichier
  '
  If VerifOK = False Then
        
        Cancel = True
        
        Exit Sub
  
  End If

  Call Sauve   ' <-- Macro pour enregistrer sous
  
  SaveAsUI = False ' <-- Empêche l'ouverture (inutile) de la boîte de dialogue "Enregistré sous . . ."
  
  Cancel = True

End Sub


Code:
Function VerifOK()
'
' Macro exécutée à l'enregistrement du fichier qui teste le remplissage des cellules
'
Dim Remplace As Worksheet, ChampRemplir As Variant, TexteMessage As Variant, i As Integer ' <-- Définition des variables

VerifOK = True  ' <-- Met à vrai le retour de la fonction

Set Remplace = Worksheets("Remplacement")  ' <--  Vérifie si tout est rempli

ChampRemplir = Array("B3", "B6", "B8", "B10", "B11", "B14", "B16", "B25", "B33", "G33") ' <-- Cellules à remplir obligatoirement

TexteMessage = Array("A remplir 1", _
                            "A remplir 2  ", _
                            "A remplir 3", _
                            "A remplir 4", _
                            "A remplir 5", _
                            "A remplir 6", _
                            "A remplir 7", _
                            "A remplir 8", _
                            "A remplir 9", _
                            "Date de la demande") ' <-- Texte du champ oublié
                            
For i = 0 To UBound(ChampRemplir) ' <-- Teste les 9 éléments du classeur, remplis ou pas remplis (boucle)
        If Remplace.Range(ChampRemplir(i)) = "" Or _
            Remplace.Range(ChampRemplir(i)) = 0 Then ' <-- Teste si les cellules à remplir obligatoirement, le sont !
                         MsgBox "Vous avez oublié de saisir le champ :     " + Chr$(13) + Chr$(13) _
                         & TexteMessage(i) + Chr$(13) + Chr$(13) _
                         & "Veuillez le saisir svp ! !" + Chr$(13) + Chr$(13), _
                         vbOKOnly + vbExclamation, "                      -  ERREUR DE SAISIE  -          "       ' <-- Mise en forme du message erreur
                         
                         Range(ChampRemplir(i)).Select ' <-- Position sur la première cellule non remplie
                         
                         Range(ChampRemplir(i)).Interior.ColorIndex = 5  ' <-- La cellule non remplie est colorisée en bleu 

VerifOK = False

      
Exit For

        End If

  Next
  
End Function

Si quelqu'un ou quelqu'une à une idée, je ne trouve pas mon erreur. Merci
 

wilfried_42

XLDnaute Barbatruc
Re : Cellule en couleur - Plantage quand feuille protégée

Bonjour

dans ta macro, avant le mises à jour, il te faut deproteger ta feuille et la reproteger à la fin de la macro

Sheets("Mafeuille").unprotect password:="MonMotDePasse"
sheets("Mafeuille").protect password:="MonMotDePasse"
 

Discussions similaires

Réponses
2
Affichages
333
Réponses
2
Affichages
191

Statistiques des forums

Discussions
312 674
Messages
2 090 788
Membres
104 665
dernier inscrit
ronbt