Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Macro VBA pour copier des feuilles particulières

  • Initiateur de la discussion Initiateur de la discussion driss Kor
  • Date de début Date de début
  • Mots-clés Mots-clés
    vba

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 !

driss Kor

XLDnaute Nouveau
Bonjour,

Je travail sur un fichier excel et je voudrais par vba créer une copie des deux feuilles "Acceuil et Détail" sur un nouveau classeur et remplacer les formules par leur valeur sur ces nouvelles feuilles avant de l'envoyer
Plage de formule a remplacer par leur valeur [ feuille Acceuil C8:J13 ], [ feuille détail C6:I38 ].

Si quelqu'un peut m'aider ça serai génial.
 

Pièces jointes

Bonjour,
Il suffit pour ça d'utiliser l'enregistreur de macros 🙄
A+
 
Bonjour,

Ecrivez correctement "Accueil" SVP et exécutez cette macro :
VB:
Sub Copier()
Dim w As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets(Array("Accueil", "Détail")).Copy 'nouveau document
With ActiveWorkbook
    For Each w In .Worksheets
        w.UsedRange = w.UsedRange.Value 'supprime les formules
    Next
    .SaveAs ThisWorkbook.Path & "\Copie.xlsx", FileFormat:=51 'enregistrement
    .Close False
End With
End Sub
En effet il y a des choses que l'enregistreur ne ferait pas.

A+
 

Pièces jointes

Re-bonjour,
Merci Job75 pour ce code
J'ai essayé ce code mais ça bloque sur "UsedRange" peut être parceque j'ai beaucoup de feuilles.

------------------------------------------------------
Sub Copy_Sheets()

Dim w As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets(Array("Home Global", "Per Manager", "DetailsReport", "APDetailsReport", "FollowUpReport", "STAR", "LSReport", "CoachReport", "AuditReport")).Copy 'nouveau document
With ActiveWorkbook
For Each w In .Worksheets
w.UsedRange = w.UsedRange.Value 'supprime les formules
Next
.SaveAs ThisWorkbook.Path & "\OnePageReport.xlsx", FileFormat:=51 'enregistrement
.Close False
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
 
Bonjour Job75,


Voici le message d'erreur, les feuilles sont sous forme de Tableau, ça termine le copier puisque toutes les feuilles ont été déplacée vers le nouveau classeur mais seulement les 3 premières feuilles que la macro réussie à mettre les valeurs à la place des formules.
Je ne peux pas partager le fichier vu que se sont des données liées à au travail.




 
Dernière édition:
Pour en avoir le cœur net essayez quand même :
VB:
For Each w In .Worksheets
    With w.UsedRange
        .Value = .Value 'supprime les formules
    End With
Next
Si ça fonctionne cela prouvera que le problème venait de la modification du UsedRange quand on le lit.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
20
Affichages
898
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…