[déplacé VB6 -> VBA] Formulaire sous excel

Résolu
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010 - 18 févr. 2010 à 17:36
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010 - 19 févr. 2010 à 09:57
Bonjour,

J'aimerai créer un formulaire sous Excel avec un certain nombre de champs.
J'aimerai créer une macro qui empêche ou bloque la fermeture du fichier Excel lorsque certains champs ne sont pas remplis.

Pouvez vous m'aider ?

Merci beaucoup !

17 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
19 févr. 2010 à 09:28
Il te faut donc ajouter un bouton de commande (par exemple) et utiliser son évènement click
Dans cet évènement click, tu vérifies que tes cellules sont remplies.

C'est là une opération simple !
Ex pour regarder ce que contient la cellule K5 de la feuille Feuil14 :

msgbox sheets("feuil1").range("K5").value

!!!
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
19 févr. 2010 à 09:53
Un dernier mot

Une macro peut se déclancher automatiquement à la fermeture.
Il suffit de la nommer auto_close

Bonne journée et bon WE
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
18 févr. 2010 à 18:45
Bonjour,
Une telle macro, si on pouvait la créer, ne servirait à rien dès lors que l'utilisateur pourrait toujours, s'il le désire, en faire à sa tête (y compris par la méthode brutale CTRL-ALT-SUPP)


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
19 févr. 2010 à 02:35
bonjour
Voici les commandes pour désactiver et restaurer le menus.
Je les ai utilisées pour répondre à la deuxième question .

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, _
ByVal bRevert As Integer) As Integer

Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Integer, _
ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer

Sub Disable_Control() ' fait disparaitre la barre de menu windows
Dim X As Integer, hwnd As Long
hwnd = FindWindow("XLMain", Application.Caption)
For X = 1 To 9
Call DeleteMenu(GetSystemMenu(hwnd, False), 0, 1024)
Next X
End Sub
Sub RestoreSystemMenu() ' fait réappraitre la barre de menu windows
Dim hwnd As Long
hwnd = FindWindow("xlMain", Application.Caption)
hMenu% = GetSystemMenu(hwnd, 1)
End Sub
Sub suppressmenuexceldisable() ' fait disparaitre la barre de menu excel
Set cmde = Application.CommandBars
i = 0
Do While i < cmde.Count
i = i + 1
cmde.Item(i).Enabled = False
Loop
End Sub

Sub restoremenuexcelenable() ' fait réapparaitre la barre de menu excel
Set cmde = Application.CommandBars
i = 0
Do While i < cmde.Count
i = i + 1
cmde.Item(i).Enabled = True
Loop
End Sub
Sub restoremenuexcelvisible()
Set cmde = Application.CommandBars
i = 0
Do While i < cmde.Count
i = i + 1
cmde.Item(i).Enabled = True
Loop
i = 0
Do While i < cmde.ActiveMenuBar.Controls.Count
i = i + 1
cmde.ActiveMenuBar.Controls.Item(i).Visible = True
j = 0
Loop
i = 0
Do While i < cmde.ActiveMenuBar.Controls.Item(4).Controls.Count
i = i + 1
cmde.ActiveMenuBar.Controls.Item(4).Controls.Item(i).Visible = True
Loop
End Sub

La combinaison ctrl+alt+supp est toujours active.
Je n'ai pas d'exemple ici mais je dois trouver ca au boulot.
Attention cependant ces macros sont valables pour excel quelque soit le classeur.
Si à la fermeture les barres ne sont pas restaurées elles n'apparaitront pas même si l'on ferme excel et l'on ouvre un autre classeur.

Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
19 févr. 2010 à 08:09
Bonjour, c148270,

Ta solution est doublement dangereuse.
- Elle ne fait que "cacher" et ne protège nullement de l'utilisation du clavier
- Elle aura pour effet, en cas d'interruption brutale (pas seulement par CTRL-ALT-SUPP, mais également en cas de panne de courant ou autre...), de laisser en l'état Excel (j'entends déjà la sonnerie du téléphone du responsable informatique d'une entreprise... )

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
19 févr. 2010 à 08:18
Bonjour ucfoutu

Ta remarque est exacte.
Je suis en entreprise.
Je n'ai fait que répondre à une demande de la maîtrise d'Ouvrage qui a insisté malgré mes conseils.
j'ai donc appliqué.

Il est vrai qu'après un mois d'utilisation elle m'a demandé de retirer ces fonctions.

Nota : j'avais sur un serveur de quoi rétablir à distance

Bonne journée
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
19 févr. 2010 à 08:33
Rebonjour

Une autre solution serait peut-être de tester le champs avant fermeture.
S'ils ne sont pas renseignés il est possible soit de reboucler soit de fermer sans sauvegarde;

A étudier
0
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 08:36
Merci pour toutes vos réponses ! Un userform qui apparait pourrait faire l'affaire.
Je sais comment faire un userform et le faire apparaitre, en revanche, je ne sais pas comment vérifier que les champs que je veux ne soient pas vides.

Serait ce plus simple pour vous ?

Merci beaucoup !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
19 févr. 2010 à 08:40
Sois alors plus précis : que sont exactement ces "champs" et où sont-ils placés ?


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 09:03
Ok ! En fait, les champs que j'aimerai voir remplis absolument avant la fermeture de mon fichier sont dans l'onglet "Feuil1" et dans les cellules K12, K13 et K14. J'espère que ca peut vous aider!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
19 févr. 2010 à 09:05
Sois alors plus précis : que sont exactement ces "champs"

Tes "champs" sont-ils les cellules elles-mêmes ? ou quelque-chose (et quoi exactement ?) mis dans les cellules ?
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 09:24
Oui mes champs sont en fait les cellules que j'ai cité. En gros, ils doivent entrer dans la cellule K12 un code TVA, en K13 un numéro de téléphone et en K14 un autre numéro. Je voudrais juste un contrôle qui vérifie que si il n y a rien d'entrer dans ces cellules alors le userform apparait.
0
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 09:36
Merci ! Peut il y avoir ce contrôle avant la fermeture du fichier ? Par exemple, avant que le fichier se ferme, la macro contrôle que ces cellules ?

Je ne sais pas si c'est faisable mais ce serait exactement ce que je veux.

Merci pour ton aide !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
19 févr. 2010 à 09:39
Mais il me semble que tu tournes en rond sur ce point ...
Nous y avons déjà répondu, non ?
Tu ne peux effectuer cette opération de contrôle qu'en la déclenchant toi-même....
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
19 févr. 2010 à 09:40
et tu ne peux non plus empêcher la fermeture (contrôle ou pas contrôle effectué) !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 09:43
Ok ! Désolé mais je pensais qu'il y aurait un moyen ! Merci beaucoup pour votre aide !
0
Koda86 Messages postés 13 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 09:57
Parfait ! Je ne veux pas forcement bloquer la fermeture mais juste les informer qu'ils ont oublié de remplir des cellules. Ça devrait bien m'aider !! Merci !
0