Dim nomsauvegarde As String
nomsauvegarde = (Feuil4.Range("D7").Value & Date$ & " .xls")
Sheets("dotation").Copy
ChDir "C:\ ' indique le répertoire
ActiveWorkbook.SaveAs Filename:=nomsauvegarde
jusque là tout va bien, mon problème c'est que j'aurai besoin de revenir dans mon autre classeur
pour supprimer les données de la feuille puisqu'elle est sauvegardée.
j'ai donc essayé :
sheet ("dotation").Select
Range("A14:G43").Select
Selection.Clearcontents
Mais seule s'effacent les données sur la sauvegarde alors que c'est l'inverse que je souhaite obtenir.
Si quelqu'un a une idée, elle sera la bienvenue, Merci
With ActiveWorkbook
.SaveAs (Feuil4.Range("D7").Value & Format(Now, "DD-MM-YYYY-HH-MM-SS") & " .xls")
.Close
End With
Presque parceque ma feuille va se loger dans les documents plutôt que dans le classeur archivage, aussi si quelqu'un sait pourquoi , je suis preneur, merci
Si je puis me permettre, je vais corriger deux erreurs :
Sauve = ThisWorkbook.Path & "C:\Users\Bureau\Documents\Boulot\archivage\"
==> Là, tu concatènes dans la variable Sauve le chemin du classeur contenant la macro et "C:\Users\Bureau\Documents\Boulot\archivage\". C'est pas très efficace ;-) ; en plus tu n'utilises pas cette variable dans le code...
.SaveAs (Feuil4.Range("D7").Value & Format(Now, "DD-MM-YYYY-HH-MM-SS") & " .xls")
==> Je suppose que Feuil4.Range("D7").Value contient uniquement le nom du fichier (sans le chemin). Du coup, le nom du fichier est correct, mais comme tu ne précises pas le chemin, le fichier est enregistré dans le répertoire par défaut : Documents.
Je n'ai pas testé ce code, mais je ne dois pas être loin de ce que tu cherches :
Code:
Dim Sauve As String
Sauve = "C:\Users\Bureau\Documents\Boulot\archivage\"
Worksheets("Dotation").Copy
With ActiveWorkbook
.SaveAs Sauve & Feuil4.Range("D7").Value & Format(Now, "DD-MM-YYYY-HH-MM-SS") & " .xls"
.Close
End With
En tout cas, c'est un très bon début : continue.
Le VBA, c'est très sympa, surtout que quand on galère, il y a un forum comme celui de excel-downloads
Bonjour le Forum,
Merci Kobaya, ta formule est exactement ce que je cherchais à faire depuis 3 jours, quand aux explications que tu apportes ,elles permettent d'avancer à pas de géant pour le débutant que je suis.
Bonne journée
Dim Sauve As String
Sauve = "C:\Users\Bureau\Documents\Boulot\archivage\"
Worksheets("Dotation").Copy
With ActiveWorkbook
.SaveAs Sauve & Feuil4.Range("D7").Value & Format(Now, "DD-MM-YYYY-HH-MM-SS") & " .xls"
.Close
End With
Bonjour a tous !
J'effectue moi aussi une manip' dans le même genre et vos conseils mon beaucoup aidés. Seulement 2 problèmes me ralentissent :
- J'aimerais copier, pas la feuille "dotation" entière mais les cellules ("A2:EC40"). Mais je n'arrive pas a trouver la syntaxe.
- Et ensuite j aimerais savoir s'il y a une formule me permettant d'éxécuter ma procédure au dernier jours du mois.
Pour ta première question j'ai pas le temps de faire l'essai cet après-midi, mais je pense que si tu lances l'enregistreur de macro , tu définis la zone que tu veux sauvegarder, puis tu arrêtes l' enregistrement; tu devrais obtenir la syntaxe que tu cherches.
merci à toi pour ta question et à phlaurent pour sa réponse qui va me servir prochainement
Merci beaucoup de votre aide ! il me reste un seul soucis concernant la procédure "BeforClose".
extrait de mon code :
Private Sub Beforeclose()
If Feuil4.Range("F1") = 0 Then
Dim Sauve As String
Dim name As String
Sauve = "C:\Documents and Settings\sagory-adr\Cuves\"
Worksheets("Rapport mensuel").Copy
.....
Cette procédure devrait ce lancé au moment ou je ferme mon tableau ? mais cela ne fonctionne pas!
Si je l'exécute manuellement elle marche très bien.
Si quelqu'un à déja utilisé beforeClose ce serait cool