drik56
Messages postés127Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 8 juillet 2008
-
22 mai 2008 à 11:24
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008
-
22 mai 2008 à 15:09
Salut tout le monde,
Je fais appel a vous car je galere. J'ai un tableau avec une requete qui va chercher des données sur un serveur. Pour l'instant pas de probleme. J'ai un autre tableau qui traite ses données et les met un peu en forme. Je voudrais maintenant enregistrer une copie du tableau automatiquement (par mois a une heure précise). C'est a dire que tout les mois (le 30 ou 31) a 23h59 on enregistre une copie du tableau avec juste les valeurs (et la mise en forme ^^) dans le meme répertoire que le fichier de base, sous le nom "mmmm aa" (ex: Mai 08).
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008 22 mai 2008 à 13:54
voilà ce que j'ai fait récemment, en reutilisant du code du forum;
en fait je sauve une première fois sous le nom de sauvegarde, avec le bon nom et vers un répertoire et une deuxième fois le document d'origne sous le meme nom, meme répertoire:
résultat : mon .doc (ou pour Excel, je pense que c'est la même chose, il faudra adapter le save) est sauvé qqpart, et, je 'retrouve ' mon fichier en cours.
code à mettre dans un evenement:
Repertoire_en_cours = ThisDocument.Path
StrDocName = ActiveDocument.Name
_______________________
Sub savefic(fichier, rep)
' savefic Macro
Dim Rep As String
Call CREER_DOSSIER(Rep)
ChangeFileOpenDirectory Rep
ActiveDocument.SaveAs FileName:=fichier, _
FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=True, SaveNativePictureFormat:=False, SaveFormsData:= _
False, SaveAsAOCELetter:=False
End Sub
Public Sub CREER_DOSSIER(ArboDossier As String)
'-Créer un ou plusieurs dossiers teste l'existence du dossier avant de le créer
'-L'argument peut-etre passer avec le nom du fichier
'-Cette procédure permet de créer le chemin complet donné en paramètre.
'-Créer le 05/2002
On Error Resume Next
'-Déclaration
Dim lgWhile As Long
Dim PosPoint As Long '-Position du point
'-Traitement pour ajout du slash
'-Test: si la chaîne est passer avec le nom du fichier ou simplement le
'chemin du ou des dossiers à créer
'-Recherche le point de l'extension du fichier
PosPoint = InStr(ArboDossier, ".")
If PosPoint = 0 Then
If Right(ArboDossier, 1) <> "" Then ArboDossier = ArboDossier & ""
End If
'-Repère le départ du premier répertoire après la lettre du lecteur.
lgWhile = InStr(4, ArboDossier, "")
Do While (lgWhile > 0)
'-Vérifie l'existence du répertoire.
If Dir$(Left$(ArboDossier, lgWhile), vbDirectory) = vbNullString Then
'-Crée le répertoire.
MkDir Left$(ArboDossier, lgWhile)
End If
lgWhile = InStr(lgWhile + 1, ArboDossier, "")
Loop
End Sub
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008 22 mai 2008 à 14:19
j'avais à sauver un document sous un autre nom, tout en gardant celui ci.
si on fait le 'save' comme un enregistré sous, tu suave bien ton document avec le nom que tu veux, c'est l'objectif des 3 lignes:
repertoire = "D:\REP_DE_SAUVEGARDE"
fichier_transmis = "nomfic" & Mid(Date$, 1, 2) ' je mets le mois en cours
Call savefic(fichier_transmis, repertoire)
mais alors, mon document actuel à 'perdu' son nom d'origine (ta 'base')
pour le restaurer, je resauve de la meme manière, MAIS
auparavant j'ai sauvé et le répertoire et le nom du document!
il faut mettre ces deux Sub dans un 'module' de ton projet.
il faut mettre les autres lignes dnas un 'évènement', un bouton ou un 'valider', enfin...un moment où tu décides de faire executer ce code...
si tu n'es pas pressé, j'essaierai de faire un.excel pour le joindre à cette contribution...
a+
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 22 mai 2008 à 11:34
Je ne sais pas exactement quel est ton problème, mais tu pourrais utiliser un fichier base qui sert de modèle avec la mise en forme nécessaire. Quand tu veux sauvegarder une copie, tu utilises ce modèle pour y copier les données en valeur et tu sauvegardes sous le nom désiré.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
drik56
Messages postés127Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 8 juillet 2008 22 mai 2008 à 11:41
Salut MPI et merci de ta réponse. ce que tu me propose est faisable mais comment fais tu pour copier les données dans le fichier qui servirait de base. Et comment fais tu pour dupliquer ce fichier et changer le nom ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 22 mai 2008 à 11:47
Comme tu as déjà créé toi-même ce fichier modèle, tu connais donc le nom et le chemin. Il ne te reste qu'à l'ouvrir, copier les données (Cells.Copy) et les coller dans le modèle
Workbooks("MonModele.xls").Sheets("MaFeuille").Range("A1").PasteSpecial xlPasteValues
Pour le nom, ça dépend comment tu penses procéder... Est-ce la date du jour ? le nom d'un onglet, la valeur d'une cellule ? ....
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
drik56
Messages postés127Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 8 juillet 2008 22 mai 2008 à 11:53
En fait si je fait comme tu dis j'aurais un fichier ou je lance ma requete et un autre qui me servirais de base. Mais je voudrais créer un fichier tout les mois en partant de la base mais je garderais la base comme modele.Donc j'aurais mon fichier requete, ma base et les fichers mois (Mai 08, Avril 08 ....)
drik56
Messages postés127Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 8 juillet 2008 22 mai 2008 à 12:56
Ouai mais la avec ton code je rempli la base mais comment je fait pour enregistrer la base sous un autre nom (Mai 08 ...) en gardant quand meme la base ? faire un enregistrer sous (un autre nom)
End Sub
Sub savefic(fichier, rep)
Dim repertoire As String
' savefic Macro
' Macro enregistrée le 14/03/2008 par Admin
Call CREER_DOSSIER(repertoire)
ChDir rep
ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub
Public Sub CREER_DOSSIER(ArboDossier As String)
'-Créer un ou plusieurs dossiers teste l'existence du dossier avant de le créer
'-L'argument peut-etre passer avec le nom du fichier
'-Cette procédure permet de créer le chemin complet donné en paramètre.
'-Créer le 05/2002
On Error Resume Next
'-Déclaration
Dim lgWhile As Long
Dim PosPoint As Long '-Position du point
'-Traitement pour ajout du slash
'-Test: si la chaîne est passer avec le nom du fichier ou simplement le
'chemin du ou des dossiers à créer
'-Recherche le point de l'extension du fichier
PosPoint = InStr(ArboDossier, ".")
If PosPoint = 0 Then
If Right(ArboDossier, 1) <> "" Then ArboDossier = ArboDossier & ""
End If
'-Repère le départ du premier répertoire après la lettre du lecteur.
lgWhile = InStr(4, ArboDossier, "")
Do While (lgWhile > 0)
'-Vérifie l'existence du répertoire.
If Dir$(Left$(ArboDossier, lgWhile), vbDirectory) = vbNullString Then
'-Crée le répertoire.
MkDir Left$(ArboDossier, lgWhile)
End If
lgWhile = InStr(lgWhile + 1, ArboDossier, "")
Loop
End Sub
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008 22 mai 2008 à 15:09
m'enfin...je crois que c'est tout bon...j'ai du adapter pour Excel...
voici la macro à exécuter par un 'bouton' avec ce code dans le 'click', par exemple
call EnvoyerRes
______________________le reste est à mettre dans un module (inserer un module dans le projet)
Sub EnvoyerRes()
'
Dim Chemin_sauvegarde_complet As String
DateDuJour = Mid(Date$, 4, 2) & "-" & Mid(Date$, 1, 2) & "-" & Mid(Date$, 7, 4)
Repertoire_en_cours = Application.Path ' récupère le nom du répertoire du départ du document
' recup nom du document
strdocname = ThisWorkbook.Name
'repertoire créé si besoin année \2008\
repertoire_sauvegarde = "D:\SAUVEGARDE" & "20" & Mid(Date$, 9, 2) & ""
End Sub
Sub savefic(fichier, rep)
Dim repertoire As String
repertoire = rep
' savefic Macro
' Macro enregistrée le 14/03/2008 par Admin
Call CREER_DOSSIER(repertoire)
ChDir rep
ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub
Public Sub CREER_DOSSIER(ArboDossier As String)
'-Créer un ou plusieurs dossiers teste l'existence du dossier avant de le créer
'-L'argument peut-etre passer avec le nom du fichier
'-Cette procédure permet de créer le chemin complet donné en paramètre.
'-Créer le 05/2002
On Error Resume Next
'-Déclaration
Dim lgWhile As Long
Dim PosPoint As Long '-Position du point
'-Traitement pour ajout du slash
'-Test: si la chaîne est passer avec le nom du fichier ou simplement le
'chemin du ou des dossiers à créer
'-Recherche le point de l'extension du fichier
PosPoint = InStr(ArboDossier, ".")
If PosPoint = 0 Then
If Right(ArboDossier, 1) <> "" Then ArboDossier = ArboDossier & ""
End If
'-Repère le départ du premier répertoire après la lettre du lecteur.
lgWhile = InStr(4, ArboDossier, "")
Do While (lgWhile > 0)
'-Vérifie l'existence du répertoire.
If Dir$(Left$(ArboDossier, lgWhile), vbDirectory) = vbNullString Then
'-Crée le répertoire.
MkDir Left$(ArboDossier, lgWhile)
End If
lgWhile = InStr(lgWhile + 1, ArboDossier, "")
Loop
End Sub