Enregistrement d'un fichier Excel par onglets

4matrice-test.zip (531.69 Ko)

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

@+

Rechercher des sujets similaires à "enregistrement fichier onglets"