IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[ACC 2003] [OLE] Drag & drop entre listes


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [ACC 2003] [OLE] Drag & drop entre listes
    Bonjour à tous,

    Je débute en programmation VBA (plus expérimenté en analyse : SAS, R,...) mais j'ai plaisir à automatiser mes applications de cette manière.
    Mon projet actuel est de créer une interface de paramétrage de requêtes complexes, en spécifiant les jeux de tables à prendre en compte.

    Je souhaiterais permettre un drag & drop entre 2 listes d'un formulaire Access (une liste source qui ne change pas et une liste cible où l'on ajoute/supprime)

    J'ai trouvé des pistes en VB6 qui font appel aux fonctions de type OLEdrag, OLE_XPOS_PIXELS et OLE_YPOS_PIXELS :
    (silkyroad propose un exemple simple pour Excel ici)

    Voici ce que j'ai implémenté pour l'instant :
    Il y a des erreurs car ces un code glané sur le web et je ne comprend pas bien les fonctions qui entrent en jeu. Mais ce serait chouette d'avoir un tuto sur le sujet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    48
    49
    50
    51
    52
    53
     
    ' à l'ouverture : liste les tables liées de la base dans la liste0
    Private Sub Form_Load()
    Dim oDb As DAO.Database
    Dim oTbl As DAO.TableDef
    Set oDb = CurrentDb
    'Pour chaque table
    For Each oTbl In oDb.TableDefs
    'Si la table est liée alors afficher son nom
    If oTbl.Attributes > 50 Then Liste0.AddItem oTbl.Name
    Next oTbl
    End Sub
     
    Private Sub Liste0_MouseDown(ByVal Button As Integer, _
        ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, _
        ByVal y As stdole.OLE_YPOS_PIXELS)
     
        'Si le bouton de gauche est cliqué
        If Button = 1 Then boolDrag = True
    End Sub
     
    Private Sub Liste0_MouseMove(ByVal Button As Integer, _
        ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, _
        ByVal y As stdole.OLE_YPOS_PIXELS)
     
         If Button = 1 And boolDrag Then
              Liste0.OLEDrag
              Liste0.MousePointer = ccSize
              Set objDrag = Liste0.SelectedItem
         End If
     
    End Sub
     
    Private Sub Liste2_MouseMove(ByVal Button As Integer, _
        ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, _
        ByVal y As stdole.OLE_YPOS_PIXELS)
     
        If boolDrag And Not objDrag Is Nothing Then
            'Ajoute un élément de Liste0 vers Liste2
            Liste2.ListItems.Add , , objDrag.Text
            boolDrag = False
     
            Liste0.MousePointer = ccDefault
            'Supprime l'élément dans la Liste0
            'Liste0.ListItems.Remove (ListView1.SelectedItem.Index)
     
            'Désélectionne l'élément dans la liste0
           If Liste0.ListItems.Count > 0 Then
                Liste0.ListItems(1).Selected = False
                Set Liste0.SelectedItem = Nothing
           End If
        End If
    End Sub
    Mais il me semble que les fonctions OLE ne sont pas tolérées par mon environnement : Access 2003 sur WinXP.
    Lorsque je charge le formulaire, j'obtiens un message d'erreur indiquant :
    L'expression Sur chargement entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure du même nom.
    Ensuite lorsque je déplace la souris, j'obtiens le message :
    L'expression Sur souris déplacée entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure du même nom.

    Bref, tout m'indique que mes codes avec "OLE" ne marchent pas.
    J'ai le même genre d'erreur avec l'exemple de Silkyroad présenté plus haut.

    Faut-il installer des références pour que les fonctions OLE soient reconnues ?
    Lorsque je tape 'OLE_XPOS_PIXELS' sur Goo.. je n'obtiens que des lignes de codes VB6, est-ce qu'il est possible de les utiliser en VBA ?

    Espérant avoir des retours ou des idées, je vous remercie de m'avoir lu.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai grandement avancé grâce à l'aide Microsoft qui indique comment implémenter le drag & drop via des évènements 'MouseMove' ,'MouseDown' et 'MouseUp'
    http://support.microsoft.com/kb/287642/fr

    C'est un peu fastidieux mais ça marche.

    Je me demande toujours s'il est possible de faire tourner l'exemple de Silkyroad sur Access 2003...
    Pourquoi ces messages d'erreur ???

Discussions similaires

  1. [WB20] Drag and drop entre listes
    Par mimi1255 dans le forum WebDev
    Réponses: 0
    Dernier message: 03/04/2015, 11h28
  2. Drag and Drop entre deux listes
    Par tom572007 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 15/05/2009, 16h03
  3. Drag and drop entre deux Liste BOX
    Par simoinfonet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/04/2008, 17h39
  4. Drag and Drop entre deux list view
    Par mkaffel dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/10/2007, 21h52
  5. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 01h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo