Lanfeust42  | je vais vous collez le code ca vous aideras surement mieux (dsl je pensais à autre chose quand j'ai poster je l'ai oublier)
    
  Code :
 - # !usr/perl/bin/
 - # Modules nécessaires
 - use strict;
 - use Spreadsheet::WriteExcel;
 - use warnings;
 - use Win32::OLE qw(in with);
 - use CGI::Carp qw(fatalsToBrowser);
 - use Win32::OLE::Const 'Microsoft Excel';
 - $Win32::OLE::Warn = 3;
 - use Cwd;
 - my $dir = cwd;
 - chdir $dir;
 - my @ListeXLS = <*.xls>;
 -       foreach my $xls (@ListeXLS)
 -       {
 -       if($xls =~ / traité.xls/)
 -       {next;}
 - # Création d'une nouvelle instance du package pour Excel
 - my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
 - # Ouverture du fichier Excel "C:\\stat.xls"
 - my $Book = $Excel->Workbooks->Open("$dir/$xls" ) || die "Fichier non trouvé";
 - print "debut\n";
 - #choix des donner à extraire
 - my $col;
 - my $numSheet;
 - print "quelles données souhaité vous extraire?\n";
 - print "auteur taper 1\n";
 - print "organisation taper 2\n";
 - print "ic taper 3\n";
 - chomp($_ = <STDIN> );
 - if ($_ =~ /1/){$col=80;$numSheet="1";}
 - elsif($_ =~ /2/){$col=81;$numSheet="2";}
 - elsif($_ =~ /3/){$col=73;$numSheet="3";}
 - print "$_\n";
 - sleep 5;
 - # Affectation du 1er classeur à la variable $Sheet
 - my $Sheet = $Book->Worksheets(1);
 - # Récupération des valeurs de toutes les cellules comprises entre B2 et B10
 - my $array = $Sheet->Columns($col)->{'Value'}; # get the contents
 - # Récupération des valeurs de toutes les cellules comprises entre A2 et A10
 - my $array2 = $Sheet->Columns(1)->{'Value'}; # get the contents
 - $Book->Close;
 - $xls =~ s/.xls/ traité.xls/;
 - my $scalar2="01";
 - my @indent;
 - my $z;
 - foreach my $ref_array2 (@$array2) {
 -        # Parcours de chaque ligne
 -        foreach $scalar2 (@$ref_array2) {
 -           if ($scalar2){
 -               push (@indent,$scalar2);
 -           }
 -           else{
 -               goto FINBOUCLE;
 -           }
 -        }
 - }
 - FINBOUCLE:
 - my $workbook;
 - #my $Excel1 = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
 - if (-e $xls) {
 -     print "existe\n";
 -     $workbook = $Excel->Workbooks->Open("$dir/$xls" ) || die "impossible d'ouvrir le fichier $xls ou fichier ouvert";
 - }
 - else{
 -     # Creer une page excel ayant pour le même nom que le fichier txt
 -     $workbook = Spreadsheet::WriteExcel->new($xls) || die "impossible de creer $xls ou fichier ouvert";
 -     $workbook->add_worksheet("auteur" );
 -     $workbook->add_worksheet("organisation" );
 -     $workbook->add_worksheet("ic" );
 - }
 - # sélectionner la feuille la feuille
 - my $worksheet;
 - if ($numSheet eq 1){
 - $worksheet = $workbook->Worksheets(1);
 - print "feuille 1\n";
 - }
 - elsif($numSheet eq 2){
 - $worksheet = $workbook->Worksheets(2);
 - print "feuille 2\n";
 - }
 - elsif($numSheet eq 3){
 - $worksheet = $workbook->Worksheets(3);
 - print "feuille 3\n";
 - }
 - my $ligne_excel = 0;
 - my $j=0;
 - # Affichage de ces valeurs
 - foreach my $ref_array (@$array) {
 -        # Parcours de chaque ligne
 -        foreach my $scalar (@$ref_array) {
 -             # Parcours
 -             print "--------------------------------------------------------\n";
 -             print "$indent[$j] $scalar\n";
 -             if($indent[$j]){
 -                     if ($scalar)
 -                     {
 -                         if ($col eq "73" ){
 -                             foreach my $word ( split(' ',$scalar) ) {
 -                                 if ($word eq "-" ){}   #si le mot est un -
 -                                 else{
 -                                     my $toto =$indent[$j];
 -                                     $worksheet->write($ligne_excel, 0,$toto);
 -                                     $worksheet->write($ligne_excel, 1,$word);
 -                                     $ligne_excel++;
 -                                 }
 -                             }
 -                         }
 -                         else{
 -                             foreach my $word ( split(';',$scalar) ) {
 -                                 $worksheet->write($ligne_excel, 0,"$indent[$j]" );
 -                                 $worksheet->write($ligne_excel, 1,$word);
 -                                 $ligne_excel++;
 -                             }
 -                         }
 -                     }
 -                     else{
 -                         #remplissage du fichier excel
 -                         $worksheet->write($ligne_excel, 0,$indent[$j]);
 -                         $worksheet->write($ligne_excel, 1,"no patentee" );
 -                         $ligne_excel++;
 -                     }
 -             $j++;
 -             }
 -             else{goto FINFIC;}
 -        }
 - }
 - FINFIC:
 - }
 - print "Open Perl IDE Test finished.\n";
 
  |  
    |