XL 2016 Création VBA - Obliger à remplir toute les cellules d'une ligne avant fermeture

Marbou

XLDnaute Nouveau
Bonjour,

Je cherche à obliger les utilisateurs d'un fichier à remplir toutes les cellules d'une ligne avant de fermer le fichier.
Après recherche sur votre forum, il me semble que la meilleure option est la création d'un VBA.
J'ai l'onglet développeur mais je ne sais pas m'en servir.
Pourriez-vous m'aider?

Merci d'avance!
 
Solution
bonjour @Marbou, @Jacky67 :)


Attention, dans un temps jadis, j'avais voulu faire cela. Mais on ne maitrise pas l'utilisateur et ses réactions (qui peuvent être tout à fait justifiées par ailleurs). Il faut lui laisser une possibilité d'abandon.
Sinon, quand l'utilisateur n'avait pas toutes les données sous la main, Il saisissait n'importe quoi pour sortir de la boucle ou bien il utilisait le Ctrl+Alt+Suppr et tuait la tâche Excel. Et ce qui devait arriver arrivait : corruption du fichier :eek:.
Hello mapomme ,
Dans ce cas précis, on pourrait imaginer prévenir l'utilisateur par:
MsgBox "Veuillez saisir toutes les cellules" & vbLf & "Pour continuer ou fermer le classeur sans compléter les cellules," & vbLf & "effacez...

Jacky67

XLDnaute Barbatruc
Bonjour,

Je cherche à obliger les utilisateurs d'un fichier à remplir toutes les cellules d'une ligne avant de fermer le fichier.
Après recherche sur votre forum, il me semble que la meilleure option est la création d'un VBA.
J'ai l'onglet développeur mais je ne sais pas m'en servir.
Pourriez-vous m'aider?

Merci d'avance!
Bonjour,
En supposant que les cellules à saisir soient [A2:J2]
Ceci dans le Thisworkbook
Pour y accéder
Alt+F11==>sélectionner Thisworkbook dans la fenêtre à gauche et coller le code ci-dessous dans la fenêtre de droite
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Application.CountA(Feuil1.[A2:J2]) <> 10 Then
        Cancel = True
        MsgBox "Veuillez saisir toutes les cellules"
    End If
End Sub
 

Pièces jointes

  • Test remplir toutes les cellules.xlsm
    14.2 KB · Affichages: 14

Marbou

XLDnaute Nouveau
Bonjour,
En supposant que les cellules à saisir soient [A2:J2]
Ceci dans le Thisworkbook
Pour y accéder
Alt+F11==>sélectionner Thisworkbook dans la fenêtre à gauche et coller le code ci-dessous dans la fenêtre de droite
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Application.CountA(Feuil1.[A2:J2]) <> 10 Then
        Cancel = True
        MsgBox "Veuillez saisir toutes les cellules"
    End If
End Sub

Merci beaucoup pour le code et l'explication.
Cela fonctionne bien si je demande la fermeture du fichier directement. Mais si j'enregistre avant, le fichier se ferme même si certaines cellules de la ligne comprises entre A et J ne sont pas remplies.
Par ailleurs, que faudrait-il que j'ajoute au code pour que la règle s'applique dès lors qu'une cellule d'une ligne est remplie?
Exemple : si la cellule B12 est remplie, toutes les cellules de la ligne 12 doivent l'être.
Merci encore!
 

Jacky67

XLDnaute Barbatruc
Merci beaucoup pour le code et l'explication.
Exemple : si la cellule B12 est remplie, toutes les cellules de la ligne 12 doivent l'être.
Merci encore!
RE
?????
il y a 16384 cellules dans une ligne, et la ligne 12 n'est pas exclue.
La question était
''Obliger à remplir toute les cellules d'une ligne avant fermeture''
Mettre le classeur en ligne
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
bonjour @Marbou, @Jacky67 :)
Je cherche à obliger les utilisateurs d'un fichier à remplir toutes les cellules d'une ligne avant de fermer le fichier.

Attention, dans un temps jadis, j'avais voulu faire cela. Mais on ne maitrise pas l'utilisateur et ses réactions (qui peuvent être tout à fait justifiées par ailleurs). Il faut lui laisser une possibilité d'abandon.
Sinon, quand l'utilisateur n'avait pas toutes les données sous la main, Il saisissait n'importe quoi pour sortir de la boucle ou bien il utilisait le Ctrl+Alt+Suppr et tuait la tâche Excel. Et ce qui devait arriver arrivait : corruption du fichier :eek:.
 

Jacky67

XLDnaute Barbatruc
bonjour @Marbou, @Jacky67 :)


Attention, dans un temps jadis, j'avais voulu faire cela. Mais on ne maitrise pas l'utilisateur et ses réactions (qui peuvent être tout à fait justifiées par ailleurs). Il faut lui laisser une possibilité d'abandon.
Sinon, quand l'utilisateur n'avait pas toutes les données sous la main, Il saisissait n'importe quoi pour sortir de la boucle ou bien il utilisait le Ctrl+Alt+Suppr et tuait la tâche Excel. Et ce qui devait arriver arrivait : corruption du fichier :eek:.
Hello mapomme ,
Dans ce cas précis, on pourrait imaginer prévenir l'utilisateur par:
MsgBox "Veuillez saisir toutes les cellules" & vbLf & "Pour continuer ou fermer le classeur sans compléter les cellules," & vbLf & "effacez la saisie en B12"
et un exit sub sur B12=""
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 102
Membres
103 117
dernier inscrit
augustin.morille