rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
7
23 mars 2006 à 22:27
Bonsoir ZANUS,
on est d'accord.
Bon, pour quelqu'un qui ne sait pas vraiment faire, tu es déjà allé bien loin. Tu as découvert l'essentiel : Visual Basic Editor.
Dis toi que c'est un environnement de développement intégré, et qu'à partir du moment où tu l'ouvres, c'est que tu viens créer/modifier/dépanner ton applicatif.
Donc, la manière dont tu affiches ton UserForm n'est pas saugrenue, c'est juste qu'elle n'est pas représentative du fonctionnement de ton applicatif, vu par l'utilisateur, mais au contraire, vu par le développeur. Et lui, le développeur, il est content de voir tous ses outils qui trainent dans son atelier !
Alors, je te donne là un petit bout de code à fusionner dans le tien. Ce bout de code va créer une barre d'outils, du côté Word, avec un icone dedans (ABC), à gauche du document, automatiquement, à l'ouverture du document. Quand tu auras fait tout ce que je vais te dire, tu fermeras ton document.
En bon utilisateur, tu ré-ouvriras le document, et tu verras la barre d'outils. Tu cliqueras sur l'icone (ABC), et ton formulaire apparaitra. Là, tu feras ce que tu as à faire, et quand tu cliqueras un bouton qui fait sortir, le formulaire disparaitra, et, toi, tu seras toujours devant ton document Word. Tu pourras à nouveau cliquer l'icone (ABC), ou fermer le document et surfer sur CodeS-SourceS. :)
En attendant, insère ce code, et fais les modifications que je te préconnise de faire, avant de fermer le document en entier (et prend soin d'enregistrer avant, c'est une tradition)
Voilà le code :
dans le code de ThisDocument, section (Général)(Déclarations), tu écris :
Public cbPerso As Office.CommandBar 'variable servant de référence
'à la barre d'outils
'cette procédure sert à afficher ton formulaire,
'et elle est appelée par le bouton de la barre d'outils
'(icone ABC)
Public Sub AfficherFormMain()
Dim frmTemp As frmMain 'déclare une variable servant
'de référence au formulaire, tu dois
'adapter le type frmMain, à ton type
'ici, type = nom de ton formulaire
'crée une instance du formulaire principal
Set frmTemp = New frmMain 'ici aussi adapter le type
'affiche le formulaire, non modal
frmTemp.Show vbModeless
End Sub
'si tu n'as pas déjà utilisé cette procédure, colle
'le code directement, sinon, ne prend que le code
'qui est dans le corps de cette procédure, et colle
'le au début du corps de la tienne.
Private Sub Document_Close()
'cette procédure s'exécute automatiquement,
'à la fermeture du document
If Not cbPerso Is Nothing Then
'supprime la barre à la fermeture du document
cbPerso.Delete
End If
End Sub
'si tu n'as pas déjà utilisé cette procédure, colle
'le code directement, sinon, ne prend que le code
'qui est dans le corps de cette procédure, et colle
'le au début du corps de la tienne.
Private Sub Document_Open()
Dim cbcTemp As Office.CommandBarControl
'cette procédure s'exécute automatiquement,
'à l'ouverture du document
'installe la barre personnalisée
Set cbPerso = Application.CommandBars.Add("NouvelleBarre", msoBarLeft, , True)
cbPerso.Visible = True
'ajoute le bouton pour afficher le formulaire principal
Set cbcTemp = cbPerso.Controls.Add(msoControlButton, , , , True)
cbcTemp.FaceId = 2
cbcTemp.OnAction = "AfficherFormMain"'le nom AfficherFormMain doit être
'le même nom que celui de la procéure
'que l'on a déclaré tout en haut
cbcTemp.DescriptionText = "Afficher le formulaire principal"
End Sub
Ensuite, il est indispensable que, de façon explicite, tu écrives dans le code d'un bouton (si c'est avec un bouton que tu veux fermer), le nécessaire à spécifier au formulaire de se fermer.
Donc, par exemple, si tu veux fermer avec ton bouton Valider et aussi avec ton Annuler, ajoutes leur :
Unload Me 'ce n'est pas la manière la plus évolutive, mais la plus simple
Ce qui donnera
Private Sub CommandButton1_Click()
ActiveDocument.Tables(1).Rows(2).Select
With Selection.Font
.Hidden = True
End With
ActiveDocument.Tables(1).Rows(4).Select
With Selection.Font
.Hidden = True
End With
Unload Me
End Sub
Private Sub CommandButton2_Click()
ActiveDocument.Tables(1).Rows(2).Select
With Selection.Font
.Hidden = False
End With
ActiveDocument.Tables(1).Rows(4).Select
With Selection.Font
.Hidden = False
End With
Unload Me
End Sub
Si l'explication et la solution t'ont plus, appuies sur Accepter la réponse, ceux qui font le même type de recherche seront contents de trouver une réponse testée et valider par quelqu'un. (et ça ne clos pas le débat pour autant)
à+, ZANUS (d'habitude je ne redis pas le pseudo, mais là, pour la rime...)
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>