Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VBA - ACCESS 2002 SP3 - Création formulaire - Help !!!!! [ Archives Visual Basic / VBA ] (trymeup)

lundi 8 novembre 2004 à 00:21:36 | VBA - ACCESS 2002 SP3 - Création formulaire - Help !!!!!

trymeup

Bonjour, je suis vraiment novice en VBA et j'ai un soucis que je n'arrive pas à régler.

J'ai une requête qui me renvoie des résultats avec un nombre de colonnes qui peut varier. Donc impossible de l'afficher dans un formulaire figé. Aussi, j'ai pas mal recherché de code solutionner ce problème, et dans les sources j'ai trouvé le code suivant :

http://www.vbfrance.com/code.aspx?ID=26450

Dans le principe c'est tout à fait ce qu'il me faut. Seulement voila :

1) Je n'ai pas les composants DAO dans mon Access 2002
(normal ?) mais que ADO

2) ctl.DeleteControl "F_AFFICHAGE", ctl.Name ne marche pas chez moi !

Il faudrait adapter ce bout de code en ADO, ce dont je suis incapable, et faire en sorte que cette fonction de suppression des controles du formulaire fonctionne

Merci bcp de votre aide

lundi 8 novembre 2004 à 10:24:32 | Re : VBA - ACCESS 2002 SP3 - Création formulaire - Help !!!!!

inthecorner

Quand tu es dans Microsoft Visual Basic..
Tu vas dans Outils--->Références.
Et tu ajoutes Microsoft DAO 3.6 Object Library

Amitiés

lundi 8 novembre 2004 à 14:22:16 | Re : VBA - ACCESS 2002 SP3 - Création formulaire - Help !!!!!

trymeup

Merci pour le DAO, effectivement j'avais pas du tout cherché ca au bon endroit...

Bon j'ai adapté le code mentionné plus haut à mes exigences :


Public Function create_form(sql As String) As Boolean
Dim frm As Form
Dim rst As DAO.Recordset
Dim Db As DAO.Database
Set Db = Application.CurrentDb
Dim ctl As Control
Dim i, j As Integer
' --Ouvrir le formulaire en mode modification et caché
DoCmd.OpenForm "Forml_X_Etats", acDesign, , , , acHidden
' --suppression de tous les contrôles avant de les créer de nouveau
For Each ctl In Forms!Forml_X_Etats.Controls
ctl.DeleteControl "Forml_X_Etats", ctl.Name
Next ctl
' --Source de données de mon formulaire
Forms![Forml_X_Etats].RecordSource = sql
Set rst = Db.OpenRecordset(sql)
' --nous ne pensons pas que vous aurez plus de 100 contrôles
Dim controle(0 To 100) As Control
' --Création des contrôles
If rst.RecordCount <> 0 Then
i = 0
j = 1000
While i < rst.Fields.Count

' -- Créer le contrôle i
Set controle(i) = CreateControl("Forml_X_Etats", acTextBox)
' --lui affecter un nom
controle(i).Name = rst.Fields(i).Name
' --le positionner sur le formulaire
controle(i).left = 100 + j
' --Définir sa largeur
controle(i).Width = 1150
' --source de données de ce contrôle
controle(i).ControlSource = rst.Fields(i).Name

i = i + 1
j = j + 1150
Wend
End If

rst.Close
Set rst = Nothing
Set Db = Nothing
' --Sauvegarder le formulaire
DoCmd.Save acForm, "Forml_X_Etats"
DoCmd.Close acForm, "Forml_X_Etats"
End Function



Le code fonctionne si le formulaire initial est vide. Seulement s'il comporte deja des controles, la fonction pour les supprimer ne marche pas :

ctl.DeleteControl "Forml_X_Etats", ctl.Name[/i] ne marche pas et me donne une erreur 438 "propriété ou méthode non gérée par cet objet"

Par quoi la remplacer pour vider mon formulaire ?

Deuxième petite chose, j'aimerai que le format des contrôles que j'ajoute soit le format "standard" (nombres avec le séparateur de millier en blanc), mais je ne connais pas la syntaxe a ajouter.

Merci

lundi 8 novembre 2004 à 15:03:30 | Re : VBA - ACCESS 2002 SP3 - Création formulaire - Help !!!!!

trymeup

heu... je vais me répondre tout seul :-)

j'ai résolu mon problème pour effacter les controles existant, il faut simplement modifier la fonction. De plus, j'ajoute qu'utilisée telle quelle, elle ne fait pas ce qu'on lui demande: en effet, le fait de supprimer le controle dans la boucle For Each, fait sauter access au controle suivant. Donc la boucle supprime un controle sur deux. Voici le code que j'ai mis pour corriger tout cela, et qui fonctionne tant bien que mal:


' --suppression de tous les contrôles avant de les créer de nouveau
boucle:
i = 0

For Each ctl In Forms!Forml_X_Etats.Controls
i = 1
DeleteControl "Forml_X_Etats", ctl.Name
Next ctl

While i = 1
GoTo boucle:
Wend


Merci pour ceux qui voudront bien répondre a ma deuxieme question, a savoir comment affecter le format "standard" a un controle.



Cette discussion est classé dans : vba, access, code, formulaire, sp3


Répondre à ce message

Sujets en rapport avec ce message

SubForm Vba Access [ par JeanMimi75 ] Comment faire pour modifier des objets placés dans un sous-formulaire Access ?par exemble : comment (à partir d'une procédure) rendre visible/invisibl Access et vba [ par tenthor ] Bonjour,J'aimerais savoir si c'est possible de passer des paramètre à un formulaire.J'ai deux tables en relation "un à plusieurs" et j'aimerais quand Code barre vba access (URGENT) [ par HakNouveau ] bonjour, je dois créer une interface sur vba avec access où je dois afficher une dizaine de code barre dans une même pagele truc, c'est qu'il faut pou Recherche multicritères dans un sous formulaire [ par army_cindy ] Bonjour je suis un débutant en vba access, je me suis inscrit pour pouvoir accélérer mon auto formation en vba access avec ce site.Ainsi j'ai deux pré MS ACCESS : ouvrir un formulaire à partir d'un autre formulaire [ par Safireo ] Salut ! J'ai crée ma petite base de donnée sous access et je dois faire une interface utilisateur de qualité. J'ai donc pensé à créer un formulaire c En-tête d'état / de formulaire [VBA Access] [ par observatoire ] Bonjour,Je souhaite mettre en forme un état (et par la même occasion un formulaire) déjà existant, en réadaptant les contrôles, en fonction de la requ Ajouter des rectangles à un formulaire access par vba [ par trainkill ] Bonjour,J'aimerai savoir comment, via du code vba, générer dynamiquement des rectangles dans un formulaire Access donné.J'ai essayé de construire des VBA + ACCESS [ par nonaud ] Salut à tous,Récemment dans le cadre de mon boulot, j'ai hérité de la mintenance d'une base access98 du genre "fait maison".Je bricole bien un peu de pb pour ouvrir un formulaire en VBA dans access [ par leroi1024 ] Bonjour. Je rencontre un problème pour ouvrir un formulaire dans access par programmation. Je voudrais qu'en cliquant sur un bouton, un autre formulai VBA ACCESS [ par yakusa82 ] Bonjour,Je débute tout juste en VB, j'aurais besoin d'aidevoila j'ai sous access 4 requetes que j'exécute l'une aprés l'autre manuellement "double cli


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.