Bonjour,

J'ai des fichiers xls qui sont mis en prodction a un endroit donné. Ces fichiers, quand on les ouvre, demandent si il faut effectuer la mise a jour étant donné qu'ils utilisent des liens vers d'autres fichiers xls.
J'aimerai que l'on me demande plus de faire cette mise a jour car les données de ces fichiers sont fixés une fois pour toute quand ils arrivent dans ce répertoire de production.

...donc la solution (qui marche bien manuellement ) est de tout selectionner, de faire un "copy" (copier) puis un "paste special" (coller special) ...et de dire qu'on ne colle que les valeurs... ainsi on se retrouve avec juste les valeurs et plus de liens.

J'essai d'automatiser cela en Excel mais je m'en sors pas. Pas de probleme pour parcourir les repertoires, ouvrir les fichiers excel, parcourir les feuilles de ces fichiers, ... par contre je n'arrive pas a copier une feuille entiere pour pouvoir faire mon PasteSpecial par la suite.

VOila ou j'en suis :

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
 
foreach (Excel.Worksheet sh in ThisWorkbook.Sheets)
{
    // je selectionne tout : ?
     sh.Cells.Select();
 
    // je recupere ma selection dans un object Range : ?
    Excel.Range selectedRange = (Excel.Range)ThisApplication.Selection;
 
   // j'effectue ma copie:
  // ????
 
   // je fais mon paste special:	
  selectedRange.PasteSpecial(Excel.XlPasteType.xlPasteValues,Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
 
    // je sauve :			
   ThisWorkbook.Save();

Si vous avez une idee de comment effectuer un copier coller en C# ca m'interesse car je m'en sors pas.

Merci d'avance

Gael