VBA: Copie valeur et feuille dans un autre document.

Kiseki

XLDnaute Occasionnel
Bonjour,

Je possède un document contenant une facture dynamique.


Je souhaite copier la feuille de la facture mais seulement les valeurs, elle ne devras plus être dynamique donc.

Ainsi je puis dans ce nouveau document contenir l'ensemble des factures et faire des analyse.


En résumer avoir un bouton pour copier les valeurs et mise en forme de la facture dans un autre document (nom de feuille "facture 1",2,3,...)

En épurant l'enregistreur de macro j'obtient :

Code:
Sub copy_facture()
    Range("A1:K64").Select
    Selection.Copy
    Windows("Facture.xlsx").Activate
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Feuil1").Select
    Sheets("Feuil1").Name = "Facture 1"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub

Mais le document Facture.xlsx peut être fermer et le nom de la feuille doit s'incrémenter en +1.



Si possible, il serait mieux de copier la feuille et de supprimer les liaisons ensuite, le nom de la feuille serais renommée en "Facture [Nombre de feuille]" (ma première feuille serais "Analyse" suivie de la dernière feuille copiée (sinon mes formulaire de case à cocher ne ce copie pas bien apparemment).


Je vous remercie d'avance.
 
Dernière édition:

flyonets44

XLDnaute Occasionnel
Re : VBA: Copie valeur et feuille dans un autre document.

Bonjour
tu peux essayer ce code -non testé-
sub copysheet
Sheets("source").Copy after:=Sheets(Sheets.Count)
Sheets(count).Name = "Facture 1"
with sheets(count).cells
. copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
end with
end sub
 

Kiseki

XLDnaute Occasionnel
Re : VBA: Copie valeur et feuille dans un autre document.

Merci,

Mais cela ne fonctionne pas.

Si j'ai bien compris tu définis la source, mais c'est la destination qu'il faut.

A coter de ma facture j'ai le bouton qui fait référence à la macro.


Néanmoins ceci fonctionne :
Code:
Sub CopyFacture()
    Range("A1:K64").Copy
    Windows("Facture.xlsx").Activate
    Sheets.Add After:=Sheets(Sheets.Count)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub

Je désirerait maintenant que la nouvelle feuille créer ce place après "Analyse" et ce nome "1", la suivante "2" et ainsi de suite (soit le nombre de feuille existante à ce moment là).

Le fichier Facture.xls (donc la destination) peux être fermer.



En complément j'aimerai aussi que l'on ne puisse pas utiliser cette macro si la facture n'a pas changer pour ne pas avoir de doublon sinon un message d'information de doublon, mais ça reste un luxe, ce n'est pas le plus important.
 

Discussions similaires

Réponses
5
Affichages
225

Statistiques des forums

Discussions
313 060
Messages
2 094 926
Membres
106 128
dernier inscrit
lopierre