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
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?