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

Langage Perl Discussion :

combinaison de touches en perl


Sujet :

Langage Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut combinaison de touches en perl
    Bonjours,


    Dans Excel, via la combinaison de touches 'Alt+Entrée', on peut effectuer un saut de ligne à l'intérieur d'une cellule, et ainsi donc écrire plusieurs lignes à l'intérieur d'une même cellule. J'aimerais que la sortie de mon programme perl soit du texte et qu'un copier-coller de celui-ci dans excel me donne la même chose (si possible sans utiliser Win32::OLE). Est-ce possible?

    Exemple de texte à placer dans une seule cellule:
    TAAAAG-5'
    { X|||
    GAATTCGCTTATTTGG-3'
    code testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $hash_result{'Seq1'}.chr(10).$hash_result{'Pipes'}.chr(10).$hash_result{'Seq2'}."\n"
    Merci,
    -- Jasmine --

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Si tu étais passée par un fichier csv, je t'aurais dit que le contenu d'une cellule contenant des retours à la ligne doit être "quotée" (avec des doubles quote). Peut-être cette information t'aidera.
    Pour intégrer une double quote dans une chaine, l'usage de l'opérateur qq (ou q) est bien utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print qq("ma cellule $cellule_name qui est\nsurplusieurs lignes");
    print q("ma cellule $cellule_name qui est). qq(\n) . q(surplusieurs lignes");
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Points : 322
    Points
    322
    Par défaut
    Personnellement, je n'ai pas de problème : un copier-coller de plusieurs lignes dans une cellule Excel (Version 2007) fonctionne correctement.

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Dimitry.e Voir le message
    Personnellement, je n'ai pas de problème : un copier-coller de plusieurs lignes dans une cellule Excel (Version 2007) fonctionne correctement.
    Dans mon cas, à chaque \n il passe à la cellule du bas, ce qui est attendu ... comment fais-tu afin de différentier 'saut de cellule' et 'saut de ligne dans la même cellule'?


    Merci,
    -- Jasmine --

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Si tu étais passée par un fichier csv, je t'aurais dit que le contenu d'une cellule contenant des retours à la ligne doit être "quotée" (avec des doubles quote). Peut-être cette information t'aidera.
    Pour intégrer une double quote dans une chaine, l'usage de l'opérateur qq (ou q) est bien utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print qq("ma cellule $cellule_name qui est\nsurplusieurs lignes");
    print q("ma cellule $cellule_name qui est). qq(\n) . q(surplusieurs lignes");
    A priori cela ne m'aide pas ... à moins que je ne sauve mon résultat dans un fichier csv que j'importe ensuite dans excel ... j'essaierai si je ne trouve pas mieux. Merci.
    -- Jasmine --

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    dans la partie Microsof office Excel de ce forum, ils m'ont dit que :

    Le code ASCII est le 10
    en VBA

    ... y a-t-il moyen d'utiliser cela en perl?
    -- Jasmine --

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Peux-tu montrer le code que tu utilises pour remplir ta cellule... à priori, tu n'as pas besoin du code ASCII du \n...
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  8. #8
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Peux-tu montrer le code que tu utilises pour remplir ta cellule... à priori, tu n'as pas besoin du code ASCII du \n...
    A la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $hash_result{'ID'}."\t".$hash_result{'Matches'}."\t".$hash_result{'Score'}."\t".$hash_result{'Pattern'}."\t".$hash_result{'Tm'}."\t".$hash_result{'DeltaG'}."\t".$hash_result{'Seq1'}."\n".$hash_result{'Pipes'}."\n".$hash_result{'Seq2'}."\n";

    Puis j'ai testé sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $hash_result{'ID'}."\t".$hash_result{'Matches'}."\t".$hash_result{'Score'}."\t".$hash_result{'Pattern'}."\t".$hash_result{'Tm'}."\t".$hash_result{'DeltaG'}."\t".$hash_result{'Seq1'}.chr(10).$hash_result{'Pipes'}.chr(10).$hash_result{'Seq2'}."\n";
    Je voudrais un tableau excel où la première cellule serait l'ID, puis le matches ... et pour terminer $hash_result{'Seq1'}."\n".$hash_result{'Pipes'}."\n".$hash_result{'Seq2'}."\n" dans une même cellule ce qui équivaut manuellement dans Excel à utiliser 'Alt+Entrée' entre ces 3 lignes au lieu de 'Entrée'
    -- Jasmine --

  9. #9
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Voila ce qu'il me faudrait :



    Uploaded with ImageShack.us
    -- Jasmine --

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    C'est bien ce que je pensais, tu écris bien un fichier csv (un tsv en fait : tab separated vector) que tu importes sous Excel.
    Et pour résoudre ton problème, il faut bien faire ce que j'avais indiqué précédemment, c'est à dire ajouter des quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print qq("), (join "\t", $hash_result{'ID'}, $hash_result{'Matches'}, $hash_result{'Score'}, $hash_result{'Pattern'}, $hash_result{'Tm'}, $hash_result{'DeltaG'}, "$hash_result{'Seq1'}\n$hash_result{'Pipes'}\n$hash_result{'Seq2'}\n"), qq(");
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  11. #11
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    C'est bien ce que je pensais, tu écris bien un fichier csv (un tsv en fait : tab separated vector) que tu importes sous Excel.
    Et pour résoudre ton problème, il faut bien faire ce que j'avais indiqué
    Je n'écris pas un fichier csv, je fais apparaitre le résultat dans la fenêtre de l'éditeur (scite) puis je fais un simple ctrl-C et ctrl-V . Néanmoins, passer par un fichier csv intermédiaire est peut-être la seule solution, ou du moins la plus simple ... je peux toujours effacer le fichier csv par la suite.

    Merci, je vais procéder ainsi
    -- Jasmine --

  12. #12
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    C'est bien ce que je pensais, tu écris bien un fichier csv (un tsv en fait : tab separated vector) que tu importes sous Excel.
    Et pour résoudre ton problème, il faut bien faire ce que j'avais indiqué précédemment, c'est à dire ajouter des quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print qq("), (join "\t", $hash_result{'ID'}, $hash_result{'Matches'}, $hash_result{'Score'}, $hash_result{'Pattern'}, $hash_result{'Tm'}, $hash_result{'DeltaG'}, "$hash_result{'Seq1'}\n$hash_result{'Pipes'}\n$hash_result{'Seq2'}\n"), qq(");
    le séparateur de champ (cellule) est \t et mon bloc

    ce que ton code donne :
    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
    "pXO1_72644_R_0	5	3	NTGTTCN	97.3	DeltaG @37.0 degrees =  greater than zero	 AAAACAAGG-5'
    {  X|||||X
     TGATGTTCTGGA-3'
    ""pXO1_3807_F_0	2	2	TG	68.1	DeltaG 37.0 degrees =  greater than zero	 CTAC-5'
    C  ||
     ATTGACCATTCTTTG-3'
    ""pXO1_3807_F_0	4	2	TCNNTG	92.3	DeltaG @37.0 degrees =  greater than zero	 CCAGTTACCTAC-5'
    {  ||XX||
     ATTCTTTG-3'
    ""pXO1_3807_F_0	2	2	TG	68.1	DeltaG 37.0 degrees =  greater than zero	 TTACCAGTTACCTAC-5'
    C  ||
     TTTG-3'
    ""pXO1_3807_R_0	5	3	GATNGCN	99.8	DeltaG 37.0 degrees =  greater than zero	 CGCTAACGG-5'
    T  |||X||X
     TAGATAGCTT-3'
    ""pXO1_3807_R_1	5	3	GATNGCN	99.8	DeltaG 37.0 degrees =  greater than zero	 CGCTAACGG-5'
    T  |||X||X
     TAGATAGCTT-3'
    ""pXO1_3807_F_2	3	2	ACTN	77.3	DeltaG 37.0 degrees =  greater than zero	 GTTGACCTTCATA-5'
    C  |||X
     CCACTT-3'
    "
    puis, je l'importe sous excel 2003.
    Données externes>
    importation de données>
    type de données : délimitées
    origine du fichier MS-DOS (PC-8)
    séparateur : tabulation
    identificateur du texte : double quote

    ... puis, ça ne va pas, je dois avoir raté une marche


    Merci beaucoup pour ton aide ... désolée, je suis lente à la détente ^_^ pourtant, je ne suis pas blonde



    par un copier-coller classique (ctrl-C, ctrlV) tout rentre dans une seule cellule ... je vais trouver comment faire. Merci pour ton aide.
    -- Jasmine --

  13. #13
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	print $hash_result{'ID'}."\t".$hash_result{'Matches'}."\t".$hash_result{'Score'}."\t".$hash_result{'Pattern'}."\t".$hash_result{'Tm'}."\t".$hash_result{'DeltaG'}."\t".'"'.$hash_result{'Seq1'}."\n".$hash_result{'Pipes'}."\n".$hash_result{'Seq2'}.'"'."\n";


    c'est super, ça fonctionne ... merci Philou
    -- Jasmine --

  14. #14
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Désolé si j'ai fait une erreur de syntaxe précédemment (un excès de zèle), mais ce que tu écris avec le print, c'est l'équivalent d'un CSV. Tu écris ton fichier excel comme un CSV (peut-être avec une extension .xls, peut importe), et excel le reconnait comme un CSV qu'il importe.
    Il faut donc dans ce contexte, que les cellules contenant des retours à la ligne soient "balisées" par des quotes.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  15. #15
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Désolé si j'ai fait une erreur de syntaxe précédemment (un excès de zèle), mais ce que tu écris avec le print, c'est l'équivalent d'un CSV. Tu écris ton fichier excel comme un CSV (peut-être avec une extension .xls, peut importe), et excel le reconnait comme un CSV qu'il importe.
    Il faut donc dans ce contexte, que les cellules contenant des retours à la ligne soient "balisées" par des quotes.
    Quoiqu'il en soit, merci, je viens encore d'apprendre quelque chose. Tiens, au fait, si je passe sous Open office, pourrais-je sauver en .xls et .doc afin que mes rapports soient compatibles avec les Microsoft office de mes collègues, qu'ils puissent les ouvrir et les lire?
    -- Jasmine --

  16. #16
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Oui, pas de problème de compatibilité que ce soit avec OpenOffice ou LibreOffice, et vers les formats XLS (Office 97) ou XLSX (Office 2007).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment inhiber la combinaison de touche CTRL+TAB ?
    Par jddev dans le forum Langage
    Réponses: 8
    Dernier message: 18/08/2005, 12h12
  2. Combinaison de touches
    Par Higestromm dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 01/07/2005, 07h56
  3. [VB.NET] combinaison de touches
    Par AP dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/06/2005, 13h53
  4. [VCL] Comment détecter une combinaison de touches ?
    Par micatmidog dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2005, 14h19
  5. Détecter combinaison de touches du clavier
    Par Shogun dans le forum Langage
    Réponses: 14
    Dernier message: 24/09/2004, 17h40

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