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 :

copier le contenu d'une cellule excel vers un fichier excel


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 19
    Points
    19
    Par défaut copier le contenu d'une cellule excel vers un fichier excel
    bonjour
    je veux copier le contenu d'une cellule excel qui contient de l'information sur deux lignes,je veux les copier sans le retour a la ligne(c-a-d: les mettre dans une chaine de caractere séparer par des espaces)

    voici le code que j'utilise:

    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
     
    #!/usr/bin/perl -w
    use strict;
    use Win32::OLE qw(in with);
    use Win32::OLE::Const 'Microsoft Excel';
    use Spreadsheet::ParseExcel;
    $Win32::OLE::Warn = 3;                                # S'arrête sur erreur...
    my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');  # #obtenir l'application Excel déjà actifs ou ouvrir de nouveaux
     #------------------------------------- lecture -------------------------------------# 
    my $Book = $Excel->Workbooks->Open("C:\\perlscripts\\fichier.xlsx"); # ouvre un fichier Excel
    my $Sheet = $Book->Worksheets(1);                     # selectionne la feuille numéro 1 
    my $last_row = $Sheet->UsedRange->Find({What => "*", SearchDirection=>xlPrevious, SearchOrder=>xlByRows})->{Row};
     
      #------------------------------------- lecture des titres () affichage au niveau d invite de commande -------------------------------------#
       my $Sheet1 = $Book->Worksheets(1);
     
       printf "\ntitre de colone A : %s \n\n",
       my $titre1=$Sheet1->Range("A1")->{'Value'};
       my $array = $Sheet->Range("A2:A$last_row")->{'Value'};        # Recupere le contenu
       foreach my $ref_array (@$array) # boucle sur les tableaux  référencés par $array
    			{                                                                          
                foreach my $scalar (@$ref_array) 
    			{
                print "$scalar\t";
                }
                 print "\n";
                }

  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 le texte de la cellule avec des retours à la ligne est dans $scalar, et que tu souhaites remplacer ces \n par des espaces, voici comment faire :


  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 19
    Points
    19
    Par défaut copier le contenu d'une cellule excel vers un fichier excel Répondre à la discussion
    je te reùercier pour ta repense, mais le probleme est toujours la,je t'envoie une capture d'ecran de la case sujet de notre discussion pour avoir une idée claire, moi je veux que les deux lignes soient une seule ligne
    Images attachées Images attachées  

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 19
    Points
    19
    Par défaut probleme resolu
    je tiens a vous informer que le probleme est resolu voila la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    print FILE ("\n$titre2:\n");
     foreach my $ref_peace (@$peace) 
     {
       my $s = join("",@$ref_peace);
       $s =~ s/\n/ /g;   
       print FILE "VAR:$s"; 
       }

  5. #5
    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
    Par sécurité, essaye ceci alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scalar =~ s/[\n\r]+/ /g;
    Indique moi où tu as introduit cette ligne.
    Si ça ne marche toujours pas, il faudra poster le fichier excel (ou un extrait).

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 19
    Points
    19
    Par défaut reponce
    j'ai posté le code

    seulement j'ai changer la varaible $scalar par $s

    ce qui conserne l'emplacement tu peut le voir dans le code en dessus

  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
    en dessous de quoi ???

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 19
    Points
    19
    Par défaut dsl j'été pas claire voila mon script en total pour exploiter ce que vous voyez utile.
    s'il a des remarques ou questions je suis disponible pour le partage d'informations,
    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
     
    #!/usr/bin/perl -w
    use strict;
    use Win32::OLE qw(in with);
    use Win32::OLE::Const 'Microsoft Excel';
    use Spreadsheet::ParseExcel;
    $Win32::OLE::Warn = 3;                                # S'arrête sur erreur...
    my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');  # #obtenir l'application Excel déjà actifs ou ouvrir de nouveaux
     #------------------------------------- lecture -------------------------------------# 
    my $Book = $Excel->Workbooks->Open("C:\\perlscripts\\fichier.xlsx"); # ouvre un fichier Excel
    my $Sheet = $Book->Worksheets(1);                     # selectionne la feuille numéro 1 
    my $last_row = $Sheet->UsedRange->Find({What => "*", SearchDirection=>xlPrevious, SearchOrder=>xlByRows})->{Row};
    my $l;
     
      #------------------------------------- lecture des titres () affichage au niveau d invite de commande -------------------------------------#
       my $Sheet1 = $Book->Worksheets(1); # premiere feuille
     
       printf "\ntitre de colone A : %s \n\n",# affichage du titre de la premiere colone
       my $titre1=$Sheet1->Range("A1")->{'Value'};
       my $array = $Sheet->Range("A2:A$last_row")->{'Value'};# Recupere le contenu de toute la colone A
       foreach my $ref_array (@$array) #metre le contenu dans un tableau
          {
            print " @$ref_array \n";#affichage du contenu
          }
     
       printf "\ntitre de colone B : %s \n\n",
       my $titre2=$Sheet1->Range("B1")->{'Value'};
       my $peace = $Sheet->Range("B2:B$last_row")->{'Value'};        # Recupere le contenu B 
       foreach my $ref_peace (@$peace) 
    		  {                                                     
              print "VAR:@$ref_peace";           
          } 
     
       printf "\ntitre de colone C : %s \n\n",
       my $titre3=$Sheet1->Range("C1")->{'Value'};
       my $zam = $Sheet->Range("C2:C$last_row")->{'Value'};        # Recupere le contenu C  
       foreach my $ref_zam (@$zam) 
    		  {                                                      
             print "@$ref_zam \n";
              }	
       $Book->Close;
     
      #--------------------------------------- ecriture de données --------------------------------------- # 
       open(FILE, ">exemplaire_x1.ptu");  
       print FILE "xxxxxxxxxxxxxxxx ,\n";
     
     print FILE ("\n$titre1:\n");
     foreach my $ref_array (@$array) 
        {  
         print FILE ("\tVAR:@$ref_array \n");
        }
     
     print FILE ("\n$titre2:\n");
     foreach my $ref_peace (@$peace) 
     {
       my $s = join("",@$ref_peace);
       $s =~ s/[\n\r]+//g;   
       print FILE "VAR:$s\n"; 
       } 
     
     print FILE ("\n$titre3:\n");
     foreach my $ref_zam (@$zam) 
      {    
         print FILE ("\tVAR: @$ref_zam  \n");
      }

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

Discussions similaires

  1. [Toutes versions] Macro pour copier le contenu d'une cellule d'un fichier excel et coller dans une form
    Par wizishop dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 16/10/2015, 12h05
  2. Copier le contenu d'une cellule dans une variable sous excel
    Par franckB dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/04/2007, 19h54
  3. [VBA-E]Copier le contenu d'une cellule vers une autre
    Par idir.17 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 26/03/2007, 16h50
  4. [VBA]Copier le contenu d'une cellule d'un autre classeur
    Par dudu59 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2006, 17h08
  5. Réponses: 3
    Dernier message: 27/01/2006, 18h35

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