Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/03/2007, 16h19   #1
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Par défaut [VBA-O] Formulaires VB

Bonjour,

J'ai des difficultés a mettre en place un formulaire.
Je m'explique, je souhaite créé 2 Frame F1 et F2 et 2 checkbox C1 et C2.

Ce que le formulaire doit faire :
A la composition du formulaire, on choisit la frame que l'on veut afficher si on coche C1, la Frame F1 s'affiche, si on décoche, la frame ne s'affiche pas. A la réception, le lecteur doit voir apparaitre seulement les Frame cochées.

Ce qui se passe réellement :
A la lecture, les apparaissent toutes ou disparaissent toutes selon leur état par defaut, alors que mes formules fonctionnent très bien en "composition"

Je galère vraiment !!! Merci pour votre aide.

ci-joint mes formules :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function Item_Open()
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameARBOR").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxArbor").Value
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFramePDA").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxPDA").Value
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameValeur").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxValeur").Value
End Function
 
Sub Item_CustomPropertyChange(ByVal Name)
	Select Case Name
		Case "TMAShowArbor":
			Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameARBOR").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxArbor").Value
		Case "TMAShowPDA":
			Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFramePDA").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxPDA").Value
		Case "TMAShowValeur":
			Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameValeur").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxValeur").Value
	End Select
End Sub
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 16h53   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Bonjour YK0K0, bienvenue sur le forum.
Citation:
Envoyé par YK0K0
Bonjour,
Code :
1
2
3
4
5
Function Item_Open()
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameARBOR").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxArbor").Value
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFramePDA").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxPDA").Value
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameValeur").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxValeur").Value
End Function
Déjà, pour faire ça, tu n'as pas besoin d'une fonction
Rebaptise ta fonction
et pour l'appeler, mets simplement
Maintenant, si tes contrôles ne s'affichent pas, c'est une question de délai.
Pour avoir expérimenté (encore aujourd'hui) cette syntaxe, je conclus qu'elle pose pb (alors qu'elle ne devrait pas) A ta place, je mettrais
Code :
1
2
If GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxArbor").Value = True _
then GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameARBOR").Visible = True
Tu fais ça pour chaque ligne de code et après j'ajouterais
Code :
1
2
3
For Cpteur = 1 to 2000
    DoEvents
Next
... pour laisser au système le temps d'afficher tes contrôles
En attendant d'avoir la réponse à ma question posée
Tu dis
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 17h18   #3
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Merci pour ta réponse mais j'aurais du préciser que je suis une vrai bille en VB et formulaire outlook (disons que ce sont mes débuts )

Je vais essayer de suivre ce que tu me conseils.

J'aurais cependant une autre question, je voudrais intégrer dans mon formulaire un bouton qui me permettrait d'attacher un fichier et d'y afficher son nom directement. Est-ce possible ? si oui, comment puis-je faire ?

Merci d'avance ...
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 17h22   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
Envoyé par YK0K0
je voudrais intégrer dans mon formulaire un bouton qui me permettrait d'attacher un fichier et d'y afficher son nom directement. Est-ce possible ? si oui, comment puis-je faire ?

Merci d'avance ...
où souhaites-tu l'afficher et où prends-tu le nom ?
Et qu'entends-tu pas "Attacher" ?
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 17h25   #5
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Voila mon code modifié :

J'ai peut être rien compris (m'étonnerais pas ^^) mais ca ne marche plus du tout

Kek j'ai fait de travers ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Item_Open()
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameARBOR").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxArbor").Value
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFramePDA").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxPDA").Value
	Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameValeur").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxValeur").Value
End Sub
 
Item_Open()
 
If GetInspector.modifiedFormPages("LivraisonProduction").Controls("CheckBoxArbor").Value = True
Then GetInspector.modifiedFormPages("LivraisonProduction").Controls("TMAFrameARBOR").Visible = True
 
If GetInspector.modifiedFormPages("LivraisonProduction").Controls("CheckBoxPDA").Value = True
Then GetInspector.modifiedFormPages("LivraisonProduction").Controls("TMAFramePDA").Visible = True
 
If GetInspector.modifiedFormPages("LivraisonProduction").Controls("CheckBoxValeur").Value = True
Then GetInspector.modifiedFormPages("LivraisonProduction").Controls("TMAFrameValeur").Visible = True
 
For Cpteur = 1 to 2000
DoEvents
Next
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 17h27   #6
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par ouskel'n'or
où souhaites-tu l'afficher et où prends-tu le nom ?
Et qu'entends-tu pas "Attacher" ?
A+
Dans mon formulaire, j'ai un premier onglet pour le message et un 2eme avec toutes mes infos utiles.

C'est dans le second. Un bouton du genre ATTACHER + <champ texte> et on verrait apparaitre le nom du fichier qui est attaché dans le <champ texte>
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 17h34   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Pour mettre un nom dans un bouton, c'est LeBouton.Caption = LeNom mais je ne pense pas que c'est ce que tu cherches... Alors peut-être le nom du fichier actif ? ActiveWorkbook.name ?
Désolé mais je ne vois pas ta question
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 17h39   #8
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par ouskel'n'or
Pour mettre un nom dans un bouton, c'est LeBouton.Caption = LeNom mais je ne pense pas que c'est ce que tu cherches... Alors peut-être le nom du fichier actif ? ActiveWorkbook.name ?
Désolé mais je ne vois pas ta question
C'est comme si sur une page internet (ou une messagerie Web), tu voulais attacher un fichier, tu as un bouton pour ouvrir un explorateur dans lequel tu vas chercher ton fichier et hop tu l'ajoute a ton message.

Cela existe dans la messagerie de base, mais j'aimerais que le nom de mes fichiers attachés apparaissent quelques part ...
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h13   #9
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
Bonjour,

Je reviens vers vous sur mes formulaires

1- J'ai créé une proc Sub Item_Open(). Comment puis-je faire pour qu'il soit éxécuté dès l'ouverture du message ? (parce que actuellement le code à l'intérieur n'est pas éxécuté )
--> l'appeler avec Item_Open simplement ne suffit pas (marche po)

2- J'ai des champs Durée (format 12h00) dans mon formulaire mais si je veux taper 1h15 par exemple, il me rempalce par 1h00 (il arrondi). Comment puis-je avoir mon niveau de détail jusqu'aux minutes ?

Merci encore pour votre aide.
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 17h43   #10
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 626
Points : 7 626
Euh... tu le sors d'où ton
???

C'est censé s'activer quand?

Citation:
Envoyé par YK0K0
Comment puis-je faire pour qu'il soit éxécuté dès l'ouverture du message ?
Par "message", tu veux dire UserForm?

Le problème que tu rencontres vient du fait que tu "essayes" de créer une procédure événementielle en la tapant.

Il ne faut jamais procéder de la sorte.

Dans VBE (l'éditeur VBA), sélectionne ton UserForm et tape la touche F7.
En haut de la fenêtre Code, tu as 2 listes.
Celle de gauche devrait afficher UserForm.
Choisis, dans celle de droite, l'événement pour lequel tu veux écrire une procédure.
La procédure va se créer automatiquement tu n'auras plus qu'à écrire les actions que tu désires pour cet événement.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/03/2007, 17h26   #11
Invité de passage
 
Inscription : mars 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 7
Points : 0
Points : 0
En fait je crois avoir saisi en parti mon pb (meme si ca ne me fait pas avancer )

Je viens de comprendre que la sub Item_Open() s'éxécute à l'ouverture du formulaire en composition, mais pas en lecture !
C'est la raison pour laquelle je n'obtiens pas le résultat attendu en lecture quelquesoit mes sélections en composition.

Je me demadne si cela est possible du coup . Mais cet utilisation est tellement évidente que ca me semble gros que ce ne soit pas faisable !?

Par contre, d'après cette logique, je ne comprends pas pourquoi mes checkbox (qui sont censé gégé l'aspect visible ou non de mes frame) reste bien coché ou non coché en lecture alors que mes frame n'ont que faire de la variable enregistré.

J'explique :
En composition, si je coche ma checkbox, ma frame s'affiche. Si je décoche, elle disparait.

Voici le bout de code :
Code :
Item.GetInspector.modifiedFormPages("Livraison Production").Controls("TMAFrameARBOR").Visible = Item.GetInspector.modifiedFormPages("Livraison Production").Controls("CheckBoxArbor").Value
En lecture : ma checkbox a bien gardé en mémoire le fait qu'elle soit coché mais ma frame n'est pas visible malgrés mon code

Si vous avez une explication ?
YK0K0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h51.


 
 
 
 
Partenaires

Hébergement Web