Version imprimable
le nom du fichier ?
possible que ce soit une interprétation sur le poste soit
le PC ou tu es considère le classeur en tant que "Classeur" soit il faut lui donné le nom de "Classeur.xls"
j'ai eu ce problème sur divers classeurs l'ouverture avec classeur marchait sur un PC mais la fermeture demandait l’extension ( et d'autre c'était le contraire :calim2: )
Slt
J'explique le contexte vite fait: Grace à une macro j'ai des PJ de mes mails qui arrivent dans un dossier du disque dur à partir de la je les renomme, mais avant ça j'aimerais les supprimer si en C16 la date est différente de la Veille
@Daranc what??? :)
@bbil! J'avais déjà essayé qq chose avec Set tu proposes quelque chose comme ça?
Mais ça me met erreur d'automation sur la ligne wk.close 8OCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\" ' chemin a adapter 'on va lister tout les fichiers de type excel en filtrant l'extention filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*" fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché 'c'est parti Do While fichiers <> "" ' Set wk = Workbooks.Open(chemin & fichiers) If Range("C16") <> Veille Then wk.Close wk.DeleteFile (chemin & fichiers) End If If Range("B13") = "" Then (....)
Ma fonction veille
Code:
1
2
3
4
5
6 Private Function Veille() As Date Dim d As Byte d = DatePart("w", Date, vbSunday) 'Si Date est Dimanche ou Lundi, on prend Vendredi comme étant la veille. 'Sinon, on prend j-1 Veille = Date - IIf(d <= 2, d + 1, 1) End Function
bonjour,
Il n'y as pas de raison pour que cela ne marche pas .. relis les reactions a tes precedents essais avec set..
Revois aussi l'organisation de ton code tu dois fermer ton fichier excel qu'il soit de la veille ou pas .... Memorise la valeur de ta cellule.. Ferme le classeur puis utilise kill ou pas pour effacer ton fichier
Si tu ne maitrise pas a fond le VBA d'excel , son fonctionnement et le fonctionnement de l'utilisateur de ton code precise TOUJOURS la feuille concernèe devant tes instructions range..cells..
N'invente pas des procedure : deletefile? Je connais pas..Code:IF wk.sheets("feuille1").range("C16").,,,
Mais si ça existe regarde sur les derniere ligne mon petit bout de code s'incere dans
Ce code fonctionne parfaitement donc je ne vois pas pourquoi tu disCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 Sub change_le_nom_des_xls() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim chemin As Variant Dim filtre As Variant Dim fichiers As Variant Dim Workbook As Variant Dim objFSO As Variant chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\" ' chemin a adapter 'on va lister tout les fichiers de type excel en filtrant l'extention filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*" fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché 'c'est parti Do While fichiers <> "" ' Workbooks.Open (chemin & fichiers) 'Et je commence a renommer mes fichier If Range("B13") = "" Then 'Macro pour la date et le sens de l'odre Range("E15") = "=YEAR(R[-8]C[-3])" Range("F15") = "=MONTH(R[-8]C[-4])" Range("G15") = "=DAY(R[-8]C[-5])" Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]" If Range("C20") = "Vente" Then Range("C20").Value = "SELL" If Range("C20") = "Achat" Then Range("C20").Value = "BUY" 'on sauve le classeur sous le nom ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWorkbook.Close 'on va supprimer le fichier portant l'ancien nom Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile (chemin & fichiers) fichiers = Dir End If If Range("B13") = "OPERATION N°" Then 'Macro pour la date et le sens de l'ordre Range("E15") = "=YEAR(R[-7]C[-3])" Range("F15") = "=MONTH(R[-7]C[-4])" Range("G15") = "=DAY(R[-7]C[-5])" Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]" If Range("C20") = "Vente" Then Range("C20").Value = "SELL" If Range("C20") = "Achat" Then Range("C20").Value = "BUY" 'on sauve le classeur sous le nom ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B9") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWorkbook.Close 'on va supprimer le fichier portant l'ancien nom Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile (chemin & fichiers) fichiers = Dir End If Loop End Sub
Je comprend toujours pas pourquoi ça ne marche pas kan apresCitation:
tu dois fermer ton fichier excel qu'il soit de la veille ou pas
je fais çaCode:Workbooks.Open (chemin & fichiers)
ça serait plus logique là je ne comprend pas le mot clef set même avec F1 et le net 8OCode:
1
2
3
4
5
6
7
8
9 If Range("C16") <> Veille Then Workbooks(chemin & fichiers).Close 'Je ferme le fichier pour pouvoir le supprimer 'Et je le suprimme Set objFSOA = CreateObject("Scripting.FileSystemObject") objFSOA.DeleteFile (chemin & fichiers) End If
Oui mais cette procédure ne s'applique pas à un objet workbook ! et wk et un objet workbook
pour ce qui est du "set wk.. " il y as quantités d'exemples sur ce forum ..
oubli ton ...
tu utilise la un mauvais index pour ta collection workbooks. C'est vraiment plus clair et plus facile à gérer avec une variable workbook.Code:Workbooks(chemin & fichiers).Close
bonjour
dis moi si je ne me trompe pas b8 ou b9 c'est bien la cellule a droite de la cellule ou il y a le mot reference ????? selon les présentations
au plaisir