> Tous les forumsAutres langages

 [RESOLU] access VBA - màj en cascade de liste
Statut du sujet : NON RESOLU Imprimer
 GCUSSE
  Posté le 26/08/2003 @ 11:15  
 Petit astucien

171 Messages
Hello, voici mon ptit bleme que je n'arrive pas a resoudre. Je plante le decor: J'ai un formulaire et plusieurs sous-formulaires. Dans le principal se trouve une liste de selection d'enregistrement. Dans les sous fourmulaires se trouvent egalement des listes de sélection qui vont changer selon l'enregistrement selectionné dans le principal. Toutes mes listes dans le form principal et les sous-form commenecnt par LST. Tous mes sous formulaires commencent par SF_ . Cette charte sera respectée dans tous les formaulires que je vais créer pour cette base. Je desire mettre au point un module mise à jour qui va actualiser toutes les listes et ce quel que soit le formulaire qui soit chargé car je ne vais pas m'amuser à en faire un qui va avec chaque formulaire créé.. Voici où j'n suis arrivé: Public Sub MAJ_PRATIQUANTS() Dim liste As Control Dim listeSF As Control Dim nomSF As String Dim sf As Form Dim frm As Form For Each frm In Forms For Each liste In frm.Controls Select Case Left(liste.Name, 3) Case "LST" liste.Requery Case "SF_" 'nomSF = "me." & liste ' For Each listeSF In sf.Controls ' Select Case Left(listeSF.Name, 3) ' Case "LST" liste.Requery ' End Select ' Next listeSF End Select Next liste Next frm End Sub comme vous pouvez le constater, pour ce qui est du formulaire principal, cela fonctionne mais c'est au moment de passer dans les sous formaulires que cela coince.... merci de vos reponses
 Afficher le profil de GCUSSEEnvoyer un message privé à GCUSSE
 
 
Publicité
 GCUSSE  Posté le 27/08/2003 à 16:07  
Petit astucien

171 Messages
bingo j'ai trouvé et cela fonctionne. Voici le Code:
Dim unFORM As Form Dim unCTRL As Control Dim unCTRLSF As Control For Each unFORM In Forms For Each unCTRL In unFORM.Controls Select Case Left(unCTRL.Name, 3) Case "LST" unCTRL.Requery Case "SF_" For Each unCTRLSF In unFORM.Controls.Item(unCTRL.Name).Controls Select Case Left(unCTRLSF.Name, 3) Case "LST" ' unFORM.Controls.Item(unCTRL.Name).Controls.Item(unCTRLSF.Name).Requery unCTRLSF.Requery End Select Next unCTRLSF End Select Next unCTRL Next unFORM End Sub
Et voilà, il m'est maintenant possible d'appeler mon module de mise à jour par n'importe quel formulaire, avec n'importe quel sous-formulaire, sans les spécifier explicitement. Tout ce que je doit faire c'est bien respecter mon protocole d'appellation des mes listes en "LST" et mes sous form en "SF_". Celà à pris du temps, mais en rassemblant toutes les connaissances et les esprits de déduction et d'analyse de plusieurs personnes, on y arrive enfin. Je le mets donc à disposition à toute fins utiles pour les membres du forums (on ne sait jamais) parce qu'il me semble que ce module est très interessant pour tous ceux qui en ont marre de ce coltiner 2 lignes de code pour l'actualisation d'un controle de sous-formulaire et ce à chque controle et pour chaque formulaire.
Afficher le profil de GCUSSEEnvoyer un message privé à GCUSSE
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page