Bonjour à tous
J'ai créé deux macros. La première teste le remplissage des cellules, la seconde enregistre la feuille sous un nom et un répertoire défini par mes soins.
Les deux macros fonctionnent très bien lorsque je les teste individuellement.
Mon problème est que je désire activer ma macro d'enregistrement quand je sors du test de remplissage des cellules.
Je me casse la tête depuis une semaine sans trouver une solution.
Que dois-je modifier dans la macro ci-dessous pour que les deux macros fonctionnent correctement.
J'ai bien pensé à une boucle du style Do Whlîle Loop mais j'obtiens le même résultat. Parfois le test s'effectue sur 1 ou deux cellules et effectue la macro d'enregistrement qui se nomme Sauve() et qui est dans ThisWorkBook. Parfois le test boucle de façon continue (avec Do While Loop).
Quand je clic sur l'cône d'enregistrement le macro teste si toutes les cellules sont remplies. Si elles sont toutes remplies l'enregistrement s'effectue.
Par contre tant que toutes les cellules ne sont pas remplies le teste doit de remplissage doit s'effectuer sans que l'enregistrement soit effectué.
🙂 Merci de votre précieuse aide
J'ai créé deux macros. La première teste le remplissage des cellules, la seconde enregistre la feuille sous un nom et un répertoire défini par mes soins.
Les deux macros fonctionnent très bien lorsque je les teste individuellement.
Mon problème est que je désire activer ma macro d'enregistrement quand je sors du test de remplissage des cellules.
Je me casse la tête depuis une semaine sans trouver une solution.
Que dois-je modifier dans la macro ci-dessous pour que les deux macros fonctionnent correctement.
Code:
[COLOR="Blue"]Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
' Macro exécutée à l'enregistrement du fichier qui teste le remplissage des cellules
'
Dim Remplace As Worksheet, TabloChamp As Variant, TabloMsg As Variant, i As Integer ' <-- Définition des variables
Set Remplace = Worksheets("Remplacement")
Champ = Array("B3", "B6", "B10", "B11", "B16", "B24", "B33", "G33") ' <-- Cellules a remplir obligatoirement
TabloMsg = Array("Service ", _
"Nom et prénom de la personne à remplacer ", _
"Taux actuel ", _
"Taux demandé ", _
"Justification de la demande ", _
"Remplacement pour le mois de ", _
"Votre nom et prénom ", _
"Date de la demande ") ' <-- Texte du champ oublié
For i = 0 To UBound(Champ) ' <-- Teste les 8 éléments du classeur, remplis ou pas remplis (boucle)
If Remplace.Range(Champ(i)) = "" Then ' <-- Teste si les cellules à remplir obligatoirement, le sont !
' <-- FL1.Range(Champ(i)).Interior.ColorIndex = 5 ' <-- La cellule non remplie est colorisée en bleu / mais cela ne fonctionne pas !
MsgBox "Utilisateur " & Environ("username") + Chr$(13) + Chr$(13) _
& "vous avez oublié de saisir le champ : " + Chr$(13) + Chr$(13) _
& TabloMsg(i) + Chr$(13) + Chr$(13) _
& "Veuillez le saisir svp ! !" + Chr$(13) + Chr$(13), _
vbOKOnly + vbExclamation, " - ERREUR DE SAISIE - " ' <-- Mise en forme du message erreur
Cancel = True
Exit For
End If
Next
End Sub[/COLOR]
J'ai bien pensé à une boucle du style Do Whlîle Loop mais j'obtiens le même résultat. Parfois le test s'effectue sur 1 ou deux cellules et effectue la macro d'enregistrement qui se nomme Sauve() et qui est dans ThisWorkBook. Parfois le test boucle de façon continue (avec Do While Loop).
Quand je clic sur l'cône d'enregistrement le macro teste si toutes les cellules sont remplies. Si elles sont toutes remplies l'enregistrement s'effectue.
Par contre tant que toutes les cellules ne sont pas remplies le teste doit de remplissage doit s'effectuer sans que l'enregistrement soit effectué.
🙂 Merci de votre précieuse aide
Dernière édition: