USF pour sauvegarder plusieurs fihciers

  • Initiateur de la discussion Jean
  • Date de début
J

Jean

Guest
Bonjour à tous

Voici ce que je voudrais réussir à faire:
A) faire un USF (ça je suis capable)
B) y placer un combobox avec le nom de tous les mois (ça je suis capable)
C) choisir un mois et ajouter le nom de ce mois au début du nom d'un dizaine de fihciers excel que je dois sauvegarder après chaque mois (ça je n'y arrive pas).

Exemple: janvierclasseur1.xls
janvierclasseur2.xls

Voici le code pour le usf:
Private Sub UserForm_Initialize()
Dim Mois(1 To 12) As String
Dim i As Integer
For i = 1 To 12
Mois(i) = Format(DateSerial(1, i, 1), "mmmm")
Me.ComboBox1.AddItem Mois(i)
Next i
End Sub

Merci pour votre aide


Jean
 
Z

Zon

Guest
Salut,

L'instruction Name permet de renommer un fichier, en la mettant dans une boucle cela fait l'affaire.

à mettre dans l'évènement click d'un commandbutton par exemple:

with combobox1
if .listindex=-1 then exit sub
'Répertoire C:\LenomdeTonrepertoire
renommerfichierg "C:\LenomdeTonrepertoire\*.*",.value,".xls"
'Répertoire C:\LenomdeTonrepertoire et tous ses sousrepertoires
'renommerfichierg "C:\LenomdeTonrepertoire\*.*",.value,".xls",16

end with


Sub RenommerFichierG(Rep$, Nouveau$, Ext$, Optional SousRep As Byte = 0)
Dim Ancien$
Ancien = Dir(Rep, SousRep) 'Récupère le 1 er fichier
While Ancien <> ""
If Right(Ancien, Len(Ext)) = Ext Then
Name Ancien As Nouveau & Ancien
End If
Ancien = Dir 'On passe au 2 nd , 3 eme ....
Wend
End Sub

A+++
 
J

Jean

Guest
Bonjour Zon et au forum

Je suis désolé Zon mais j'ai un message d'erreur # 53 Fichier introuvable et le débogeur me dirige vers la ligne suivante: Name Ancien As Nouveau & Ancien

J'ai créé un commandbutton dans mon usf et j'ai copié la première partie de ton code dedans, ce qui donne:
Private Sub CommandButton1_Click()
With ComboBox1
If .ListIndex = -1 Then Exit Sub
'Répertoire C:\Jean\test
RenommerFichierG "C:\Jean\test*.*", .Value, ".xls"
'Répertoire C:\Jean\test
RenommerFichierG "C:\Jean\test\*.*", .Value, ".xls", 16
End With
End Sub

Et j'ai copié le reste de ton code de la façon suivante:
Sub RenommerFichierG(Rep$, Nouveau$, Ext$, Optional SousRep As Byte = 0)
Dim Ancien$
Ancien = Dir(Rep, SousRep) 'Récupère le 1 er fichier
While Ancien <> ""
If Right(Ancien, Len(Ext)) = Ext Then
Name Ancien As Nouveau & Ancien
End If
Ancien = Dir 'On passe au 2 nd , 3 eme ....
Wend
End Sub

Si jamais tu as une solution je te remercie

Jean
 
Z

Zon

Guest
Re,

C'est une ou l'autre que tu dois utilisé, il te manque un \ dans la 1ére:

RenommerFichierG "C:\Jean\test\*.*", .Value, ".xls"

La 2 ème, je te l'ai mis au cas où tu voudrais le faire dans les sous répertoires.

A+++
 
Z

Zon

Guest
Re,

Excuses moi aprés vérif, il manque un chdir(Je le mets ailleurs d'habitude) pour changer le répertoire courant pour que Name puisse fonctionner:

Sub RenommerFichierG(Rep$, Nouveau$, Ext$, Optional SousRep As Byte = 0)
Dim Ancien$
ChDir (Rep)
Ancien = Dir("*.*", SousRep) 'Récupère le 1 er fichier
While Ancien <> ""
If Right(Ancien, Len(Ext)) = Ext Then
Name Ancien As Nouveau & Ancien
End If
Ancien = Dir 'On passe au 2 nd , 3 eme ....
Wend
End Sub

Tu appelles ainsi:

RenommerFichierG "C:\Jean\test\", .Value, ".xls"


A+++
 
J

Jean

Guest
Rebonjour

Encore une fois désolé mais j'ai toujours un message d'erreur au niveau de la ligne suivante: Name Ancien As Nouveau & Ancien

Lorsque je pointe sur chacune des variables voici ce que j'obtiens:
Name = "userform1"
Ancien = "test sauvegarde.xls"
Nouveau = "janvier"
Ancien = "test sauvegarde.xls"

Est-ce que l'erreur ne vient pas du fait que la variable Name = "userform1"

Je te remercie encore une fois pour ton aide.


Jean
 
Z

Zon

Guest
Re,

Tu peux avoir un message en effet mais ce n'est pas le même numéro, 75 alors c'est que le fichier en question est ouvert, j'avais oublié de préciser qu'avec Name il faut les fichiers fermés. Maintenant que tu connais les erreurs tu peux rajouter la gestion de celles-ci.

A+++
 

Discussions similaires

Statistiques des forums

Discussions
312 339
Messages
2 087 407
Membres
103 539
dernier inscrit
RAPH2012