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