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

  • Initiateur de la discussion Initiateur de la discussion mistigri5
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 😕

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

Dernière édition:
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

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+
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
4
Affichages
2 K
Z
Retour