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 :
Si quelqu'un ou quelqu'une à une idée, je ne trouve pas mon erreur. Merci
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