Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
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 13/04/2006, 13h32   #1
Invité régulier
 
Inscription : avril 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 65
Points : 9
Points : 9
Par défaut Récupération nom champ dans liste et faire pointer dessus

J'aimerais savoir si c'est possible de faire pointer la souris ou la tabulation sur un champ du formulaire en ayant choisi le champ en question, au préalable, dans une liste contenant tous les champs du formulaire. Si c'est possible, ce serait sympa de m'expliquer comment faire.
Michel Hubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 14h03   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Si tu es dans un form, présente ta liste de nom (maListeDeChamp) dans une combobox et sur l'événement :

'AfterUpdate' (AprèsMAJ) fait setfocus(maListeDeChamp).

Tu peux créer ta liste de champ en utilisant la collection Controls du form.

A+
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 16h38   #3
Invité régulier
 
Inscription : avril 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 65
Points : 9
Points : 9
Je comprends pas trop les termes combobox et collection de contrôle.

j'ai essayé en créant une liste de choix contenant le nom des divers champs du formulaire.

J'ai également testé la procédure évenementielle que tu ma proposé mais rien.
Michel Hubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 18h09   #4
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 882
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 882
Points : 4 500
Points : 4 500
N'ayant rien trouvé, j'ai fait une petite fonction à ajouter dans ton module de formulaire :

Citation:
Envoyé par Code
Option Explicit

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

'   attribue la position de la souris
Private Declare Function apiSetCursorPos Lib "user32" Alias "SetCursorPos" ( _
        ByVal X As LongByVal Y As LongAs Long

'   retourne le rectangle d'un objet windows
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

Private Declare Function apiGetFocus Lib "user32" _
        Alias "GetFocus" () As Long

Private Sub MoveMyMouseToControl(ByVal strCtl As String)

Dim ctl As Control
Dim hCtl As Long
Dim myRect As RECT

For Each ctl In Me.Controls
    If ctl.name = strCtl Then
        ' nous calculons le rectangle en pixels
        '  dans lequel s'inscrit le contrôle
        '  nous calculons les coordonnées du centre du
        '  rectangle afin d'y placer la souris
        ctl.SetFocus
        hCtl = apiGetFocus
        GetWindowRect hCtl, myRect
        apiSetCursorPos myRect.Left + (myRect.Right - myRect.Left) / 2, _
                        myRect.Top + (myRect.Bottom - myRect.Top) / 2
        
    End If
Next ctl

Set ctl = Nothing

End Sub
pour appeler la fonction

Code :
MoveMyMouseToControl "NomdeMonContrôle"
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 18h41   #5
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 882
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 882
Points : 4 500
Points : 4 500
Ensuite faire une liste des contrôles ...

mettre liste valeurs sur la propriété Origine source de txtGo (ma combo de sélection de contrôles)

Citation:
Envoyé par Code
Private Sub Form_Load()

' constitution de la liste des contrôles ...
Dim ctl As Control
Dim strList As String

For Each ctl In Me.Controls
    Select Case ctl.ControlType
        Case acComboBox, acTextBox, acListBox
        ' nous choisissons certains types de contrôles
            strList = strList & ctl.name & ";"
            
        Case Else
    End Select
Next ctl

Me.txtGo.RowSource = strList

Set ctl = Nothing
End Sub
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 23h47   #6
Faw
Membre Expert
 
Inscription : juin 2004
Messages : 1 169
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 1 169
Points : 1 162
Points : 1 162
Envoyer un message via MSN à Faw
Et comme ça (sans vouloir t'offenser cafeine)?
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
Private Sub Form_Load()
 
' constitution de la liste des contrôles ...
Dim ctl As Control
Dim strList As String
 
For Each ctl In Me.Controls
    Select Case ctl.ControlType
        Case acComboBox, acTextBox, acListBox
        ' nous choisissons certains types de contrôles
            strList = strList & ctl.Name & ";"
 
        Case Else
    End Select
Next ctl
 
Me.Modifiable0.RowSource = strList
Set ctl = Nothing
End Sub
 
'*******************************
 
Private Sub Modifiable0_AfterUpdate()
Dim ctl As Control
For Each ctl In Me.Controls
 If ctl.Name = Modifiable0 Then
 ctl.SetFocus
 End If
 Next ctl
End Sub
Faw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 01h02   #7
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 882
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 882
Points : 4 500
Points : 4 500
Hello,

aucune offense
d'autant que l'esprit est le même, tous les autres zigouigouis que j'ai rajoutés sont là pour déplacer le pointeur de la souris sur le contrôle, ce que ne fait pas ta version simplifiée du code
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 01h49   #8
Faw
Membre Expert
 
Inscription : juin 2004
Messages : 1 169
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 1 169
Points : 1 162
Points : 1 162
Envoyer un message via MSN à Faw
Des zigouigouis que je vais retenir volontiers...Merci cafeine.

Faw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 08h32   #9
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
bon alors vu qu'on offense pas :
Code :
1
2
3
4
5
6
7
8
9
Private Declare Function apiSetCursorPos Lib "user32" Alias "SetCursorPos" ( _
                                         ByVal X As Long, ByVal Y As Long) As Long
 
Private Sub MoveMyMouseToControl(pCtrl As String)
    Dim lx As Long, ly As Long, lw As Long, lh As Long
    Call Me.Controls(pCtrl).accLocation(lx, ly, lw, lh)
    apiSetCursorPos lx + lw / 2, _
                    ly + lh / 2
End Sub

Attention fonction non documentée; risques et périls et tout ça.


Mais c'est diablement pratique, on n'a pas besoin de mettre le focus sur le contrôle pour déterminer sa position sur l'écran; et ça marche avec tous les contrôles.
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 10h06   #10
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 882
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 882
Points : 4 500
Points : 4 500
Super !

évidemment c'est plus pratique et rapide

et parfois ce n'est pas plus mal d'avoir plusieurs méthodes pour un même résultat.

__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 10h22   #11
Faw
Membre Expert
 
Inscription : juin 2004
Messages : 1 169
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 1 169
Points : 1 162
Points : 1 162
Envoyer un message via MSN à Faw
Arkham46
ça m'a effectivement fait penser à ta classe images & co avec là,
un déplacement de contrôles...

(j'essaye toujours de comprendre )
Faw est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web