Vba : Changement Automatique De Nom De Fichier A Ouvrir

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

V

Vilipendboy

Guest
Bonjour à tous,

J'ai de nouveau besoin de votre précieuse et appréciée aide pour finaliser un projet.

Afin de gagner du temps, et grâce à votre aide, j'ai 2 macros qui me permettent de calculer des CA à partir de fichier reçus tout les matins.... Jusque là tout va bien... Pour le confort des utilisateurs, je souhaite que les macros se lancent d'un fichier "central" nommé MACROS test... Là encore, tout va bien... Le souci c'est que pour l'un des fichiers reçus, le nom change quotidiennement puisqu'il contient la date de création du fichier.... Par exemple aujourd'hui c'est :

Commandes envoyées par jour - 29 2 2008.xls

Et lundi ce sera :

Commandes envoyées par jour - 3 3 2008.xls

Dans le code VBA de ma macro, j'ai au début :

Application.Workbooks("Commandes envoyées par jour - 29 2 2008.xls").Sheets("Commandes").Activate

Est-il possible de créer un code pour que le nom de fichier indiqué soit "Commandes envoyées par jour - "date du jour au format indiqué".xls (donc sans barre, sans 0 etc....)?

Si quelqu'un sait faire cela, ce serait génial.

un grand merci d'avance en tout cas pour vos précieux conseils et votre aide

Vilipendboy
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

Bonjour,
jour = Day(Now())
mois = Month(Now())
an = Year(Now())
machaine = "Commandes envoyées par jour - "
machaine = machaine & Str(jour) & " " & Str(mois) & " " & Str(an)

A+ François
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

Merci de ta proposition j'ai essayé de l'intégrer dans mon code mais ça ne marche pas... J'ai mis une messagebox pour voir ce que renvoie 'machaine' et en fait ça donne :

commandes envoyées par jour - 28/01/1900 01/01/1900 30/06/1905

Du coup, le bon workbook ne s'ouvre pas...

Voilà le code

Sub CALCUL_PTF_PMP()
'
' CALCUL_PTF_PMP Macro
' calcul les commandes en protefeuille PMP à la date du jour
'
'declaration des variables
Dim ca As Range
Dim c As Range
Dim totca As Double
Dim n As Integer
Dim nb As Integer
Dim ligne As Integer
Dim PMP As Workbook
Dim jour As Date
Dim mois As Date
Dim an As Date
Dim machaine As String



jour = Day(Now())
mois = Month(Now())
an = year(Now())
machaine = "Commandes envoyées par jour - "
machaine = machaine & Str(jour) & " " & Str(mois) & " " & Str(an)

' test de machaine
MsgBox (machaine)


'==========================================================
'vérifie que le classeur PMP est ouvert, sinon demande ouverture et sortie macro
On Error Resume Next 'permet de passer à la ligne de code suivante si ue erreur se produit
Set PMP = Workbooks("Commandes envoyées par jour - 29 2 2008.xls")
If PMP Is Nothing Then MsgBox " Vous devez d'abord ouvrir le classeur PTF PMP!Fichier commandes envoyées par jour - 'date du jour'.xls ": Exit Sub

'=============================================================

Application.Workbooks(machaine).Sheets("Commandes").Activate

'effacement de la Feuil2
ActiveWorkbook.Worksheets.Add.Name = "Feuil2"
Sheets("Feuil2").Cells.ClearContents
Sheets("Feuil2").Cells.Borders.LineStyle = xlNone
Sheets("Feuil2").Cells.MergeCells = False
Worksheets("Commandes").Select

