Format de la feuille lors que copie de la feuille avec module
Bonjour.
J'ai un module qui sert à créer une copie de la feuille active.
Pour les données tout est conforme, mais le format de la feuille n'est pas identique (largueur de colonnes, taille du texte etc.)
Je crois que ce sera un pasteformat mais je ne sais pas trop où l'intégrer.
MErci de votre support
Sub ajoutfeuille()
'*********************************
'Module servant a créer une copie de la feuille remplir
'****************************
Dim nom_souhaite$, nom_feuille$
nom_souhaite = Range("C6").Value '<<<<<< remplacer
nom_feuille = nom_souhaite '1er test avec nom souhaité
While WsExists(nom_feuille) 'tant que la feuille nommée nom_feuille existe, on exécute ce qui suit :
i = i + 1 'incrémentation
nom_feuille = nom_souhaite & "(" & i & ")" 'nom_feuille = nom_souhaite & indice incrémenté pour nouveau test
Wend
Worksheets.Add After:=Worksheets("remplir")
With ActiveSheet
Worksheets("remplir").Range("A1:h51").Copy Destination:=.Cells(1, 1)
.Name = nom_feuille
End With
'Worksheets("remplir").Activate
End SubBonjour,
Pour garder le format de la feuille, le plus simple serait de copier (voir ci-dessous) la feuille et pas uniquement une plage de cellules.
Sub ajoutfeuille()
'*********************************
'Module servant a créer une copie de la feuille remplir
'****************************
Dim nom_souhaite$, nom_feuille$
Dim wsTmp As Worksheet
nom_souhaite = Range("C6").Value '<<<<<< remplacer
nom_feuille = nom_souhaite '1er test avec nom souhaité
While WsExists(nom_feuille) 'tant que la feuille nommée nom_feuille existe, on exécute ce qui suit :
i = i + 1 'incrémentation
nom_feuille = nom_souhaite & "(" & i & ")" 'nom_feuille = nom_souhaite & indice incrémenté pour nouveau test
Wend
Sheets("remplir").Copy After:=Sheets("remplir")
ActiveSheet.Name = nom_feuille
'Worksheets("remplir").Activate
End SubBonjour Cylfo,
Le problème que je rencontre est que lorsque je fais cette opération mes modules de la page source restes "accrochés" et se retrouve sur la nouvelle page copiée.
J'ai donc besoin de 2 choses l'une, copier les données et le format de page ou effacer les modules contenue dans la page source.
Merci de votre support :)
Bonjour,
Ci-dessous une proposition de code que j'ai testé avec un jeu de données que j'ai fabriqué (pas de fichier joint au message ... donc risque que le jeu d'essai ne soit pas représentatif) comportant des polices différentes, des formats différents de cellules, une mise en forme conditionnelle, une hauteur de ligne de titre ... ça fonctionne
Je te laisse tester sur tes données.
Sub ajoutfeuille()
'*********************************
'Module servant a créer une copie de la feuille remplir
'****************************
Dim nom_souhaite$, nom_feuille$
nom_souhaite = Range("C6").Value '<<<<<< remplacer
nom_feuille = nom_souhaite '1er test avec nom souhaité
While WsExists(nom_feuille) 'tant que la feuille nommée nom_feuille existe, on exécute ce qui suit :
i = i + 1 'incrémentation
nom_feuille = nom_souhaite & "(" & i & ")" 'nom_feuille = nom_souhaite & indice incrémenté pour nouveau test
Wend
Worksheets.Add After:=Worksheets("remplir")
With ActiveSheet
.Name = nom_feuille
Worksheets("remplir").Range("A1:H51").Copy
Worksheets(nom_feuille).Paste Destination:=.Cells(1, 1)
Worksheets(nom_feuille).Cells(1, 1).PasteSpecial Paste:=xlPasteColumnWidths
' Si besoin : Pour la hauteur des lignes, s'il n'y a que la ligne de titre voir ci-dessous, sinon si
' les hauteurs ne résultent pas de l'option de renvoi automatique à la ligne, il faudrait ajouter une boucle.
Worksheets(nom_feuille).Rows(1).RowHeight = Worksheets("remplir").Rows(1).RowHeight
End With
'Worksheets("remplir").Activate
End Sub