jamelie
Messages postés57Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention27 février 2008
-
30 mai 2006 à 16:25
jamelie
Messages postés57Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention27 février 2008
-
6 juin 2006 à 12:15
Bonjour,
j'ai une userform dans laquelle il faut completer des textbox dont les données vont se classer dans une feuille excel.
Comment faire pour que ma croix en haut à droite de la userform suive certaines recommandations.
C'est à dire que je veux que lorsque je clique dessus elle me demande si je ve enregistrer les modifications ou pas ou si je veux annuler. J'ai trouvé dans l'aide l'évènement queryclose mais j'arrive pas à le faire fonctionner , j'ai aussi trouvé l'évènement beforeclose. Comment est ce que je doit utiliser ces évènements? Car actuellement quand je clique sur la croix même si mes données ont ete enregistrées avant elles disparaissent.
J'espère que vous pourrez m'aider.
Merci beaucoup
Jamelie
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 30 mai 2006 à 22:52
Ben tiens, je te mets le code, me concernant, je trouve que ça fait + beau :
Tout en haut des codes du UserForm, dans les déclarations, mets ça :
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Puis dans UserForm_Initialize()
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
Comme je te le disais dans le Post précédant, t'as plus qu'à créer un bouton "Valider" ou "Fermer"
Sub CommandButton1_Click()
Reponse = MsgBox("voulez vous sauvegarder ? ", vbYesNo)
If Reponse = vbYes Then
ThisWorkBook.Close True
Else
ThisWorkBook.Close False
End If
End Sub
Voilà, t'as plus qu'à faire du copier / coller et à créer un bouton.
Qu'est ce que je ferai pas pour une demoiselle...
@ ++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
jamelie
Messages postés57Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention27 février 2008 1 juin 2006 à 12:32
Merci c'est super sympa parce que le code que m'a donné Michel ca fonctionne pas ca a aucun influence sur mon bouton annuler.
Je vais essayer ce que tu me dit. J'ai deja un bouton enregistrer mais avec ton code je peux créer un bouton fermer à coté. parce que la meme si j'ai enregistré quand je revien et que je fait aucun changement quand je clique sur la croix toutes mes valeurs disparaissent il est la mon gros probleme.
J'essaye ce que tu m'as dit et je te tiens au courant.
merci beaucoup
sinon pour le module de classe ca avait pas fonctionné mais j'ai trouvé autre chose. Merci quand même
Vous n’avez pas trouvé la réponse que vous recherchez ?
jamelie
Messages postés57Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention27 février 2008 1 juin 2006 à 15:39
Ca fonctionne pas le programme. j'ai changé le thisworkbook en userform parce que c'est pas mon classeur que je veux qu'il ferme c'est ma Form. Mais bon ca veut pas ca bloque. il m'affiche bien le message mais à partir du moment ou je clique ca bloque. sinon ma croix de ma form fonctionne toujour comme avant elle a pas disparu.
Mais bon j'espère que j'y arriverai. l'espoir fait vivre comme on dit.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 2 juin 2006 à 00:57
Salut Jamélie,
pour enlever la croix du UserForm, tu n'as que du copier / coller à faire et même si ça parait compliqué c'est très simple, et je te guide pas à pas :
Quand tu es sur VB d'excel, là où tu fais toi même ton UserForm, fais le apparaitre et double click dessus, tu dois avoir le code qui apparait.
Là, va tout en haut du code, à la toute première ligne et colle ça :
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Une fois ce code copié, un peu plus bas, tu dois avoir tes procédures par rapport aux boutons, texbox etc... et tu dois avoir quelque part
Private Sub UserForm_Initialize()
intercale ça dedans :
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
et voilà, le tour est joué, lors du lancement de ton UserForm, la croix est occulté.
Avant de le lancer, prévoit un bouton pour fermer ta form, sinon, tu ne peux plus (ou alors il faut faire Ctrl + Pause).
Si tu as des soucis, n'hésite pas !
Bon courage.
@++
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
jamelie
Messages postés57Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention27 février 2008 4 juin 2006 à 17:48
je vais faire comme tu as dis merci beaucoup. Par contre j'ai un autre petit soucis. Quand je reste sous excel toutes mes données s'écrivent normalement dans ma base de données par conte si je ferme mon document. quand je l'ouvre les données sont la mais des que je lance ma userform tout s'efface les interfaces sont vides les données d'avant ne réaparaissent pas même si j'ai selectionné les mêmes critères de départ (année, mois). est ce qu'il y a une solution?
encore merci
Jamelie
jamelie
Messages postés57Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention27 février 2008 6 juin 2006 à 12:15
ca fonctionne c'est bon. Merci beaucoup.
Si vous avez une solution ou une idée pour mon petit soucis, elles sont les bien venues.
Encore merci
Bonne journée