Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Paramètre de date en lancement de fichier Excel

  • Initiateur de la discussion Initiateur de la discussion axelou
  • 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 !

A

axelou

Guest
Bonjour,

Je suis sur un projet de création d'un fichier Excel avec macro en VBA ayant pour objectif de gérer le planning d'ouvrier dans une usine de production. Je cherche à pouvoir entrer un paramètre à l'ouverture du fichier. Ces paramètres sont la semaine et l'année. Ainsi je souhaite afficher les plannings, la liste des personnes absentes et toutes les informations de la semaine entrée à l'ouverture.

Avez-vous une solution?

Merci d'avance
 
Re : Paramètre de date en lancement de fichier Excel

Bonjour,

Si votre question est de récupérer les paramètres passés dans démarrer/Exécuter… OU par un fichier Batch
alors voici une démarche à suivre.


1) Créez un classeur
2) Dans la fenêtre de code de ThisWorkbook copiez le code suivant

Code:
Private Declare Function GetCommandLine& Lib "kernel32" Alias "GetCommandLineA" ()
Private Declare Function lstrlen& Lib "kernel32" Alias "lstrlenA" (lpString As Any)
Private Declare Function lstrcpy& Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, lpString2 As Any)

Const SEM As String = "semaine" 'paramètre ligne de commande de la semaine
Const AN As String = "an"       'paramètre ligne de commande de l'année

Private Sub Workbook_Open()
Dim A$
Dim Cmd&
Dim Semaine
Dim Annee
Cmd& = GetCommandLine()
A$ = Space$(lstrlen(ByVal Cmd&))
lstrcpy ByVal A$, ByVal Cmd&
If Len(A$) > 0 Then
  A$ = Mid(A$, InStr(1, A$, SEM) + Len(SEM))
  Semaine = Mid(A$, 1, InStr(1, A$, "/") - 1)
  A$ = Mid(A$, InStr(1, A$, AN) + Len(AN))
  Annee = Trim(Mid(A$, 1, InStr(1, A$, Chr(32)) - 1))
  If IsNumeric(Semaine) And IsNumeric(Annee) Then
  
      '°°° votre traitement à partir d'ici °°°
    MsgBox "Semaine : " & Semaine & vbCrLf & "Année : " & Annee 'pseudo traitement
      '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    
  End If
End If
End Sub
3) Sauvegardez le classeur sous le nom "test param" dans C:\ et fermez-le

PAR DEMARRER/EXECUTER
Faites démarrer/Exécuter… et, dans la boîte de saisie, tapez
"C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" /cmd/semaine10/an2009 "C:\test param.xls"
modifiez éventuellement Office11 par Officexx (xx étant le numéro de version)
Cette ligne indique le paramètre 10ème semaine et le paramètre année 2009 qui, lorsque vous cliquerez sur OK,
ouvrira le classeur "test param" où ils s'afficheront dans une MsgBox.

PAR UN FICHIER BATCH
Ouvrez le Bloc-notes et tapez
C:\Program Files\Microsoft Office\Office11\EXCEL.EXE /cmd/semaine52/an1998 "C:\test param.xls"
modifiez éventuellement Office11 par Officexx (xx étant le numéro de version)
Sauvez le fichier sous le nom que vous voulez (par exemple : "semaine et année.txt")
Changez l'extension .txt par .bat
Le classeur "testparam.xls" doit être fermé. Double cliquez sur le .bat qui indiquera les paramètres cités plus haut.

Cordialement.

PMO
Patrick Morange
 
Re : Paramètre de date en lancement de fichier Excel

Bonjour,

En effet, c'est une solution possible mais compliqué pour des personne vraiment novice en informatique comme le seront les utilisateurs de cette macro. Je pensais plus afficher une fenetre permettant de choisir la semaine et l'année à l'ouverture du fichier ou deux cellules à remplir afin de préciser les paramètres.

Ayant des connaissances sur les possibilités d'Excel plus que limité, je ne connais pas la faisabilité de ces solutions.
 
Re : Paramètre de date en lancement de fichier Excel

Bonjour,

Dans ce cas c'est beaucoup plus facile

Copiez le code suivant dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Open()
Dim semaine&
Dim annee&
Do Until semaine& > 0
  semaine& = Application.InputBox(prompt:="Veuillez entrer le N° de la semaine recherchée.", Type:=1)
Loop
Do Until annee& > 1900 And annee& < 2050
  annee& = Application.InputBox(prompt:="Veuillez entrer l'année recherchée.", Type:=1)
Loop

  '°°° votre traitement °°°
MsgBox "Semaine : " & semaine& & vbCrLf & "Année : " & annee&

End Sub

Je pressentais bien que votre demande était ambiguë mais, comme le sujet m'intéressait, j'ai développé le 1er code tout en sachant qu'il risquait de ne pas convenir.

Cordialement.

PMO
Patrick Morange
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…