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

VB 6 et antérieur Discussion :

Copier une image et un texte associé simultannément


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Points : 46
    Points
    46
    Par défaut Copier une image et un texte associé simultannément
    Bonjour à tous,

    Je suis sur un projet en VB6 et je dois copier une image et le texte qui lui est associé de sorte que lors d'un collage (dans Word par exemple) les deux soit collés en même temps.

    Et là, je me rends compte que Clipboard sous VB6 est quelque peu...euh...limité...
    Pour copier séparément l'image et le texte, pas de problème, mais comment les encapsuler ensemble dans un même "collage" ?

    Si quelqu'un connait une solution, ça me retirerait une fière chandelle du pied.

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    L'objet clipboard peut contenir à la fois du texte et une image, tu peux mettre les 2 en mémoire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Clipboard.Clear
    Clipboard.SetText Text1
    Clipboard.SetData Picture1.Picture, vbCFBitmap
    Ensuite sous Word, si à la main, je fais coller, je n'ai que le texte, mais si je fais collage spécial, image en mode point, j'ai bien l'image. Je ne sais pas comment piloter Word avec VB (et ça m'interesse pas trop à vrai dire ) mais il doit y avoir moyen de coller image et texte par code j'imagine.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse, mais le problème c'est justement d'avoir directement l'image et le texte lors d'un collage "normal".

    Si ça ne tenait qu'à moi, je ferais comme tu dis. Le problème vient des utilisateurs du logiciel qui sont pris de sueurs froides dès qu'on leur demande de faire plus de deux clics de suite...
    Donc le but c'est que l'utilisateur lambda clic sur le bouton copier dans mon application, puis lorsqu'il veut coller ailleurs (généralement sous word), ça lui colle en même temps l'image et le texte associé sans qu'il ait besoin de faire autre chose qu'un "Ctrl+V".

    J'avais pensé à englobler l'image et le texte dans un metafichier puis copier ce metafichier. Reste à savoir si ça marche et surtout comment ça marche.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par OhMonBato
    Je ne sais pas comment piloter Word avec VB (et ça m'interesse pas trop à vrai dire ) mais il doit y avoir moyen de coller image et texte par code j'imagine.
    C'est possible en effet. Mais est-ce bien toujours Word la destination ?

  5. #5
    Membre confirmé Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 568
    Points
    568
    Par défaut
    Citation Envoyé par kronky
    J'avais pensé à englobler l'image et le texte dans un metafichier puis copier ce metafichier. Reste à savoir si ça marche et surtout comment ça marche.
    Ne serait-ce pas un "collage spécial" du coup ???

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Points : 46
    Points
    46
    Par défaut
    Je donne quelques précisions en plus :

    * La cible n'est pas systématiquement word. Ca peut être n'importe quel traitement de texte ou logiciel de présentation.

    * Le contexte
    Parmi les diverses info traitées par l'application, il y a des photos de voirie prises en vue subjective. Il y a deux types d'info texte associées aux photos :
    - des commentaires que peut saisir l'utilisateur
    - des infos concernant la photo elle même (nom du fichier, date, nom de la rue...)

    Parfois, l'utilisateur a besoin de récupérer la photo et les textes associés pour les utiliser ailleurs. Exemple le plus courant : les coller dans un traitement de texte pour les intégrer à un rapport.

    Pour des raisons de simplicité et parce que l'utilisateur final n'est généralement pas un habitué de l'informatique, il faut qu'il puisse en un copier-coller récupérer à la fois texte et image.

    Je vais essayer de trouver un composant ou une classe qui gère le presse-papier de façon un peu plus poussé que le Clipboard de VB6. Si je trouve, je vous fait signe.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Points : 46
    Points
    46
    Par défaut Ce qu'enregistre Word dans le presse papier
    J'ai un peu regardé comment ça se passait au niveau du presse-papier (à l'aide d'une appli trouvée sur vbaccelerator) quand depuis word on sélectionne du texte+image et qu'on copie tout ça. Apparamment, c'est enregistré dans le presse papier sous différentes formes:
    - le texte brut au format texte
    - l'image isolé au format image
    - le texte mise-en-forme au format rtf
    - la page (texte+image) avec mise-en-forme au format html

    Ensuite, quand on colle, word (et visiblement tous les logiciels du même type) collent préférentiellement la page mise-en-forme au format html. D'ailleurs, si on fait un collage spéciale, on retrouve les différentes entrées du presse-papier et c'est "format html" qui est sélectionné par défaut.

    Mon problème reviendrait donc finalement à enregistrer dans le presse-papier une page mise-en-forme html (avec le texte sous l'image).
    Reste plus qu'à trouver comment faire ça.
    J'imagine que ça doit être plus ou moins normalisé. Il doit y avoir moyen de générer ça par code.

    ---
    Je me permet d'éditer mon message pour y ajouter un bout de code.
    Voici ce que Word enregistre dans le presse papier. J'imagine qu'il doit être possible de s'en inspirer.

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    Version:1.0
    StartHTML:0000000105
    EndHTML:0000003076
    StartFragment:0000001682
    EndFragment:0000003036
     
    <html xmlns:v="urn:schemas-microsoft-com:vml"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:w="urn:schemas-microsoft-com:office:word"
    xmlns="http://www.w3.org/TR/REC-html40">
     
    <head>
    <meta http-equiv=Content-Type content="text/html; charset=utf-8">
    <meta name=ProgId content=Word.Document>
    <meta name=Generator content="Microsoft Word 9">
    <meta name=Originator content="Microsoft Word 9">
    <link rel=File-List
    href="file:///C:/DOCUME~1/myusername/LOCALS~1/Temp/msoclip1/01/clip_filelist.xml">
    <link rel=Edit-Time-Data
    href="file:///C:/DOCUME~1/myusername/LOCALS~1/Temp/msoclip1/01/clip_editdata.mso">
    <!--[if !mso]>
    <style>
    v\:* {behavior:url(#default#VML);}
    o\:* {behavior:url(#default#VML);}
    w\:* {behavior:url(#default#VML);}
    .shape {behavior:url(#default#VML);}
    </style>
    <![endif]--><!--[if gte mso 9]><xml>
     <w:WordDocument>
      <w:View>Normal</w:View>
      <w:Zoom>0</w:Zoom>
      <w:HyphenationZone>21</w:HyphenationZone>
      <w:DoNotOptimizeForBrowser/>
     </w:WordDocument>
    </xml><![endif]-->
    <style>
    <!--
     /* Style Definitions */
    p.MsoNormal, li.MsoNormal, div.MsoNormal
    	{mso-style-parent:"";
    	margin:0cm;
    	margin-bottom:.0001pt;
    	mso-pagination:widow-orphan;
    	font-size:12.0pt;
    	font-family:"Times New Roman";
    	mso-fareast-font-family:"Times New Roman";}
    @page Section1
    	{size:612.0pt 792.0pt;
    	margin:70.85pt 70.85pt 70.85pt 70.85pt;
    	mso-header-margin:36.0pt;
    	mso-footer-margin:36.0pt;
    	mso-paper-source:0;}
    div.Section1
    	{page:Section1;}
    -->
    </style>
    </head>
     
    <body lang=FR style='tab-interval:35.4pt'>
    <!--StartFragment-->
     
    <p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
     o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
     stroked="f">
     <v:stroke joinstyle="miter"/>
     <v:formulas>
      <v:f eqn="if lineDrawn pixelLineWidth 0"/>
      <v:f eqn="sum @0 1 0"/>
      <v:f eqn="sum 0 0 @1"/>
      <v:f eqn="prod @2 1 2"/>
      <v:f eqn="prod @3 21600 pixelWidth"/>
      <v:f eqn="prod @3 21600 pixelHeight"/>
      <v:f eqn="sum @0 0 1"/>
      <v:f eqn="prod @6 1 2"/>
      <v:f eqn="prod @7 21600 pixelWidth"/>
      <v:f eqn="sum @8 21600 0"/>
      <v:f eqn="prod @7 21600 pixelHeight"/>
      <v:f eqn="sum @10 21600 0"/>
     </v:formulas>
     <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
     <o:lock v:ext="edit" aspectratio="t"/>
    </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:212.25pt;
     height:159pt'>
     <v:imagedata src="file:///C:/DOCUME~1/myusername/LOCALS~1/Temp/msoclip1/01/clip_image001.jpg"
      o:title="Athlète"/>
    </v:shape><![endif]--><![if !vml]><img width=283 height=212
    src="file:///C:/DOCUME~1/myusername/LOCALS~1/Temp/msoclip1/01/clip_image001.jpg"
    v:shapes="_x0000_i1025"><![endif]></p>
     
    <span style='font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:
    "Times New Roman";mso-ansi-language:FR;mso-fareast-language:FR;mso-bidi-language:
    AR-SA'>Le texte copié</span><!--EndFragment-->
    </body>
     
    </html>

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Bonjour,

    si tu veux piloter Word directement, je te renvoie vers le fichier d'aide VBAWD10.chm fourni avec office, où tu trouveras les méthodes de copies adaptées (PasteSpecial dans ton cas, avec les constantes de sorties dont tu aurais besoin (wdPasteBitmap, wdPasteHTML, wdPasteText...)

    Pour ce qui est de ton autre idée :
    Mon problème reviendrait donc finalement à enregistrer dans le presse-papier une page mise-en-forme html (avec le texte sous l'image).
    ...es-tu sûr que le format html conviendrait à tous les autres éditeurs ?

    Et pour ce qui est du code HTML généré par Word, misère... ça doit faire hurler un développeur web.
    Tu dois pouvoir faire vraiment vraiment beaucoup plus simple !

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Points : 46
    Points
    46
    Par défaut
    Pour ce qui est du format html, faudrait que je fasse des tests. Dans 90% des cas ce sera word. Faut que je vérifie si ça colle aussi sous OpenOffice (je suis en train de le télécharger) et j'aurai couvert 99% des cas... Les utilisateurs visés par mon appli ne sont pas du genre à chercher la complication, ils restent sur ce qu'ils connaissent.

    Bon, je vais faire des tests et je vous tiens au courant.

Discussions similaires

  1. VBA : copier une image d'une feuille excel à une autre
    Par Equus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2005, 14h01
  2. [FLASH MX] copier une image chargée avec loadClip
    Par JulPoWeR dans le forum Flash
    Réponses: 4
    Dernier message: 02/09/2005, 20h07
  3. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  4. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51

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