Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 27/05/2011, 16h01   #1
Membre du Club
 
Homme Yves
Inscription : novembre 2006
Messages : 114
Détails du profil
Informations personnelles :
Nom : Homme Yves
Localisation : Belgique

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2006
Messages : 114
Points : 50
Points : 50
Par défaut Comment récupérer les étiquettes de outes mes listes de tous les formulaires de ma base

Bonjour,

Je souhaiterai lister dans une table l'ensemble des etiquettes de tous les contrôles de tous les formulaires de ma base de données. L'idée étant de permettre un remplacement systématique de tout quand on passe a une autre langue.

Je parviens sans problème à lister toutes les étiquettes qui ne sont rattachées à aucun controle. Mais dès que j'ai une listbox ou un textbox (je souhaite accéder au nom et au caption de l'étiquette ratachée au contrôle), ma routine se plante sur CStr(Ctrl.Caption).
J'ai essayé en remplacant Ctrl.ControlType = acListBox par Ctrl mais ça ne change rien

Ca doit être trivial mais je ne vois pas, même après moultes recherches sur le forum. Auriez-vous une idée, svp?


Je vous remercié.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Private Sub Command0_Click()
Dim oDb As DAO.Database
Dim obj As AccessObject
Dim frm As Form
Dim Ctrl As Access.Control
Dim rst As DAO.Recordset
 
 
Set oDb = CurrentDb
'Lance la création de la table dico si besoin
CreerTableDico oDb
'ouvre un recordset sur la table, il faut qu'elle soit créée au préalable
Set rst = oDb.OpenRecordset("tblFrmctrl")
 
For Each obj In Application.CurrentProject.AllForms
    'Demande confirmation pour le formulaire en question
    'Select Case MsgBox("Formulaire : " & obj.Name, vbQuestion + vbYesNoCancel)
    'si OUI
    'Case vbYes
      'Ouvre le formulaire en mode création
        DoCmd.OpenForm obj.Name, acDesign
        Set frm = Forms(obj.Name)
       'Applique le propriété à chaque controle
        For Each Ctrl In frm.Controls
            If Ctrl.ControlType = acListBox And Ctrl.Parent.Name = frm.Name Then
                'Enrichit la table du dictionnaire
                rst.AddNew
                rst.Fields("FrmName") = CStr(Ctrl.Parent.Name)
                rst.Fields("CtrlName") = CStr(Ctrl.Name)
                rst.Fields("CaptionFr") = CStr(Ctrl.Caption)
                rst.Fields("CaptionNl") = "xxxxx"
                rst.Update
 
            End If
        Next Ctrl
        'Enregistre et ferme le formulaire
        DoCmd.Close acForm, obj.Name, acSaveYes
    'Si annuler alors, quitter le traitement
    'Case vbCancel
    '    Exit Sub
    'End Select
Next obj
 
rst.Close
Set rst = Nothing
Set oDb = Nothing
End Sub
Dermochelys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 16h44   #2
Membre du Club
 
Homme Yves
Inscription : novembre 2006
Messages : 114
Détails du profil
Informations personnelles :
Nom : Homme Yves
Localisation : Belgique

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2006
Messages : 114
Points : 50
Points : 50
Bon j'ai résollu le problème en remplacant ceci

Code :
If Ctrl.ControlType = acLabel And Ctrl.Parent.Name = frm.Name Then
par ceci

Code :
            If Ctrl.ControlType = acLabel Then
Désolé pour le dérangement.
Dermochelys 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 20h08.


 
 
 
 
Partenaires

Hébergement Web