XL 2021 code vba pour autorisez l'enregistrement par le bouton "enregistrer" uniquement si tout les champs sont remplis

phoceenjo

XLDnaute Nouveau
Bonjour à tous,

Je débute avec les codes VBA et j'aurais besoin de votre aide.

Je souhaiterais que sur le fichier joint, je ne puisse sauvegarder en cliquant sur le bouton enregistrer uniquement si tous les champs pouvant être remplie soit avec une liste déroulante soit manuellement le soit réellement.

Pouvez vous m'aider s'il vous plait ?

je vous remercie d'avance
 

Pièces jointes

  • Fichier test.xlsm
    300.3 KB · Affichages: 2

phoceenjo

XLDnaute Nouveau
Tout fonctionne parfaitement hormis le dernier fichier (Gare 2) qui au moment ou j’appuie sur le bouton enregistrer m'ouvre un autre fichier intitulé Gare 1.

Je ne comprends pas, voici le code

Sub enregistrer()
Vide = 0 ' Variable vaut 1 si une cellule est vide
Tablo = Array([I1], [I2], [G5], [H5], [E7], [J7], [I10:I11], [D23], [D25], [E23], [E25], [D29], [D31], [D33], [D35], [F29], [F31], [F33], [F35], [H29], [H31], [H33], [H35], [D39], [D44:D51], [F44:F51], [H44:H51], [D52], [D72], [D74], [D76], [D78], [F72], [F74], [F76], [F78], [H72], [H74], [H76], [H78], [D82], [D87], [D89], [G87], [G89], [D92], [D97], [D99], [D101], [E109], [D116], [D120], [E123], [D128], [D130], [E128], [E130], [D144], [D146], [D148], [E151], [D155], [D157], [D159], [E162]) ' On définit dans le tableau les cellules qui doivent être non vides
' On vérifie qu'aucune cellule désignée n'est vide
For i = 0 To UBound(Tablo)
For Each cell In Tablo(i)
If cell.Value = "" Then Vide = 1: Exit For
Next cell
' Si Vide =1 donc une cellule vide donc on émet un message et on sort.
If Vide = 1 Then
MsgBox "Veuillez remplir tous les champs." & Chr(10) & "Enregistrement impossible."
Exit Sub
End If
Next i

' Message de test à supprimer


' Mettre en commentaire le chemin non désiré
Chemin = "C:\Users\REDIF\OneDrive - REDIF\REDIF - Documents\Registre d'exploitation\Mensuel\" ' Ne pas oublier le "\ à la fin
'Chemin = "C:\Users\PC_PAPA\Desktop\XLD\Registre d'exploitation\"

NomFichier = "Gare 2 - " & Format(Date, "yyyy-mm") & ".pdf"
ChDir Chemin
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & NomFichier _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

' On vide les cellules, à mon avis inutile car ensuite on quitte le fichier sans enregistrer
For i = 0 To UBound(Tablo)
For Each cell In Tablo(i)
cell.Value = ""
Next cell
Next i

MsgBox "Opération terminée."

' On quitte le fichier sans enregistrer
ActiveWorkbook.Close False
End Sub

Sub TestRemplirCellules() ' Macro test pour tout remplir
Tablo = Array([I1], [I2], [G5], [H5], [E7], [J7], [I10:I11], [D23], [D25], [E23], [E25], [D29], [D31], [D33], [D35], [F29], [F31], [F33], [F35], [H29], [H31], [H33], [H35], [D39], [D44:D51], [F44:F51], [H44:H51], [D53], [D72], [D74], [D76], [D78], [F72], [F74], [F76], [F78], [H72], [H74], [H76], [H78], [D82], [D87], [D89], [G87], [G89], [D92], [D97], [D99], [D101], [E109], [D116], [D120], [E123], [D128], [D130], [E128], [E130], [D144], [D146], [D148], [E151], [D155], [D157], [D159], [E162]) ' On définit dans le tableau les cellules qui doivent être non vides
' On remplit toutes les cellule désignées dans Tablo
For i = 0 To UBound(Tablo)
For Each cell In Tablo(i)
With cell
.Value = 1000 + Int(8000 * Rnd):
.Borders.Weight = xlContinuous
.Interior.Color = vbYellow
.Font.Color = vbBlue
End With
Next cell
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 449
Membres
110 483
dernier inscrit
Laanvy