Microsoft 365 Copier / coller avec mise en forme VBA

  • Initiateur de la discussion Initiateur de la discussion marie3107
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

marie3107

XLDnaute Nouveau
Bonjour,

J'ai deux fichiers différents dont j'aimerais copier une feuille "RAPPORT DE COMPETENCES" dans un nouveau classeur.
J'ai créé la macro suivante :

Sub CopieFeuilles_INDIV()
'macro pour copier la feuille sur un nouveau classeur et sans les formules

Dim tablo, F As Object, n%, chemin$, test As Boolean, Fichier$, FileFormatNum
Dim NomClasseur As String
'Dim Fichier As Variant
Dim MaMessagerie As Object
Dim MonMessage As Object

ActiveSheet.Unprotect

Continuer = MsgBox("ATTENTION : Vous êtes sur le point de faire une copie du rapport de compétences. Souhaitez vous continuer ?", vbYesNo)
'MessagBox demandant de confirmer l'enregistrement du fichier


If Continuer = vbYes Then
'Si l'utilisateur répond oui au messageBox Alors

tablo = Array("RAPPORT DE COMPETENCES") 'noms des feuilles à copier

Set F = ThisWorkbook.Sheets(tablo)
With Application
n = .SheetsInNewWorkbook
.SheetsInNewWorkbook = F.Count
Workbooks.Add 'nouveau document
.SheetsInNewWorkbook = n
End With
With ActiveWorkbook
For n = 1 To F.Count
With .Sheets(n)
F(n).Cells.Copy .Cells
.UsedRange = .UsedRange.Value
.Name = F(n).Name
.Columns("J:N").Select
Selection.Delete Shift:=xlToLeft
.Range("H2").Select
End With
Next


.Sheets(tablo).Select
ActiveWindow.DisplayGridlines = False 'le quadrillage n'est pas affiché
Application.DisplayFormulaBar = True 'Masque la barre de formule
Application.DisplayStatusBar = False
ActiveWindow.DisplayHeadings = False 'Masque les en-têtes

Application.Dialogs(xlDialogSaveAs).Show ("RAPPORT DE COMPETENCE - " & Sheets("RAPPORT DE COMPETENCES").Range("D6") & ".xlsx")
Sheets("RAPPORT DE COMPETENCES").Select
ActiveSheet.Protect

End With
End If
End Sub


Ca fonctionne, par contre je plante sur les points suivants :
1. J'aimerai que la mise en forme soit similaire entre les deux fichiers. En effet, la couleur du texte de la copie de mon onglet n'est pas similaire à celle de mon fichier source
2. J'aimerai protéger la nouvelle copie créée
3. J'aimerai que la mise ne page pour impression soit similaire pour la copie. En effet, si j'imprime l'onglet avec mon fichier source, tout est bien sur une page mais si j'imprime ma copie, cela se met sur 2 pages.


Pourriez-vous m'aider SVP ?
Merci d'avance
 

Discussions similaires

Réponses
5
Affichages
364
Réponses
4
Affichages
318
Réponses
3
Affichages
508
Réponses
10
Affichages
444
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
608
Réponses
2
Affichages
74