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

C++Builder Discussion :

BCB, OpenOffice et presse-papier ?


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut BCB, OpenOffice et presse-papier ?
    Bonjour à tous,
    Je commande OOo Calc à l'aide de C++Builder, par le biais de Ole.
    Comme ici : http://www.developpez.net/forums/sho...d.php?t=290788

    Je cherche à copier une plage de cellules dans le presse-papier (juste les valeurs, pas les formules, ni les formats) et la coller dans un autre document Calc. J'ai bien trouvé ça dans la faq OOo mais je ne sais pas trop comment l'adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub SelectionCellule_Puis_Collage
      Dim oCC As Object , Cellule As Object
      Dim Args() As New com.sun.star.beans.PropertyValue 
     
      'Selection cellule C2
      oCC = ThisComponent.CurrentController 
      Cellule = oCC.ActiveSheet.getCellRangeByName("C2") 
      oCC.Select(Cellule) 
     
      'Collage
      Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
      Dispatcher.executeDispatch(oCC.Frame, ".uno:Paste", "", 0, Args)
    End Sub
    Merci d'avance d'aider un newbie

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Shin_no_Noir
    Voici comment faire un copier coller sans passer par le presse papier:
    Pour effectuer une copie d'une plage de cellule, nous devons définir la plage de cellule source (objet de classe com.sun.star.table.CellRangeAddress) et l'adresse de la cellule de destination (objet de classe com.sun.star.table.CellAddress).
    Ensuite nous allons utiliser la fonction CopyRange(madestination, maselection)
    madestination correspond à l'objet dans lequel nous avons définis la cellule de destination
    Maselection correspond à l'objet dans lequel nous avons définis la plage de cellules
    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
     
    Variant vOOoMonClasseur;
    Variant vOOoMaFeuille;
    Variant vOOoMaDestination;
    Variant vOOoMaPlage;
     
    vOOoMonClasseur = vOOoDocument.OleFunction("getSheets");
    vOOoMaFeuille = vOOoMonClasseur.OleFunction("GetByName", "Feuille1");
     
    vOOoMaDestination = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellAddress");
    vOOoMaPlage = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.table.CellRangeAddress");
     
    vOOoMaDestination.OlePropertySet("Sheet", 0);
    vOOoMaDestination.OlePropertySet("Column", 5);
    vOOoMaDestination.OlePropertySet("Row", 5);
    vOOoMaPlage.OlePropertySet("Sheet", 0);
    vOOoMaPlage.OlePropertySet("StartColumn", 0);
    vOOoMaPlage.OlePropertySet("StartRow", 0);
    vOOoMaPlage.OlePropertySet("EndColumn", 1);
    vOOoMaPlage.OlePropertySet("EndRow", 1);
    vOOoMaFeuille.OleFunction("CopyRange", vOOoMaDestination, vOOoMaPlage);
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci pour la réponse.
    Cependant cette solution permet-elle de copier la plage dans un autre classeur ?

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Non je ne pense pas, mais la pour l'instant je n'ai rien d'autre a te proposer desole
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Ok merci quand même
    Je fais des essais avec getDataArray et setDataArray mais c'est pas gagné...

Discussions similaires

  1. [VBA] Vider le presse papier
    Par Kelyane dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/10/2003, 12h05
  2. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  3. [VBA-E] Vider le presse-papier
    Par tinej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2002, 09h33
  4. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 17h46
  5. 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