IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA E-00] Copie et mise en forme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut [VBA E-00] Copie et mise en forme
    Bonjour à tous !

    Malgrès quelques recherches et pas mal d'essais, je reste bloqué sur un problème.

    Je voudrais, dans un même classeur, copier une plage de cellules "formatées" d'une feuille à une autre. Cette plage contient des formes (shapes), des celulles fusionnées et du texte, il s'agit en fait d'un formulaire qui sera édité après copie.

    Le problème est que le seul moyen que j'ai trouvé pour garder la mise en forme est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sheets(1).Select
    Rows("1:48").Select
    Selection.Copy
    Sheets(2).Select
    ActiveSheet.Paste Destination:=Worksheets(2).Range("A4")
    C'est moche, je préfèrerais utiliser la methode d'instance mais malgrès mes essais, la hauteur des lignes et la copie des shapes ne sont pas prise en compte

    Voici un exemple d'essai (repris d'un post sur ce forum):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Mdl As Range
    Dim Dest as Range
    Set Mdl = Worksheets("Mdl").Range("A1:P48")
    Set Dest = Worksheets("Dest").Range("A4")
    Mdl.Copy
    Dest.PasteSpecial Paste:=xlPasteFormats
    Quelqu'un aurait la bonne syntaxe ?

    Merci d'avance !

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    as tu penser a copier l'onglet

    Code généré par l'enregistreur de macro. A Adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Sheets("Mdl").Select
        Sheets("Mdl").Copy After:=Workbooks("Classeur4").Sheets(3)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut
    Elas je ne peux pas de cette façon, le range source sera dupliqué x fois dans la feuille de destination, mais merci quand même pour ta contribution !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut
    Je me répond pour vous exposer une solution que j'ai trouvée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim Mdl As Variant
    Dim Dest As Worksheet
    Set Mdl = Worksheets("Mdl").Range(StrMdlRange)
    Set Dest = Worksheets("Dest")
    Dim TabValLine As Variant
    TabValLine = Array("20", ... je coupe cette partie hein ... "20")
     
    Mdl.Copy Destination:=Dest.Range("A" & StartOfNewCopy & ":P" & StartOfNewCopy + MdlNbrRows -1)
    For i = StartOfNewCopy To StartOfNewCopy + MdlNbrRows -1
        Dest.Rows(i).RowHeight = TabValLine(i - StartOfNewCopy)
    Next i


    N'y a t'il pas plus simple, ou du moins un moyen un peu moins brute d'arriver au même résultat ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/08/2013, 07h50
  2. Utilisation des Macro pour une copie et mise en forme
    Par Stephane59 dans le forum VBA Word
    Réponses: 6
    Dernier message: 09/02/2013, 15h07
  3. [XL-2010] Copy-paste de mise en forme en VBA
    Par Physlay dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/09/2011, 08h56
  4. [XL-2003] Copie de Mise en Forme
    Par demongin dans le forum Excel
    Réponses: 2
    Dernier message: 24/06/2010, 14h29
  5. [VBA EXCEL]: Savoir si une mise en forme conditionnelle est active
    Par ADONET dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/01/2007, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo