Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 23/02/2011, 16h47   #1
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Par défaut Supprimer les contrôles d'un formulaire par le code

Bonjour à tous
Je bloque depuis quelques jours sur un souci de programmation.
J'ai commencé la réalisation d'un planning, et je bloque sur la partie construction du formulaire planning par le code.
Ce formulaire planning est structuré de la façon suivante:
Partie Detail et uniquement (possbilité de changement)
une étiquette pour le titre: Planning du ...
Un active X Calendrier en théorie (je n'arrive pas à le créer par le code, ou plus exactement je n'arrive pas à spécifier l'application OLE "DTPicker" et la class object "MSComCtl2.DTPicker.2" de ce controle ActiveX) qui me permettra de choisir une date.
Un bouton de commande cmdjourprécedent et un autre cmdjoursuivant.
le reste des contrôles s'avère être de simple étiquette disposé ainsi
________________________salles
_______horaire1_salle1 horaire1_salle2 ....
_______horaire2_salle1
horaire ....
_______....
_______....
J'ai pu créer le code pour modéliser le planning comme je le souhaite sauf pour cet ActiveX. Ce planning se régénère automatiquement à chaque ajout ou suppression de salles.
Ma question est donc: quelqu'un aurait-il déjà réussi à créer un contrôle activeX Calendrier par le code?
J'avais envisagé aussi de mettre en entête mes boutons de commandes ainsi que l'activeX et de ne supprimmer que les contrôles de la partie Detail mais cela ne marche pas enfin ce que j'ai tenté.

Ps: je suis sous access 2007.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 05h05   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 609
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 609
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Pourquoi utiliser un calendrier alors que tu es sous Access 2007, et cela fait partie de cette version.

Lorsque ta source est un champ de type Date, avec l'option Afficher le sélecteur de date (ShowDatePicker en VBA), tu as un petit calendrier qui se met à droite de la zone de texte lorsque celle-ci à le focus.

Je tiens à rajouter, que ce que tu veux faire par code n'est pas top.

As-tu regardé tous les plannings de DVP ? http://access.developpez.com/cours/?...m#formplanning

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 10h53   #3
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Bonjour

Je n'y ait pas pensé car je ne souhaite pas y associer de source à ce champ, je souhaite juste pourvoir sélectionner une date. Par conséquent, dans ce cas il faut bien passer par un contrôle calendrier

Oui, je me suis pas mal attardé sur ce lien et j'ai choisi celui-ci dans le principe de fonctionnement
http://jeannot45.developpez.com/arti...stionplanning/ pour une vue sur une semaine et j'ai développé dans le même principe de fonctionnement un planning également pour une vue sur un jour mais avec plus de détail sur la réservation. (principe que l'on retrouve dans un des plannings sur le lien que tu as cité)

Peut tu me dire pourquoi ce que je souhaite faire n'est pas top?
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 11h30   #4
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Je rectifie car tu es dans le vrai et moi dans le faux, en fait pour moi, un champ source c'était un champ qui était lié à une table.
Je viens de voir que l'on peut affecter la fonction date() à la source d'un contrôle.
Cela va me permettre d'avancer. Je devrais pourvoir le gérer par le code.

Mais tu peut quand même m'expliquer ton point de vue, cela sera surement constructif. En MP ou ici-même à toi de voir.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 12h47   #5
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Petit retour:
Voici le code qui me permet de créer le contrôle Date
Code :
1
2
3
4
5
6
7
8
9
 
Set controle = CreateControl("Planning", acTextBox, acDetail) 'action OLE DateD
            controle.name = "caxDate"
            controle.ControlSource = "=Date()"
 
            controle.Top = 0.1 * 567
            controle.Height = 396.9
            controle.Left = 14.825 * 567
            controle.Width = 1417.5
Résultat: mon champ a bien comme source la fonction date mais je ne peut pas lui afficher le selecteur de date.
Code :
1
2
3
4
 
Me.caxDate.ShowDatePicker = True 'l'un ou l'autre
Me.caxDate.ShowDatePicker = True
Me.caxDate.ShowDatePicker = 1
Aide: Le contrôle du sélecteur de dates est affiché lorsque la zone de texte est liée à un champ Date.
Ce qui veut dire qu'il doit être lié au champ date de mon formulaire de réservation ce que je ne souhaite pas.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 20h39   #6
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Bonjour
Je vous informe des dernières évolutions.
Le planning est crée et le système de réservation en DblClick sur les étiquettes fonctionne ainsi que la mise à jour du planning.
Cependant je souhaite toujours créer un contrôle calendrier par le code.

Méthode actuelle --> zone de texte avec la date du jour à l'ouverture du planning jour ou semaine
mes bouton de commandes Suivant et Précedent modifie mon champ date de 1 jour (Planning Jour) ou 7 jours (Planning Semaine)
Lorsque l'on passe d'un planning à l'autre, l'ouverture se fait sur la date affichée dans la zone de texte.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 10h26   #7
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Up
Je constate qu'il y a beaucoup de lecteur mais peu de réponses.
Soit j'ai des talents cachés de narration mais j'en doute
Soit ce problème n'a pas de solution pour le moment.

Ou bien personne ne comprend ce que je baragouine
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 17h05   #8
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

Un membre de notre équipe a développé par programmation un contrôle calendrier.

Bonne suite
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/03/2011, 17h51   #9
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Salut
Merci pour cette piste, c'est exactement ce type de contrôle que je veux.
Cela correspond au contrôle active X dont l'application OLE est DTPicker et la Class object est MSComCtl2.DTPicker.2.
Je sais que je suis gourmand mais crois tu qu'il est possible de créer par le code le contrôle activeX que je viens de citer, au lieu de créer cette inPutBox modifiée.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 18h43   #10
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Dans ce cas il faudrait peut-être utiliser un formulaire access contenant un calendrier que tu affiches et met à jour, sur clic d'1 bouton et que tu masques ou fermes sur clic sur 1 jour, 1 contrôle du calendrier.

Donc il te faut construire un formulaire avec un ensemble de contrôles pour le calendrier, il ne s'agit donc pas d'1 solution de programmation pure...

L'avantage de la solution proposée avant c'est qu'elle n'utilise que du code
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 10h49   #11
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Salut
Ce n'est pas à ça que je pensais.
Je me demandais s'il était possible de créer un contrôle activeX de la même manière que l'on crée un contrôle zone de texte avec la commande.
Code :
Set controle = CreateControl("Planning", acTextBox, acDetail)
Merci de m'avoir répondu.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h29   #12
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 609
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 609
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il me semble avoir lu que pour les contrôles Active X il faut avoir dans un formulaire un exemplaire et ensuite en faire une copie dans le formulaire voulue pour pouvoir l'utiliser.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 19h47   #13
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
Bonjour,
As-tu déjà essayé ce qu'on trouve dans la doc MSDN :
http://msdn.microsoft.com/en-us/libr...ice.11%29.aspx
càd quelque chose comme
Code :
Set controle = CreateControl("Planning", acCustomControl, ... )


Un peu plus tard :
En fait on revient alors à la méthode évoquée ci-dessus par Philippe
voici un exemple trouvé fraichement
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
As far as I can know you can not create an ActiveX control from scratch
but but you can copy it from another form.
 
Dim frm As Form
Dim ctl As CustomControl
Set frm = CreateForm
Set ctl = CreateControl(frm.Name,
acCustomControl, , "", "", 1000, 100)
'******
'Try to set the activex control
Set ctl.Name = "WebBrowser0"
Set ctl.Class = "Shell.explorer.1"
Set ctl.OLEClass = "Microsoft Web Browser"
' The most important line coming from the other existing control
Set ctl.OLEData = Forms.Item("OtherForm").WebBrowser0.oledata
 
and then some DoCmd.RunCommand to save the form
Désolé
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/03/2011, 15h33   #14
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Salut
Merci de vos réponses, dès que j'ai un moment je teste ça.

Je n'étais pas si loin de la vérité, car j'avais essayé le code suivant pour créer le contrôle.
Code :
1
2
3
4
5
 
Set controle = CreateControl("Planning", acCustomControl, acDetail)
      controle .Name = "caxDate"
      controle .Class = "MSComCtl2.DTPicker.2"
      controle .OLEClass = "DTPicker"
Mais je n'obtenais qu'un cadre gris.

Micniv, tu as trouvé cette solution sur un forum?
Parce que étant donné le temps que j'ai passé à chercher, j'aurais du la trouver.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 18h23   #15
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Salut
Merci de votre aide, ça marche du tonnerre.
Il suffisait de rajouter la ligne suivante à mon code
Code :
1
2
 
ctl.OleData = Forms.Item("Commande creation").DateD.OleData
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h14   #16
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Bonjour,
J'ai un soucis suite à ce code, la création se fait bien sur les deux planning mais lorsque j'ouvre l'un des formulaire, access m'indique qu'il a rencontré une grosse erreur et ferme l'application en créant une sauvegarde.
L'affichage du formulaire de la journée fonctionne mais pas celui de la semaine alors que c'est le même code.
Une idée de ce qui pourrait provoquer ce problème?
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 14h39   #17
Invité de passage
 
Inscription : février 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 21
Points : 3
Points : 3
Problème résolu en créant un autre formulaire avec le même nom et donc en écrasant l'ancien.
C'est embêtant de ne pas connaître la cause tout de même.
Tinoudu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h21.


 
 
 
 
Partenaires

Hébergement Web