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 06/12/2010, 16h39   #1
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 674
Points : 674
Par défaut Changer la propriète "control source" par code

Bonjour à tous,

je voudrais savoir si c'est possible de changer la propriète "control source" d'un champ present en plusieurs etats d'une application. Je m'explique:

J'ai une application avec une trentaine d'etats. Dans plusieurs de ces etats, j'ai une textbox avec source "adr_complet.ville".

Je suis en train de faire un grand changement, et j'avais besoin de changer tous ces sources à "T_comptes.ville".
J'essaye de le faire un par un, mais il sont beaucoup

Est-ce qu'il y a une faisson de le faire par code, avec une boucle For-Each, par exemple? C'est-à-dire, ouvrir chaque etat, verifier la source de controle des champs et faire le changement?

J'ai essayé
Code :
1
2
3
4
5
6
7
8
9
10
Dim et As Access.Report
For Each et In application.CurrentProject
    MsgBox et.Name
    DoCmd.OpenReport et.Name, acViewDesign
    Dim txt As TextBox
    For Each txt In et
        If txt.ControlSource = "adr_complet.ville" Then txt.ControlSource = "T_comptes_complet.ville"
        DoCmd.Close acReport, et.Name, acSaveYes
    Next txt
Next et
mais il na marche pas... (BUG sur application.CurrentProject je pense)


Merci d'avance pour vos reponses...
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 20h10   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 080
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 080
Points : 11 615
Points : 11 615
Bonjour,
L'utilisation des All.... est un peu spéciale. Ils n'acceptent que le variable Object.
Par contre pour parcourir il faut une variable Report.

Voici l'astuce.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Dim rpt As Object
Dim vrpt As Form
dim ctrl as Control
 
For Each rpt In CurrentProject.AllReports
       DoCmd.OpenReport rpt.Name, acDesign
       Set vrpt = Reports("[" & rpt.Name & "]")
 
       For Each ctrl in vrpt.controls
            if ctrl.controlSource = "AncienneSource" then ctrl.controlSource = "NouvelleSource"
 
       Next
 
       DoCmd.Close acreport, rpt.Name, acSaveYes
 
Next
A partir de 2010 la modif d'un champ d'une table met à jour tous les controles associés.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 09h11   #3
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 674
Points : 674
Bonjour et merci de ta reponse loufab

J'ai un erreur de compatibilité de type sur la ligne
Code :
Set vrpt = Reports("[" & rpt.Name & "]")

Any idea?

EDIT:

Par contre si je change
pour
ou même:
J'ai un erreur sur
Code :
If ctrl.ControlSource = "adr_complet.ville"
("propriete ou methode non gerée par cet objet")
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 09h29   #4
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 674
Points : 674
J'ai reussi

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim rpt As Object
Dim vrpt As Report
Dim ctrl As Control
 
For Each rpt In CurrentProject.AllReports
       DoCmd.OpenReport rpt.Name, acDesign
       Set vrpt = Reports("[" & rpt.Name & "]")
 
       For Each ctrl In vrpt.Controls
            If TypeOf ctrl Is TextBox Then
                If ctrl.ControlSource = "adr_complet.ville" Then ctrl.ControlSource = "T_comptes_complet.ville"
            End If
       Next
 
       DoCmd.Close acReport, rpt.Name, acSaveYes
 
Next
Il a manqué de vérifier s'il y avait la propriète ControlSource...

Merci beaucoup encore une fois
Marc_27 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 15h35.


 
 
 
 
Partenaires

Hébergement Web