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

Access Discussion :

Copier des données dans le presse papier


Sujet :

Access

  1. #1
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut Copier des données dans le presse papier
    Encore moi et oui !

    Voici mon but aujourd'hui : un peu à la manière d'un site marchand je remplie un "caddie" donc un table.
    A partir de cette table je crée une requête pour ne conserver que 3 champs distincts.

    J'aimerais sur clic d'un bouton copier l'ensemble de ces 3 champs dans le presse papier pour les coller ensuite dans une autre application.

    Les seuls choses que j'ai trouvé sont le "copier vers" mais qui me pose problème puisque je suis obligé de lui définir un format de sortie et un fichier associé, genre si je lui défini un format .xls je dois lui donner un chemin et un nom de fichier Excel dans lequel il copiera les données.
    Or je ne veux que copier les données vers le presse papier et m'en servir ultérieurement.

    Si quelqu'un a une idée je suis prenneur

    Merci à vous

  2. #2
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    je reviens car j'ai lu dans le platinium d'Access 97 ce qui suit:

    Contrairement à Visual Basic, Access ne dispose pas d'un objet Clipboard.
    Mais il est possible de simuler cette fonctionnalité grâce à l'API de windows.

    Quelqu'un a t'il eu recours à cette méthode ?

  3. #3
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    bon je crois qu'il me sera plus facile encore d'exporter sous excel et de créer une macro sous Excel qui me sélectionnera mes cellules et fera un copier de cette sélection !

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Si tu es sous Access 2000 ou + regarde ce poste.
    Si tu es sous 97, alors effectivement il faut coder avec des Api's...
    J'ai retrouvé ce bout de code. Après toutes ces années, eh ben, il fonctionne encore (et sous XP en +)

    Voici le code:
    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
    54
    55
    56
     
    Option Compare Database
    Option Explicit
     
    '******************************************************************
    ' Purpose: Using Clipboard for Office 97 applications
    ' Date: 20-03-1999
    ' Author: JPA
    ' To Do: Add a specific routine for errors
    '******************************************************************
     
    Private Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function EmptyClipboard Lib "User32" () As Long
    Private Declare Function CloseClipboard Lib "User32" () As Long
    Private Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long
     
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
     
    Private Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
     
    Private Const GMEM_MOVEABLE = &H2
    Private Const GMEM_ZEROINIT = &H40
    Private Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
    Private Const CF_TEXT = 1
    Private Const MAXSIZE = 4096
     
    Public Sub CopyToClipboard97(MyString As String)
    Dim lGlobalMemory As Long
    Dim lLockMemory As Long
    Dim lCopyMemory As Long
    Dim lReturn As Long
     
      On Error GoTo L_ErrClipboad
      lGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1)
      lLockMemory = GlobalLock(lGlobalMemory)
      lLockMemory = lstrcpy(lLockMemory, MyString)
      If GlobalUnlock(lGlobalMemory) <> 0 Then
        Err.Raise vbObjectError + 1001
      End If
      If OpenClipboard(0&) = 0 Then
        Err.Raise vbObjectError + 1002
      End If
      lReturn = EmptyClipboard()
      lCopyMemory = SetClipboardData(CF_TEXT, lGlobalMemory)
      If CloseClipboard() = 0 Then
         Err.Raise vbObjectError + 1003
      End If
     
    L_ExClipboad:
      Exit Sub
    L_ErrClipboad:
      MsgBox "Erreur: impossible de copier dans le presse-papier !", 48
      Resume L_ExClipboad
    End Sub
    A utiliser comme ce ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub cmdCopy_Click()
    Dim strData$
        Me!Text0.SetFocus
        Me!Text0.SelLength = Len(Me!Text0.Text)
        strData = Me!Text0.Text
        CopyToClipboard97 strData
    End Sub
    [Edit Modo]
    Peut-être une source intéressante pour le forum
    [/Edit Modo]

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Alors ça c'est super sympa je vais voir ça et te tiens au courant.

    J'utilise 2000 effectivement mais c'est mon platinium qui n'est plus à jour .
    Et comme je n'avais pas d'autre info je faisais avec les moyens du bord.

    Merci encore

    J'ai un doute quand même , car j'ai l'impression que l'autre poste que tu me propose est surtout fait pour copier/coller une zone de texte dans une autre zone de texte, non ?

    Je récap l'origine de ma manip :

    J'ai un formulaire dans lequel je saisie des critères pour sélectionner un article précis.
    Dans ce formulaire, j'ai aussi un sous-form qui lui affiche et implémente les articles sélectionnés.
    Ce sous formulaire rempli un table et je fais une requête sur cette table pour ne garder que certains champs qui m'interesse.

    Ce sont ces champs là que je veux copier dans le presse papier pour un usage ultérieur et extérieur à Access.

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Dans ce cas il est inutile d'utiliser le presse-papier.
    Le fait que tu affiches certaines infos (qui t'intéressent) dans le sous formulaire te permet de déterminer la chaîne SQL qui filtre ces enregistrements là.
    De ce fait, tu peux à tout moment, interroger la base pour ressortir lesdits enregistrements à l'aide de la clause SQL que tu auras par contre elle, stockée dans une variable ou une propriété.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Ok mais c'est la dernière partie qui est floue pour moi.

    D'après ce que tu dis on est toujours resté dans Access pour tirer partie des infos.
    Or moi je n'arrive pas à voir comment je peux utiliser mon SQL une fois stocké, même dans une variable, car derrière la Destination c'est JDEdwards.

    Je voudrais coller le contenu de ma requête dans un "formulaire" de JDE, car il accepte le coller du presse papier pour peu que le format qu'il reçoit soit identique à celui de ces propres champs (normal).

    Et donc dans cette requête (Access) j'ai trois champs avec plusieurs enregistrements (mais jamais un nombre défini) et je veux les exporter dans les champs JDE, d'où la recherche sur le presse papier.


    Peut être que tu me comprends mieux comme ça.

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    A bien oui, mais si tu ne dis pas tout je ne peux pas deviner...
    Bref effectivement tu peux alors exploiter le fonction Copy d'Access sans toutes ces API's...

    Quand j'écris que tu possèdes ta clause SQL, c'est elle qui va te servir à monter ta requête:
    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
    Sub CopyRecords(ByVal MyCondition As Integer)
    Dim oQDefs As dao.QueryDef
    Const MY_SQL_CLAUSE As String = "SELECT * FROM MYTABLE WHERE MyField = " & MyCondition & ";"
    Const MY_QUERY_NAME As String = "TEMP_JDEdwards_Data"
     
      On Error Resume Next
      Set oQDefs = CurrentDb.QueryDefs(MY_QUERY_NAME)
      If Err <> 0 Then
        Set oQDefs = CurrentDb.CreateQueryDef(MY_QUERY_NAME, MY_SQL_CLAUSE)
      End If
     
      DoCmd.OpenQuery MY_QUERY_NAME, acViewNormal, acReadOnly
      DoCmd.RunCommand acCmdSelectAllRecords
      DoCmd.RunCommand acCmdCopy
      DoCmd.Close acQuery, MY_QUERY_NAME, acSaveNo
      Set oQDefs = Nothing
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Peut-être une source intéressante pour le forum
    Un tuto complet sur cette partie de l'api est prévu... Il faut juste que je trouve le temps

  10. #10
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Merci Argy, je regarde ça cet aprem et te tiens au courant de l'évolution !

  11. #11
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Comme promis je repasse et effectivement on touche au but

    ça marche nickel sauf que je conserve le nom des champs dans le copier.
    Y a t'il un moyen de supprimer cette info pour ne conserver que les données sélectionnées?
    Parce que si je ne peux pas m'en séparer, ça ne va pas aller.
    Il faut vraiment ne garder que les données.

    sinon c'est super et très simple en fait, suffit de connaître les bonnes commandes !
    Merci en tout cas de m'avoir aidé jusque là !

  12. #12
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Personne pour me dire comment je peux supprimer l'entête des champs avant de faire mon copier ?

    Si je ne trouve pas comment faire, il faudra que je procède autrement.

Discussions similaires

  1. [XL-2002] Copier les données dans le presse papier en fermant un classeur
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/04/2009, 14h02
  2. Réponses: 5
    Dernier message: 22/02/2007, 12h05
  3. copier/coller des graphiques dans le presse-papier
    Par legos dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/01/2007, 13h04
  4. Réponses: 3
    Dernier message: 06/07/2005, 11h27
  5. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54

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