Macro enregistrer classeur

Juan

XLDnaute Junior
Bonjour à tous,

N'ayant pas trouvé mon bonheur sur la toile (et comme je suis pas bien à l'aise en VBA), je me tourne vers vous. Voici l'objet de ma requête :
Je souhaite, grâce à un bouton, enregistrer en format/valeur mon classeur actif (si il est possible de "ne pas sélectionner quelques feuilles" et non de "sélectionner quelques feuilles" (en effet sur les 250 onglets que comprends mon classeur, seul 2 feuilles ne doivent pas être enregistrer mais je peux faire cette manip à la main), je suis preneur).

Voici mon code pour le moment :
Public Sub Sauvegarde() 'copie sauvegarde classeur
Dim nom As String
nom = Month(Date) - 1 & "-" & Year(Date) & " - Reporting Clients RGC"
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
rep = MsgBox("Fichier sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
End Sub

Cela fonctionne très bien mais il me copie le classeur avec ses formules. J'ai pensé a rajouter un :

Activeworkbook.copy

Mais je ne trouve pas la combine pour tout mettre ensemble.

merci de votre aide.
J.
 

Staple1600

XLDnaute Barbatruc
Re : Macro enregistrer classeur

Bonjour à tous

Juan
Essaies cette macro en l'adaptant à tes besoins (en changeant le nom des feuilles à exclure)
VB:
Sub testCopieValeursSeules()
Dim ws As Worksheet, wsArr(), NomFic$, nWBK As Workbook, i&
'création chaine pour nom du fichier
NomFic = ThisWorkbook.Path & "\" & Month(Date) - 1 & "-" & Year(Date) & " - Reporting Clients RGC"
ReDim wsArr(0)
'création d'un tableau avec le noms des feuilles choisies
For Each ws In ThisWorkbook.Worksheets
'on exclut deux feuilles dans la liste selon leur nom
    If Not ws.Name = "toto" And Not ws.Name = "tata" Then
    wsArr(UBound(wsArr)) = ws.Name
    ReDim Preserve wsArr(UBound(wsArr) + 1)
    End If
    Next ws
ReDim Preserve wsArr(UBound(wsArr) - 1)
'on créee une copie du classeur ne contenant que les feuilles désirées
Sheets(wsArr).Copy
Set nWBK = ActiveWorkbook
'le contenu de toutes les feuilles passe en valeurs seules
For i = 1 To nWBK.Worksheets.Count
With nWBK.Worksheets(i)
.UsedRange.Value = .UsedRange.Value
End With
Next i
'ici ajouter ton code pour sauvegarder la copie
nWBK.SaveAs NomFic & ".xlsx" ,  xlOpenXMLWorkbook
nWBK.Close
End Sub

PS: Test OK sur mon PC
NB: Avec cette macro, on obtient une copie en valeurs seules et sans macros.
Si tu veux garder les macros, il faut enregistrer en *.xlsm donc changer cette ligne en:
nWBK.SaveAs NomFic & ".xlsm" , xlOpenXMLWorkbookMacroEnabled
 

Juan

XLDnaute Junior
Re : Macro enregistrer classeur

Elle marche parfaitement ta macro !!

J'ai une dernière demande (parce qu'honnetement, j'essaie d'être autodidacte en vba mais c'est la galère lol). Je souhaite, au préalable de toute cela, enregistrer le fichier actif (histoire d'éviter d'oublier de le faire).

Mais je ne sais pas comment "l'insérer" dans le code...

merci de ton aide si t'as le temps !
J.
 

Staple1600

XLDnaute Barbatruc
Re : Macro enregistrer classeur

Bonsoir à tous

Mais je ne sais pas comment "l'insérer" dans le code...
Commence par enregister ton classeur tout en laissant tourner l’enregistreur de macros
Tu obtiendras alors la ligne de code VBA correspond à cette action.
La logique voudrait ensuite que tu copies/colles cette ligne de code en début de procédure mais après les déclarations de variables.

Je te laisse tenter l'expérience ;) pour t'encourager sur cette voie :
j'essaie d'être autodidacte en vba
(L'enregistreur de macros est très formateur pour cela)

Reviens nous dire si tu as réussi ;)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 737
Messages
2 091 500
Membres
104 961
dernier inscrit
LE GÉNIE ABDOU MAIGA