• Initiateur de la discussion Initiateur de la discussion thib38
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thib38

XLDnaute Nouveau
Bonjour, je suis novice en terme de macro et je souhaiterais sur un formulaire excel créer des champs obligatoires sur certaines cellules et, si ces champs ne sont pas remplis interdire la fermeture excel ou mettre un message erreur.
Faut-il passer par une macro ou existe-t-il d'autres possibilité ?
Merci pour votre aide.
 
Re : Champ obligatoire

Bonsoir Thib38 et bienvenue 🙂,
Sans macro, je le crains, point de salut sur ce cas précis.
Un petit exemple à mettre dans ThisWorkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("A1") = "" Then
Cancel = True
MsgBox "Vous devez remplir A1 !"
End If
End Sub
Bonne soirée 😎
 
Re : Champ obligatoire

Re 🙂,
Quand tu fait apparaitre l'éditeur VBE (Alt+F11), tu as sur la droite une arborescence VBA Project (si tu ne l'as pas, Ctrl+r).
Si tu déploit ton classeur (VBAProject(Classeur1) par exemple), tu trouveras ThisWorkbook. Tu double-cliquesdessus et tu as la fenêtre de saisie qui s'affiche. Il te suffit de coller le code dans cette fenêtre.
Bonne journée 😎
 
Re : Champ obligatoire

Re bonjour,
je viens de rentrer ce code mais par contre je ne peux plus fermer le fichier sans renseigner les cases que j'ai définie.
Je m'explique : je créée ces fichiers pour d'autres personnes qui devront remplir ce formulaire. Je dois donc fermer ce formulaire vide mais je ne peux pas.
Existe-t-il une solution pour contourner ce probleme sans être obliger de scratcher Excel ? Par exemple contourner l'interdiction pour le créateur du fichier ? ...🙄
Merci d'avance 😉
 
Re : Champ obligatoire

J'ai eu une autre idée :
comment peut on dire en programmation :
"Si les cellules A1,A2,A3 ne sont pas remplies
alors on empêche la fermeture"
"Mais si la cellule A1 comporte "....."
et que les cellules A2,A3 ne sont pas remplies
on peut fermer quand même"

Cela pourrait ressembler à ça :

If Range("A1") = "" Then
Cancel = True
MsgBox "Vous devez renseigner la date !"
End If

If Range("A2") = "" Then
Cancel = True
MsgBox "Vous devez renseigner le nom!"
End If

If Range("A3") = "" Then
Cancel = True
MsgBox "Vous devez renseigner le prénom!"
End If

(a partir de la ça devient compliquer pour moi)

Or (si je mets "Or" un message s'affiche :
Erreur compilation
Attendu numéro de ligne ou étiquette ou instruction ou fin instruction)

If Range("A1") = "....." and if Range("A2") = "" and if Range("A3")
Then
Fermeture d'Excel autorisé (je sais pas le dire dans le language info.😕)

End If

J'espère que c'est assez clair. Cette solution m'irais bien car lors de la création du formulaire je ne remplis qu'une case avec des petits points et je peux fermer le fichier. Quand les pernsonnes ouvriront ce formulaire, ils renseigneront la date, du coup la valeur de "A1" aura changé donc ils devont remplir les autres cases.

Qu'en pensez-vous ? Est-ce faisable ?

Merci par avance.
 
Re : Champ obligatoire

Je suis d'accord mais quand les utilisateurs devont utilisé le fichier la macro ne s'activera pas.

Il faudrait juste que je connaisse la fonction qui permet de fermer Excel quand les conditions que j'ai citées sont validées
 
Re : Champ obligatoire

Re 🙂,
Je suis d'accord mais quand les utilisateurs devont utilisé le fichier la macro ne s'activera pas.
Aucun rapport, la macro s'activera si les macros sont autorisés, sinon elle ne s'activeront pas, un point c'est tout. Il est très compliqué d'obliger l'utilisateur à accepter les macros, c'est une question de confiance 😉...
Sinon, en faisant les tests dans ce sens là, ça devrait marcher
Code:
If Range("A1") = "....." And Range("A2") = "" And Range("A3") = "" Then Exit Sub
If Range("A1") = "" Then
Cancel = True
MsgBox "Vous devez renseigner la date !"
End If
If Range("A2") = "" Then
Cancel = True
MsgBox "Vous devez renseigner le nom!"
End If
If Range("A3") = "" Then
Cancel = True
MsgBox "Vous devez renseigner le prénom!"
End If
Ça évitera que même avec les ....., les 2 autres messages apparaissent 😛.
Et tu peux même supprimer les ..... à l'ouverture, toujours dans ThisWorkbook
Code:
Private Sub Workbook_Open()
If Range("A1") = "....." Then Range("A1") = ""
End Sub
Bon courage 😎
 
Re : Champ obligatoire

Je viens d'essayer mais cela ne marche pas.
Je pense qu'il faut séparer par un "Or" les deux actions car dans cette config les deux actions se font en même temps du coup je ne peux pas refermer Excel sans renseigner les cellules A2 et A3.
 
Re : Champ obligatoire

Re 🙂,
Je pense qu'il faut séparer par un "Or" les deux actions car dans cette config les deux actions se font en même temps du coup je ne peux pas refermer Excel sans renseigner les cellules A2 et A3.
Syntaxiquement, ça n'existe pas.
Mais c'est pas la macro qui marche pas, c'est le bonhomme 😛...
Tes ..... deviennent ….. suite au correcteur qui transforme 3 points successifs en 1 seul caractère figurant les points de suspension 😀.
J'ai remplacé par des xxxxx, et ça fonctionne nickel (voir PJ)
A + 😎
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
340
  • Question Question
XL 2019 jj
Réponses
11
Affichages
695
Réponses
3
Affichages
617
Retour