Problème de format suite à un copier/coller en macro

Bonjour à tous,

J'ai besoin de votre aide pour un soucis que je rencontre.

Je possède 3 documents Excel (disons Excel1, Excel2 et Excel3). Dans Excel1 j'ai créé une macro qui me permet d'aller copier les cellules d'une feuille de Excel2 puis d'aller les coller dans Excel3. Excel3 possède 2 feuilles : une feuille nommée "Synthèse" et la feuille dans laquelle on vient de copier/coller les données, qu'on appellera Sheet3.

Dans la feuille "Synthèse" de Excel3, se trouve des cellules au format "Comptabilité" et d'autres en "Pourcentage", "Standard"... Le problème est que quand je copie colle mes données sur la feuille Sheet3 à l'aide de la macro, le format des cellules Comptabilité de la feuille "Synthèse" est modifié, alors que je ne touche à aucun moment à cette feuille là. Les cellules qui étaient en format Comptabilité prennent alors un mode personnalisé, ce que je ne veux pas.

Voici ma macro :

Sub copier_coller()
    'Récupération des données nécessaires
     .... partie qui fonctionne bien

    'Classeur recevant les informations -> Excel 3
    Dim WB1 As Excel.Workbook
    Set WB1 = Workbooks.Open(Adresse_fichier_a_modif)

    'La feuille d'où provient les données -> Excel 2
    Dim WB2 As Excel.Workbook
    Set WB2 = Workbooks.Open(Adresse_fichier_Pilot)

    'Feuille qui va recevoir les données -> Sheet3
    Dim sh1 As Excel.Worksheet
    Set sh1 = WB1.Sheets(Nom_feuille_a_modifier)

    'Première feuille du fichier à copier -> Feuille d'Excel2 à copier
    Dim sh2 As Excel.Worksheet
    Set sh2 = WB2.Sheets(Nom_feuille_a_copier)

    'On supprime les données précédentes -> on nettoie Sheet3 avant de coller
    sh1.Cells.Clear

    ' On cherche le nb de colonnes et lignes max
    Last_Row2 = sh2.Range("A" & Rows.Count).End(xlUp).Row
    Last_Col2 = sh2.UsedRange.Columns.Count
    Last_Col2 = Replace(Left(Cells(1, Last_Col2).Address, 3), "$", "", , , vbTextCompare)

    ' On copie colle les données
    sh2.Range("A1:" & Last_Col2 & Last_Row2).Copy
    sh1.Range("A1").PasteSpecial Paste:=xlPasteValues
    sh1.Range("A1").PasteSpecial Paste:=xlPasteFormats

    'On sauvegarde et ferme les fichiers
    WB1.Save
    WB1.Close
    WB2.Close

End Sub

Dites moi si ce n'est pas suffisamment clair je vous enverrai un Excel d'exemple.

J'espère que vous pourrez m'aider à résoudre ce problème ! Merci d'avance !! :D

Bonjour,

Joindre le classeur sera le mieux.

Cela permettra de savoir pourquoi on utilise plutôt :

sh2.Range("A1:" & Last_Col2 & Last_Row2).Copy 
sh1.Range("A1").PasteSpecial ....

que

sh2.Range("A1:" & Last_Col2 & Last_Row2).Copy sh1.Range("A1")

et pourquoi

sh1.Range("A1").PasteSpecial Paste:=xlPasteFormats

ne fonctionne pas.

A+

@AlgoPlus Merci de ta réponse, je te joins les fichiers Excel pour tester.

Donc la macro est sur la fichier Excel1. Pour pouvoir lancer la macro il faut que tu renseigne dans Excel1 le chemin d'accès vers les fichiers Excel2 et 3.

Je pense quand même que la ligne ci-dessous fonctionne car grâce à ça il me garde la police, couleur de remplissage et d'écriture des données.

sh1.Range("A1").PasteSpecial Paste:=xlPasteFormats

Voici les fichiers Excel :

J'avais lu un peu en travers et mal estimé le souci.

la macro n'est pas impliquée dans le souci : tel que le code est écrit, il ne peut pas modifier le format de la feuille "Synthèse" .

Ce que confirme le test : aucune modification dans la feuille "Synthèse" (et il n'y a aucune macro évènementielle qui pourrait se déclencher et modifier quelque chose ...ni dans excel1 ni excel2 ni excel3 ..)

???

Je n'ai pas bien compris la fin de ton message. Tu as pu faire le test ? Tu as retrouvé la même erreur que moi ?

Parce que quand je fais le copier/coller à la main je ne rencontre pas ce problème mais seulement quand j'utilise la macro. Ca ne peut pas être un problème de config d'Excel ?

En clair :

En faisant des tests, je n'ai pas réussi à reproduire ton souci. La macro ne modifie en rien la feuille "Synthèse" , et la feuille "Synthèse" n'est pas modifiée.

Ca ne peut pas être un problème de config d'Excel ?

Je ne sais pas...

tu as bien vérifié que la colonne de la page "Synthèse" qui est au format Comptabilité (nom de colonne "TEST COMPTABILITÉ") reste dans ce même format après la macro ? Car dans mon cas, le format change et devient "Personnalisé", en gros il fait passer le signe euro devant.

Qu'est ce que tu ne comprends pas dans :

la feuille "Synthèse" n'est pas modifiée.

Bon je ne sais pas d'où vient le problème alors ....

Merci quand même pour ton aide.

Rechercher des sujets similaires à "probleme format suite copier coller macro"