Créer un fichier batch pour lancer un fichier Excel, attendre 30 secondes, sauvegarde

mistigri5

XLDnaute Nouveau
Bonjour à toutes et à tous,

J'espère que vous allez bien. je me permets de venir vers vous pour savoir si vous pouvez m'aider pour coder quelques lignes afin de créer un fichier batch.

Le but est assez simple et se résume au titre du post : ouvrir un fichier Excel, attendre 30 secondes afin que les liens se mettent à jour, enregistrer les modifications et enfin fermer ce fichier Excel.

Je me suis procuré quelques documents afin de mieux comprendre la programmation d'un fichier batch et j'ai donc écrit ces quelques lignes ? Est-ce que vous pourriez l'apporter vos commentaires? Je vous remercie par avance et reste bien entendu à votre disposition si vous avez besoin d'informations !

En fait le problème que j’ai c’est que je ne comprends pas la structure de ce langage. En effet, d’après ce que j’ai lu pour enregistrer le fichier Excel, il faut utiliser le commutateur /o mais ou faut-il placer ce commutateur ? Quelle st la commande pour fermer le fichier Excel après avoir enregistré ?


Le plus simple reste que je vous montre mon code :

"C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" "C:\temp\classeur1.xls" /cmd/ "G:\EquipeRanking.xls"
Sleep.exe<30>
"C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" "C:\temp\classeur1.xls" /cmd/ o/ "G:\EquipeRanking.xls"


Merci beaucoup et bonne fin de journée à vous,


Mistigri5
 

job75

XLDnaute Barbatruc
Re : Créer un fichier batch pour lancer un fichier Excel, attendre 30 secondes, sauve

Bonsoir mistigri5, hello Papou,

Pas compris l'intérêt de créer un fichier batch :confused:

S'il s'agit seulement d'ouvrir des classeurs Excel, on peut utiliser le fichier joint avec ce code dans ThisWorkbook :

Code:
Dim W As Workbook, t# 'mémorise les variables

Private Sub Workbook_Open()
With Application
  .OnTime 1, "ThisWorkbook.Ferme"
  .Dialogs(xlDialogOpen).Show
  If ActiveWorkbook.Name <> Me.Name Then
    Set W = ActiveWorkbook
    t = Now + 30 / 86400 'délai 30 secondes
    .OnTime 1, "ThisWorkbook.Ferme", , False
    .OnTime t, "ThisWorkbook.Ferme"
  End If
End With
End Sub

Sub Ferme()
On Error Resume Next
If t Then
  t = 0
  W.Close True 'sauvegarde et fermeture
  Workbook_Open 'autre ouverture
Else
  Me.Saved = True 'évite l'invite
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End If
End Sub
Pas compris non plus l'intérêt d'attendre 30 secondes...

A+
 

Pièces jointes

  • Ouvre des classeurs(1).xls
    36 KB · Affichages: 53
Dernière édition:

job75

XLDnaute Barbatruc
Re : Créer un fichier batch pour lancer un fichier Excel, attendre 30 secondes, sauve

Bonjour le forum,

J'ai modifié mon post précédent pour que plusieurs fichiers puissent être ouverts à la suite.

Rien n'empêchait de fermer manuellement le fichier avant les 30 secondes.

Cette nouvelle version empêche cette fermeture :

Code:
Dim nom$, fich$, t# 'mémorise les variables

Private Sub Workbook_Open()
With Application
  .OnTime 1, "ThisWorkbook.Ferme"
  .Dialogs(xlDialogOpen).Show
  If ActiveWorkbook.Name <> Me.Name Then
    nom = ActiveWorkbook.Name
    fich = ActiveWorkbook.FullName
    t = Now + 30 / 86400 'délai 30 secondes
    .OnTime 1, "ThisWorkbook.Ferme", , False
    .OnTime Now + 1 / 86400, "ThisWorkbook.Ferme"
  End If
End With
End Sub

Sub Ferme()
On Error Resume Next
If t Then
  If Now < t Then
    Application.OnTime Now + 1 / 86400, "ThisWorkbook.Ferme"
    If IsError(Workbooks(nom).Name) Then Workbooks.Open fich
  Else
    t = 0
    Workbooks(nom).Close True 'sauvegarde et fermeture
    Workbook_Open 'autre ouverture
  End If
Else
  Me.Saved = True 'évite l'invite
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End If
End Sub
Bonne journée et A+
 

Pièces jointes

  • Ouvre des classeurs et empêche leur fermeture(1).xls
    28.5 KB · Affichages: 42

job75

XLDnaute Barbatruc
Re : Créer un fichier batch pour lancer un fichier Excel, attendre 30 secondes, sauve

Re,

Pour les 2 versions précédentes, noter que si dans le fichier ouvert il y a une macro Workbook_Open elle s'exécutera.

Si l'on désire l'éviter utiliser les Application.EnableEvents :

Code:
'----
  Application.EnableEvents = False
  .Dialogs(xlDialogOpen).Show
  Application.EnableEvents = True
A+
 

MJ13

XLDnaute Barbatruc
Re : Créer un fichier batch pour lancer un fichier Excel, attendre 30 secondes, sauve

Bonjour à tous

Sinon, le planificateur de tâche peut permettre d'ouvrir un fichier au moment voulu, avec plusieurs heures dans la journée si besoin.

Avec le code de Job, cela peut être un moyen d'automatiser un peu plus.

Sinon, j'aurais juste mis un application.ontime à l'ouverture sur une macro ferme avec thisworkbook.close 1 sur le close.
 

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo