Copie d'une page vers une autre
Suite de ce fil:
https://www.excel-pratique.com/forum/viewtopic.php?t=2279&start=10
Je me rends compte que la copie ne fonctionne pas comme je le voudrais. En effet, il copie les formules et non les valeurs obtenues.
Autrement dit, j'obtiens au final des jolis tableaux parfaitement mis en page, mais complètement vides... (à l'ouverture du fichier, il me propose de mettre à jour les liens, mais je ne veux pas ça puisque le fichier original n'est pas sauvegardé)
Voici le contenu de ma macro:
Sub Save_And_Close()
Dim Nom As String
Nom = Worksheets("Result").Range("C7")
Sheets("Result").Copy
ActiveWorkbook.SaveAs Filename:="I:\KWIKTECH\" & Nom & ".xls", FileFormat:=xlNormal
ActiveWorkbook.Close
Windows("KWIKTECH.xls").Activate
End Sub
Merci de m'aider, c'est assez urgent, évidemment
balty
Salut le forum
Balty modifie le début de ton code, deux lignes à inserer
Sheets("Result").Copy
Cells.Copy
Cells.PasteSpecial xlPasteValues
Mytå
Yeah, ça marche !
Je vais devoir finir par vous offrir une bonne bière un d'ces quatres
Merci Mytå !
Salut,
J'ai réutilisé cette macro dans un autre fichier, pour exporter une page.
Sub Test()
Dim Nom As String
Sheets("Quick Quote").Copy
Cells.Copy
Cells.PasteSpecial xlPasteValues
Nom = Worksheets("Input").Range("AA10")
ActiveWorkbook.SaveAs Filename:="C:\KWIKQUOTE\" & Nom & ".xls", FileFormat:=xlNormal
ActiveWorkbook.Close
Windows("KWIKQUOTE.XLS").Activate
End Sub
Malheureusement, il m'affiche l'erreur suivante quand j'exécute la macro:
runtime error '9':
Subscript out of range
Je dois préciser que j'ai le code suivant dans la page que je veux copier. Ce code met à jour une "pivot table" (connais pas le nom français) se trouvant dans une autre page:
Private Sub Worksheet_Activate()
Set pvtTable = Worksheets("BOM PROJECT").Range("B12").PivotTable
pvtTable.RefreshTable
End Sub
Donc, savez-vous comment contourner le problème ?
Merci
Salut Balty et le forum
Déplace cette ligne Nom = Worksheets("Input").Range("AA10")
Directement sous le Dim Nom As String
Car il cherche la feuille "Input" dans le nouveau fichier créer.
Reviens si cela ne fonctionne pas mieux
Mytå
P.S. Pivot Table c'est l'équivalent d'un Tableau Croisé Dynamique (TCD)
Salut,
J'ai fait la modif que tu proposes, mais ça n'arrange pas mon problème, il m'indique toujours un message d'erreur.
En fait, je crois comprendre le problème:
Le code que j'ai dans ma page originale (appelons la: "PAGE DEPART") demande de rafraichir un Tableau Croisé Dynamique qui se trouve dans le même document, mais sur une autre page ("AUTRE PAGE").
Alors, quand je copie ma PAGE DEPART vers un nouveau document, une fois la copie faite, il exécute le code qui rafraichit un Tableau Croisé Dynamique. Sauf que la page contenant ce TCD n'existe pas (puisque je n'ai copié qu'une seule page).
C'est un peu compliqué à expliquer, mais pour résumer, je pense qu'il faudrait que le code qui rafraichit mon TCD automatiquement ait une condition du genre:
Si "AUTRE PAGE" existe, alors rafraichit le Tableau Croisé Dynamique de la case X contenue dans "AUTRE PAGE", sinon, ne fais rien.
C'est possible ça ?
Voici mon code actuel, qui rafraichit ma page appelée "Result" dès que je l'ouvre:
Private Sub Worksheet_Activate()
Set pvtTable = Worksheets("Calculation").Range("AD9").PivotTable
pvtTable.RefreshTable
Set pvtTable = Worksheets("Calculation").Range("AQ27").PivotTable
pvtTable.RefreshTable
End Sub
(dans mon cas, il rafraichit même deux Tableau Croisé Dynamique en même temps)
Merci pour votre aide.
balty
EDIT: remplacement de "pivottable" par "Tableau Croisé Dynamique"
Salut Balty et le forum
Essaye avec le code suivant, cela devrait résoudre ton problème
Private Sub Worksheet_Activate()
If FeuilleExiste("Calculation") = False Then Exit Sub
Set pvtTable = Worksheets("Calculation").Range("AD9").PivotTable
pvtTable.RefreshTable
Set pvtTable = Worksheets("Calculation").Range("AQ27").PivotTable
pvtTable.RefreshTable
End Sub
Function FeuilleExiste(Nom$) As Boolean
'Vérifie si la feuille existe
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
End Function
Mytå
Je n'avais pas eu le temps d'essayer, mais ça fonctionne... évidemment
Merci à toi Mytå (et aux autres)