[RESOLU] Macro controle champs obligatoire en boucle avant possibilité d'enregistrer

targa

XLDnaute Junior
Bonjour le forum, bonjour à tous !;)
Voici un nouveau petit problème à élucider que j'ai à vous soumettre :)
La situation:
Avant de pouvoir enregistrer, certains champs sont obligatoires, jusque là très bien.
Mon problème, j'ai des utilisateurs qui au lieu d'utiliser les boutons d'enregistrement que j'ai créé (qui doit se faire absolument au format .xlsm), vont utiliser dans le menu Fichier les boutons Enregistrer ou Enregistrer sous... et bien entendu, là, Excel propose tous les formats.
Pour cela j'ai rajouter à la suite de ma macro de "contrôle des champs à remplir avant enregistrement", une macro (que j'ai trouvé généreusement sur le forum) afin que l'utilisateur n'aie plus qu'un format (.xlsm), mon problème c'est que si je remplis pas un champs, une alerte vient me dire que tel champs n'est pas remplis(ça c'est ok), mais ensuite me vient directemetn la fenêtre pour enregistrer (ce que je ne souahite pas si un champs est encore vierge).

Le souci, il faudrait que cette fenêtre d'enregistrement vienne uniquement une fois que tous les champs sont remplis.
Ce qui implique que la macro tourne en boucle jusqu'à ce que tous les champs obligatoire soient remplis.
Est-ce que quelqu'un d'entre vous aurait la solution et de pouvoir me modifier la macro en conséquence?

Elle se trouve dans les objets ThisWorkbook.

Avec en avance mes sincères remerciements.
A disposition si je n'ai pas était très compréhensible.

le fichier en pce jointe;)
 

Pièces jointes

  • test.xlsm
    118.2 KB · Affichages: 77
  • test.xlsm
    118.2 KB · Affichages: 76
  • test.xlsm
    118.2 KB · Affichages: 75
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro controle de champs obligatoire en boucle avant possibilité d'enregistrer

Bonjour targa,

il suffit de mettre " Exit Sub " avant le "End If " de chaque contrôle
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
' Controle des cellules obligatoires avant enregistrement

' Controle si une des 2 cellules, soit Concerne ou Projet, et ou sont remplies
With Feuil02
    If Application.CountA(.[Concerne], .[Projet]) = 0 Then
        MsgBox "Remplir obligatoirement le(s) champ(s)  CONCERNE et/ou PROJET, Merci"
        Cancel = True
        Sheets("Donnees").Select
        Range("Concerne").Select
        Exit Sub
    End If
' Controle si la cellule Date du jour est remplie
    If Range("Date1").Value = "" Then
        MsgBox "Veuillez indiquer la date du jour"
        Cancel = True
        Sheets("Donnees").Select
        Range("Date1").Select
        Exit Sub
    End If

' Controle si la cellule Société est remplie
    If Range("Societe").Value = "" Then
        MsgBox "Veuillez encore renseigner le nom de la SOCIETE"
        Cancel = True
        Sheets("Donnees").Select
        Range("Societe").Select
        Exit Sub
    End If

' Controle si la cellule choix de Maitrise est remplie
    If Range("Bat_2").Value = "" Then
        MsgBox "Veuillez indiquer dans la section 'BATIMENT CONCERNÉ', le N° DU BÂT., si pas de bâtiment, mettre le chiffre 0 ou un espace dans le champ"
        Cancel = True
        Sheets("Donnees").Select
        Range("Bat_2").Select
        Exit Sub
    End If


' Controle si la cellule choix de Maitrise est remplie
    If Range("MT_Contact").Value = "" Then
        MsgBox "Veuillez encore sélectionner la MAÎTRISE exécutante!"
        Cancel = True
        Sheets("Donnees").Select
        Range("MT_Contact").Select
        Exit Sub
    End If

' Controle si la cellule de contact MT est remplie
    If Range("Donnees!J20").Value = "" Then
        MsgBox "Veuillez encore indiquer la personne de contact de MT!"
        Cancel = True
        Sheets("Donnees").Select
        Range("Donnees!J20").Select
        Exit Sub
    End If

End With

' Permet l'enregistrement du fichier uniquement avec l'extension .xlsm
Dim varWorkbookName
If SaveAsUI = True Then
Application.DisplayAlerts = False
varWorkbookName = Application.GetSaveAsFilename(FileFilter:="Excel Macro Enabled Workbook (*.xlsm), *.xlsm", Title:=ThisWorkbook.Name)
If InStr(varWorkbookName, "\") > 0 Then ThisWorkbook.SaveAs Filename:=varWorkbookName, FileFormat:=52
Application.DisplayAlerts = True
Cancel = True
End If

End Sub

à+
Philippe
 

targa

XLDnaute Junior
Re : Macro controle de champs obligatoire en boucle avant possibilité d'enregistrer

Bonjour Philippe,

Que puis-je te dire...! Si ce n'est que MAGNIFIQUE !!! :eek:

Cela marche à la perfection.

Un grand merci encore

Et une excellente fin d'après-midi.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
311 732
Messages
2 081 997
Membres
101 861
dernier inscrit
Jerem28630