'recherche parmi les cellules de celle ou il y a CA
Set ca = Cells.Find("CA", LookIn:=xlValues, lookat:=xlWhole)
If ca Is Nothing Then
MsgBox ("Pas de colonne CA")
Exit Sub
End If
'recherche parmi les cellules de celle ou il y a Tritement
Set c = Cells.Find("Traitement", LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
MsgBox ("Pas de colonne TRAITEMENT")
Exit Sub
End If
'Classement par ordre de date de la colonne D
Rows(c.Row + 1 & ":" & Cells(65536, c.Column).End(xlUp).Row).Sort Key1:=Range("D" & c.Row), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'on copie l'en-tete en Feuil2
Rows("1:" & c.Row).Copy Destination:=Sheets("Feuil2").Range("A1")
ligne = c.Row
'balayage de la colonne ou i y a traitement (c.column)de la ligne c.row+1
'a la derniere ligne non vide
For n = c.Row + 1 To Cells(65536, c.Column).End(xlUp).Row
'Si le nbre entier representant la date (de la colonne ou il y a traitemen)
'converti en date est inferieur ou egal a range("A4") alors
'on passe par le nbre entier parceque la colonne a la date et l'heure
If CDate(Int(Cells(n, c.Column))) <= CDate(Range("A4")) Then
'on compte le nombre de lignes
nb = nb + 1
'on totalise les CA
totca = totca + Cells(n, ca.Column)
'on copie la ligne en Feuil2
Rows(n).Copy Destination:=Sheets("Feuil2").Cells(n, 1)
End If
Next n
Sheets("Feuil2").Range("A3") = "Commandes a traitement <= au "
MsgBox (nb & " commandes au " & Range("A4") & " en PTF PMP pour un CA total de " & totca)
'
End Sub
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

La bonne nouvelle, c'est que si je déclare les variables jour, mois et an en integer ça me renvoie une chaine plus proche de ce que je recherche.... Mais pour autant,

Application.Workbooks(machaine).Sheets("Commandes" ).Activate

ne semble pas marcher....

Quelqu'un saurait-il pourquoi????

Merci de votre aide

Vilipendboy
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

J'ai essayé avec string et integer mais ça ne marche pas... Je pense que la chaine de caractère associée à machaine est bonne mais l'activation du classeur via :

Application.Workbooks(machaine).Sheets("Commandes" ).Activate

ne marche pas...

Est-ce une erreur dans les espaces générés dans ma chaine ou autre chose?...

Une autre idée? Un expert dans les environs?

A+
Vilipendboy
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

Oui, je l'ai fait tout à l'heure et ça marche bien si dans cette partie de code je mets:
Application.Workbooks("Commandes envoyées par jour - 29 2 2008.xls").Sheets("Commandes").Activate

c'est peut-être le .xls qui est à préciser mais j'ai testé tout à l'heure avec :

machaine = "Commandes envoyées par jour - "
machaine = machaine & Str(jour) & " " & Str(mois) & " " & Str(an) & ".xls"

sans plus de résultats....

je sèche... Est ce que ce ne serait pas la déclaration de machaine en string qui serait incompatible avec les caractéristiques de workbooks???? je ne sais pas si je suis clair....

A+
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

Salut Vilipendboy
Re François
Bonsoir le Fil

je pense qu'il manque aussi le Type du Fichier

machaine = machaine & Str(jour) & " " & Str(mois) & " " & Str(an) & ".xls"
puis
Application.Workbooks(machaine).Sheets("Commandes" ).Activate
Arff pas vu la réponse Lol
quel message d'erreur as tu ?????
Bonne fin de Soirée
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

Hello ChTi160,

I AM HAPPY !!!! J'ai trouvé!!!!
en fait, quand tu associes jour, mois et an, ça génère automatiquement un espace du coup le nom de fichier était faux... Je l'ai trouvé en associant à ma msgbox de contrôle la copie du nom du fichier en question...

Du coup, il faut effacer les & " " & et ça marche nickel !!!! Enfin, on verra lundi avec le nouveau fichier...

En tout cas merci beaucoup pour tout, merci François, merci chTi160 et merci le Forum!

Vu que le site n'arrête pas de m'aider, j'ai pris le temps de verser ma cotisation...

I AM XLDaccro ou addict au choix

Bonne soirée et RDV pour de nouvelles aventures

Vilipendboy
 
Re : Vba : Changement Automatique De Nom De Fichier A Ouvrir

re
voila un test qui fonctionne
les deux classeurs sont ouvert la macro ce trouve dans le module1 du Classeur1 par exemple
Code:
Sub test()
Dim Jour As String
Dim Mois As String
Dim An As String
Dim Machaine As String
 Jour = Format(Day(Date), "00")
 Mois = Format(Month(Date), "00")
 An = Year(Date)
  Machaine = "Truc"
Machaine = Machaine & " " & CStr(Jour) & " " & CStr(Mois) & " " & _
                                                             CStr(An) & ".xls"

Application.Workbooks(Machaine).Sheets("Commandes").Activate
End Sub
dans l'attente
Arfff encore trop tard
effectivement il faut que ta macro qui génére le nom du fichier ai le même format
Set WkB =WorkBooks.Add
With WkB
.Name ="Truc" & " " & Jour & " " & Mois & " " & An & ".xls"
End With
attention au espaces Lol
Bonne fin de Soirée
 
Dernière édition:
- 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

Réponses
3
Affichages
880
Retour