Enregistrement d'un fichier Excel par onglets
Bonjour,
Je penser avoir trouvé mon module pour l'enregistrement de mon fichier par onglets avec le module suivant, qui fonctionne parfaitement.
Mais je me suis rendu compte que lord de mes enregistrements individuel de mes onglet toutes mes formules apparaissent.
J'aimerai savoir si c'est possible d'intégrer xlPastevaleur ou autre. Afin que mes enregistrements soir fait en collage de valeur tout en gardant ma présentation.
En espérant avoir le plaisir de vous lire.
En vous remerciant dés a présent d'avoir pris le temps de me lire.
Bien à vous
Dianec
Sub saveOngletEXCEL()
Dim ws
Dim newWk As Workbook
Dim objShell As Object, objFolder As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
If objFolder Is Nothing Then
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
End If
If Chemin <> "" Then
For Each ws In Worksheets
Set newWk = Workbooks.Add(xlWBATWorksheet)
ws.Copy newWk.Sheets(1)
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
newWk.SaveAs (Chemin & ws.Name & ".xlsx")
newWk.Close
Set newWk = Nothing
Next ws
End If
End Sub
Bonjour Dianec,
Voici le code modifié
Sub saveOngletEXCEL()
Dim ws
Dim newWk As Workbook
Dim objShell As Object, objFolder As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
If objFolder Is Nothing Then
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Exit Sub
End If
' Sinon
Chemin = objFolder.ParentFolder.parsename(objFolder.Title).Path & "\"
' Pour chaque feuille
For Each ws In Worksheets
ws.Copy
Set newWk = ActiveWorkbook
Cells.Copy
Selection.PasteSpecial Paste:=xlPasteFormats
Cells.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
newWk.SaveAs (Chemin & ws.Name & ".xlsx")
newWk.Close
Set newWk = Nothing
Next ws
End Sub
Pourquoi créer un nouveau classeur, alors que la copie d'une feuille le fait automatiquement
Perso, je n'utilise plus depuis longtemps l'objet shell pour choisir un répertoire, trop restrictif à mes yeux
@+
Bonjour,
Je débute sur VBA. J'essaye de trouver des éléments qui m'intéresse sur diffèrent poste, enregistrement de macro et recherche. je suis assez ouvert sur le sujet car ca m'intéresse il y a tellement de possibilité avec les macro ! ;)
J'ai essayé ta macro mais comme j'ai des cellules fusionnées ainsi que des images j'ai un blocage :[
Pense tu que je dois dans ma macro intégrer rang pour définir les cellules avec les formules afin de les copier en valeur ? par exemple :
Range("Tableau10113141517[[#All],[Tarifs 1 -12%]]").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteFormats
Selection.PasteSpecial Paste:=xlPasteValues
mon problème c'est que j'ai 6 onglet avec le même format et 5 avec d'autre format. Déjà que j'ai du mal avec une macro alors 6 macro
Concernant le nouveau classeur car j'aimerai que dans chaque nouveaux classeur enregistrer 2 onglets du même fichier ( l'onglet tarif + l'onglet "matrice par exemple" qui lui sera en format texte et toujours le même donc pas de problème avec les formules. Afin de l'envoyer individuellement à mes clients
et par curiosité par quoi remplace tu l'objet shell d'habitude? MsgBox ?
Merci BrunoM45 d'être aussi actif pour nous aider !
Bien à toi
Dianec
Re,
Voici ton fichier modifié, dans cette version, tu pourras voir :
- la copie d'un onglet tarif + matrice marius (pour l'exemple)
- l'utilisation de FileDialog() en remplacement de Shell
- la copie/collage spécial valeur de la colonne "D" de tarif qui contient des formules
A voir
@+