Export de plusieurs onglets choisi vers un nouveau fichier

Bonjour,

totalement novice en VBA j'ai cherché et trouvé quelques threads concernant le même souci que le mien.

Un gros fichier avec plein d'onglets, et très lourd, dont je souhaite envoyer quotidiennement trois des onglets au client.

(Beaucoup de rechercheV et d'index equiv, dont morceller le fichier occasionne des #ref chez le client qui n'a pas les onglets de base)

La solution= un bouton qui copie les onglets choisis, et dans un nouveau classeur, fait un coller pur et simple.

Avec ce code cela fonctionne,

Sub ExportReporting()

'

' ExportReporting Macro

Dim Chemin As String

Chemin = ThisWorkbook.Path & "\"

With ThisWorkbook

Sheets(Array("Suivi", "Tableau", "Synthèse", "Inventaire")).Copy

End With

With ActiveWorkbook

For i = 0 To .Sheets.Count

Sheets(i).Cells.Copy

Sheets(i).Cells.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Cells.Validation.Delete

Next

.SaveAs Chemin & "test.xls"

End With

'

End Sub

Cependant je ne souhaite pas que l'onglet "inventaire" soit exporté lui aussi.

Je le supprime donc, et avec ce code ci

Sub ExportReporting()

'

' ExportReporting Macro

Dim Chemin As String

Chemin = ThisWorkbook.Path & "\"

With ThisWorkbook

Sheets(Array("Suivi", "Tableau", "Synthèse")).Copy

End With

With ActiveWorkbook

For i = 0 To .Sheets.Count

Sheets(i).Cells.Copy

Sheets(i).Cells.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Cells.Validation.Delete

Next

.SaveAs Chemin & "test.xls"

End With

'

End Sub

Cela l'export se fait mais j'ai des #ref dans le ficheir de destination, alors qu'avec le PasteSpecial Paste:=xlPasteValues normalement on colle les valeurs et non les formules.

En sus, (là c'est vraiment du bonus) comment faire pour qu'à l'enregistrement il me propose juste le chemin actuel et me laisse choisir le nom au moment de l'enregistrement plutôt que de forcément le nommer (test) comme à l'heure actuelle?

Je me sens dépassé pour le coup et m'en remet à vos conseils éclairés.

D'avance merci pour votre temps!

Bonjour,

La numérotation des feuilles se fait à partir de 1 (variable i).

Pour le nom de fichier, voir InputBox.

Sub ExportReporting()
    Dim Chemin$, nomFichier$, i%
    Chemin = ThisWorkbook.Path & "\"
    With ThisWorkbook
    Sheets(Array("Suivi", "Tableau", "Synthèse")).Copy
    End With
    With ActiveWorkbook
        For i = 1 To .Sheets.Count
            Sheets(i).Cells.Copy
            Sheets(i).Cells.PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            Cells.Validation.Delete
        Next
        nomFichier = InputBox("Saisir le nom du fichier", "Saisie")
        If nomFichier <> "" Then
            .SaveAs Chemin & nomFichier
        End If
    End With
End Sub

Hello!

Tout d'abord merci pour ta réponse.

Je viens de tenter avec ce que tu me proposes, et le résultat est le même (hormis pour la petite editbox à la fin merci je ne connaissais pas)

Mais sur mon second onglet en tout cas j'ai toujours mes tableaux remplis de #ref (le dernier onglet lui n'est rempli que de graphiques nourris du second onglet) qui du coup sont à 0 égard aux #ref des dits tableaux)

Tu dis que tu ne rencontrais pas le problème quand la feuille Inventaire était copiée ?

Ton code aurait déjà du planter à cause de i =0.

Est-ce que les formules qui renvoient des #REF font référence à des données sur la feuille Inventaire ?

Alors concernant le i=0 j'ai fait une "bêtise" en le changeant avant d'envoyer le code, en effet cela marche avec i=1

pas avec i=0

En revanche pas de lien avec la feuille inventaire dans les formules, au contraire il y a des liens avec un onglet qui n'est pas uploadé, et pour le coup les valeurs se copient très bien.

C'est d'ailleurs toute la source de mon incompréhension...

D'autant qu'avec le pastevalues normalement on est sensé passer outre les références et ne coller que les valeurs non?

Est-ce que tu peux joindre un fichier avec quelques onglets sans données persos ?

Bon c'est compliqué j'ai tenté de garder l'esprit du fichier mais à l'origine dans l'onglet base client on est sur 2000 lignes et un peu plus de 6 Mo (d'où le souhait de fractionner).

De cet onglet par recherche V de l'identifiant de l'agence on retrouve dans le premier onglet les infos souhaitées.

Le statut dans le premier onglet une fois mis à jour, fait apparaitre l'agence dans l'onglet suivi des interventions, 2/3 colonnes remplies à la main quotidiennement, et cel met à jour tableau de bord et synthèse.

Comme tu me le demandais c'est l'extract logistique qui est lié par les formules à l'onglet "inventaire déployés"

Au demeurant, j'ai recréé complètement le fichier (et collé beaucoup de valeur sans mettre à jour les formules sinon j'en ai pour de longues heures) et testé ta première réponse, cela fonctionne...

Cela semble en effet nous mener sur la piste des formules, mais comment est-ce possible sachant que l'on demande à Excel de coller la valeur?

8anonymise.xlsm (421.42 Ko)
Rechercher des sujets similaires à "export onglets choisi nouveau fichier"