Microsoft 365 Aide à la finalisation d'une formule VBA

Chris Linefield

XLDnaute Junior
Bonsoir tout le monde,


Je me présente à vous car je rencontre un p'tit souci pour finaliser ma formule. Le principe de la formule est de récupérer un onglet sur un autre fichier excel, d'en copier le contenu dans le fichier excel où je me trouve. Cependant, il copie bien le contenu mais sans la mise en forme. Est-ce qu'il y a un moyen de copier coller la feuille avec la mise en forme afin de récupérer la même chose. Ci joint le code en question.

VB:
Sub ImportData()
    Dim WorkBookEx As Workbook, WorkSheetsEx As Worksheet
    
    Rep = "\\bbmf20\projects\CAD\SWX\DATA\2_journal de conception"
    Application.Dialogs(xlDialogOpen).Show Rep
    Set WorkBookEx = ActiveWorkbook
    Set WorkSheetsEx = WorkBookEx.Sheets("modèle")
    dlig = WorkSheetsEx.Range("A" & Rows.Count).End(xlUp).Row
    WorkSheetsEx.Range("A1:AD" & dlig).Copy Destination:=ThisWorkbook.Sheets("modèle").Range("A1")
    WorkBookEx.Close Savechanges:=False
    Set WorkSheetsEx = Nothing: Set WorkBookEx = Nothing
    Sheets("modèle").Activate
    MsgBox "Importation du template OK !"
End Sub

Merci d'avance pour votre aide.
 

Chris Linefield

XLDnaute Junior
Bonjour,

Et avec PasteSpecial ?
VB:
WorkSheetsEx.Range("A1:AD" & dlig).Copy
ThisWorkbook.Sheets("modèle").Range("A1").PasteSpecial

Bonne journée,
Bonjour,

Tout d'abord, merci de ta réponse :)
Voilà l'erreur qu'il me donne
1665467827251.png
 

Chris Linefield

XLDnaute Junior
Bonjour Chris Linefield

Il faut enlever le ".PasteSpecial" ça n'existe pas dans une destination de copie

A+
Bonjour Bruno,


As-tu une solution pour me permettre de récupérer la mise en forme lors de la copie du contenu de ma feuille ? Car la copie du contenu se fait bien mais la mise en forme pas du tout. A moins que l'on puisse copier la feuille ? J'avoue être dans une impasse.
 

Chris Linefield

XLDnaute Junior
Bonjour,

Pour PasteSpecial, il faut prendre les deux lignes que j'ai mis plus haut.
Tu ne peux pas avoir Destination:=____.PasteSpecial, il faut scinder en deux lignes :
1/ Range(xxx).Copy
2/ Range(yyy).PasteSpecial

Bonne journée,
Malheureusement, ça ne fonctionne pas. Il copie bien, mais ne récupère pas l'entièreté de la mise en forme.
Est-ce le seul moyen de récupérer le contenu d'une feuille d'un fichier excel ? Peut-on copier la feuille en elle même pour la déplacer sur un autre excel ?
 

xUpsilon

XLDnaute Accro
On peut copier une feuille entière (Déplacer ou Copier -> Créer une copie), mais je ne vois pas pourquoi les formats ne se copieraient pas.
Si tu utilises PasteSpecial xlPasteFormats, tu as quoi qui se copie ? Est-ce que ce ne seraient pas des MFCs, qui du coup ne formateraient pas correctement sur une nouvelle feuille ?

Bonne journée,
 

Chris Linefield

XLDnaute Junior
On peut copier une feuille entière (Déplacer ou Copier -> Créer une copie), mais je ne vois pas pourquoi les formats ne se copieraient pas.
Si tu utilises PasteSpecial xlPasteFormats, tu as quoi qui se copie ? Est-ce que ce ne seraient pas des MFCs, qui du coup ne formateraient pas correctement sur une nouvelle feuille ?

Bonne journée,
J'ai des cellules fusionnées, des boutons macro, et quelques autres trucs qui ne passent pas. Puis-je vous fournir une copie de mes excel pour jeter un oeil ?
 

xUpsilon

XLDnaute Accro
Bonjour,

Principe de base lorsqu'on manipule avec VBA : ne pas avoir de cellules fusionnées. Les cellules fusionnées sont une seule cellule aux yeux de la feuille et deux cellules aux yeux de VBA, puisque la valeur est stockée dans la cellule la plus en haut à gauche de la zone fusionnée.
Bref, joindre un fichier aurait dû être la première chose à faire, voir la charte du forum ;)

Bonne journée,
 

Chris Linefield

XLDnaute Junior
Bonjour,

Principe de base lorsqu'on manipule avec VBA : ne pas avoir de cellules fusionnées. Les cellules fusionnées sont une seule cellule aux yeux de la feuille et deux cellules aux yeux de VBA, puisque la valeur est stockée dans la cellule la plus en haut à gauche de la zone fusionnée.
Bref, joindre un fichier aurait dû être la première chose à faire, voir la charte du forum ;)

Bonne journée,
Je comprends. Un transfert de la feuille du fichier A au fichier B pourrait corriger ce souci de copie ?
Ci-joint les fichiers en question. Classeur 1 reçoit la feuille "modèle" de Jdc.
Merci d'avance pour ton investigation et ton aide :)
 

Pièces jointes

  • Jdc_MMQ.xlsm
    212.1 KB · Affichages: 1
  • Classeur1.xlsm
    24.8 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin