Copier / coller avec bordures, remplissages

Bonjour à tous,

Après plusieurs recherches sur Internet, je ne trouve pas mon bonheur concernant quelque chose qui doit paraître simple pour les chevronnés de VBA.

En effet, tout est dans le titre, je n'arrive tout simplement pas à copier - coller à l'identique une page d'un fichier excel vers un autre fichier. Seul le texte est copié à la bonne place. Sauriez vous m'éclairer sur ce problème ou tout simplement m'orienter?

J'utilise ce code ci dessous. Cela me permets d'ouvrir une fenêtre pour aller cher mon fichier en question et le coller dans l'onglet de mon choix "ROP" mais sans les couleurs, les bordures et tout ce qui va bien...

'Extraction ROP
    CheminFichier = Application.GetOpenFilename("Choisir ROP(*.xlsx), *.xlsx")
    Workbooks.Open CheminFichier
    tmpStr = Split(CheminFichier, "\")
    LeNomF = tmpStr(UBound(tmpStr))
    Cells.Copy
    Workbooks(LeNom).Activate
    Sheets("ROP").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            Cells.Select
    Cells.EntireColumn.AutoFit
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Workbooks(LeNomF).Close SaveChanges:=False
       Range("A1").Select

    Sheets("EQP").Activate
    Range("A1").Select

End Sub

Merci d'avance.

Si vous avez besoin de plus d'infos, n'hésitez pas ;)

Bonjour,

Rajouter un collage du format avant celui des valeurs ne pourrait t'il pas fonctionner?

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
With Range("A1")
            .PasteSpecial Paste:=xlPasteValues
            .PasteSpecial Paste:=xlPasteFormats
            .Application.CutCopyMode = False
End With

Bonjour Cognomen,

Je vais regarder cela dès lundi matin.

Je vais remplacer la partie de mon code par la tienne et je verrai bien ce que cela donne.

En tout cas, d'ores et déjà, merci pour ta réponse...

Bonjour,

si tu veux tout coller c'est un .Paste qu'il te faut, et non un .PasteSpecial Paste:=xlPasteValues
Un simple F1et la lecture de l'aide t'aurait renseigné.
eric

Bonjour à tous,

@ Cognomen : un super merci à toi. Cela fonctionne très bien. Reste simplement les colonne qui s'ajustent par rapport à la taille du texte et non comme sur l'original. Aurais tu une idée là dessus? En tout cas c'est déjà génial ;).

@Eriiic : Le .Paste ne fonctionnait pas correctement c'est pour cela que je suis passé sur un .PasteSpecial Paste:=xlPasteValues (Solution temporaire qui me permettait tout de même d'avoir l'essentiel de mes données). Les phrases du style "Un simple..." ne sont pas nécessaires. Ce n'est pas constructif, pas toujours vrai et surtout ça fait "supérieur".

Bonne journée à tous et encore merci.

Bonjour Ulquiora,

Tu peux surement utiliser ce bout de code

    'Colonne que l'on veut modifier
    Columns("A:A").Select
    'Défintion de la largeur de la colonne
    Selection.ColumnWidth = 20

Je ne sais pas si cela est le plus optimal mais a essayer

Bonjour Cognomen,

J'ai parfois 80 colonnes ^^, ça va me faire un beau petit code :D

J'ai trouvé autre chose mais grâce à ton aide et je t'en remercie.

Passe une bonne journée et à bientôt peut être sur ce forum

Bonjour tout le monde,

J'ai parfois 80 colonnes ^^, ça va me faire un beau petit code :D

Sheets("TaFeuille").Columns.AutoFit

Pour traiter toutes les colonnes d'un coup, adapte la largeur en fonction du contenu.

Cordialement,

Salut Xorsankukai,

Justement c'est ce que je voulais éviter car chaque colonne à sa largeur spécifique mais j'ai fait des regroupements...

Merci quand même pour ta réponse 😉

Bonjour,

"Un simple..." ne sont pas nécessaires. Ce n'est pas constructif, pas toujours vrai et surtout ça fait "supérieur".

te dire que .Paste t'emmène tous les formats contrairement à un collé valeur n'est pas constructif ?
Et suggérer de lire, ce qui devrait être fait systématiquement en cas de difficulté, l'aide fait supérieur ?
No comment...
Bref, si tu l'avais lu tu aurais vu que PasteSpecial à un paramètre qui permet justement de compléter le .Paste en recopiant la largeur des colonnes qui te manque.
eric

Rechercher des sujets similaires à "copier coller bordures remplissages"