Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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], [D4451], [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], [D4451], [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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Par pitié, utilisez la balise </> pour le code ( à droite de l'icone GIF ) c'est plus lisible.
Dans votre code, nulle part figure "Gare 1" donc ça ne vient pas de ce bout de code, il ne peut pas l'inventer.
Ca vient d'autre part que de cette macro.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…