[VBS] Actualiser Classeur Excel

Actualiser Classeur Excel [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2010 à 09:32:57    

Bonjour,
 
Voilà je rencontre un petit problème dans mon code. Je dois actualiser des classeurs excel alors j'arrive à actualiser une feuille mais je cherche une fonction qui me permettrait d'actualiser toutes les feuilles du classeur. vue que j'ai une centaine de classeur et que chacun à des feuilles avec des noms différents j'aimerais pouvoir balayer  tous mes répertoires, ouvrir les classeurs excel et actualiser toutes les feuilles. Voici mon code qui permet d'actualiser une feuille spécifique:
 
Set objExcel = CreateObject ("Excel.Application" )
objExcel.Visible = false
 
Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR.xls" )  
objWorkbook.Sheets("Données" ).QueryTables(1).Refresh
 
WScript.Sleep 10000
 
objWorkbook.Saveas "C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR2.xls"  
objworkbook.close
 
msgbox "fin"
 
Si quelqu'un a une idée je suis preneur.
Merci
Greg

Reply

Marsh Posté le 20-04-2010 à 09:32:57   

Reply

Marsh Posté le 20-04-2010 à 09:37:56    

Il me semble que tu peux parcourir les différentes feuilles d'un classeur avec leur indice au lieu de leur nom.

Reply

Marsh Posté le 20-04-2010 à 09:55:04    

J'ai testé en mettant Sheets(1) mais j'ai toujours comme message d'erreur indice en dehors de la plage.

Reply

Marsh Posté le 20-04-2010 à 10:23:50    

Reply

Marsh Posté le 20-04-2010 à 10:34:37    

Merci Daemon, le code que tu m'as donné fonctionne bien pour afficher le nom des tables mais quand j'utilise la fonction Refresh j'ai toujours le message d'erreur indice en dehors de la plage.

Reply

Marsh Posté le 20-04-2010 à 10:40:43    

Colle ton code ici pour voir avec les balises [code]

Reply

Marsh Posté le 20-04-2010 à 10:45:50    

Code :
  1. Set objExcel = CreateObject ("Excel.Application" )
  2. objExcel.Visible = false
  3. Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR.xls" )
  4. WS_Count = objWorkbook.Worksheets.Count
  5. For I = 1 To WS_Count
  6. objWorkbook.Worksheets(I).QueryTables(1).Refresh
  7. WScript.Sleep 10000
  8. Next
  9. msgbox "Fin"


 
 

Reply

Marsh Posté le 20-04-2010 à 10:53:17    

T'es sur que l'erreur vient pas du QueryTables(1) ?

Reply

Marsh Posté le 20-04-2010 à 10:57:40    

Dans le code tout en haut ça marche bien mais en effet c'est possible, je vais faire des essais.

Reply

Marsh Posté le 20-04-2010 à 11:24:43    

En fait le problème ce produit sur les classeurs excel qui ont 2 feuilles ou plus et dont l'une d'elle est un tableau croisé dynamique. J'ai essayé sur un classeur avec une feuille et là c'est ok. Ce que je dois faire c'est, dans un premier temps, mettre à jour une, ou plusieurs, feuilles de données puis dans un second temps le tableau croisé dynamique et le problème c'est, visiblement, lui.

Reply

Marsh Posté le 20-04-2010 à 11:24:43   

Reply

Marsh Posté le 20-04-2010 à 14:41:03    

Merci DAEMON de ton aide j'ai fini par trouver. Il me faut utiliser la fonction REFRESHALL qui actualise toutes les feuilles. Il me faut la lancer 2 fois car le 1er coup elle met à jour les feuilles de données et ensuite les tableaux croisés dynamiques. Voici le code si ça intéresse quelqu'un:

Code :
  1. Set objExcel = CreateObject ("Excel.Application" )
  2. objExcel.Visible = false
  3. Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR.xls" )
  4. objWorkbook.RefreshAll
  5. WScript.Sleep 10000
  6. objWorkbook.Saveas "C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR2.xls"
  7. objworkbook.close
  8. Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR2.xls" )
  9. objWorkbook.RefreshAll
  10. WScript.Sleep 10000
  11. objWorkbook.Saveas "C:\Documents and Settings\RIEUX\Bureau\MAJ EXCEL\PLX_STATISTIQUE FOURNISSEUR3.xls"
  12. objworkbook.close
  13. msgbox "Fin"


 
Merci
Greg

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed