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 :

Problèmes mise en forme de la page après une copie de feuille avec une macro [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut Problèmes mise en forme de la page après une copie de feuille avec une macro
    Bonjour à tous et merci d'avance pour votre aide,

    je suis novice avec les macros...

    En farfouillant sur des forums, j'ai réalisé une macro qui fait ce que je lui demande :
    1/ sélectionne ma feuille à copier (ma feuille 2)
    2/ sélectionne la plage de cette feuille à copier (A1:H25)
    3/ crée une nouvelle feuille et colle à la suite de la précédente
    4/ elle incrémente la case A1 de chaque nouvelle feuille
    5/ elle renomme chaque feuille du nom de la case A1

    voici le code :

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub incrementation()
    'selection de la feuille
    Sheets(2).Select
    'selection de la plage à copier (ces 2 lignes sont necessaires; ne peuvent être regroupées en une seule)
    Range("A1:H25").Select
    Selection.Copy
    'creation de nouvelle feuille en dernier et collage
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
    'incrementation de A1 à partir de A1 de feuille précédente
    Sheets(Sheets.Count).Range("A1") = Sheets(Sheets.Count - 1).Range("A1") + 1
    'renommer nouvelle feuille d'apres sa valeur en A1
    Sheets(Sheets.Count).Name = Sheets(Sheets.Count).Range("A1")
    End Sub

    Mon soucis est que sur toutes mes nouvelles feuilles créees, le contenu des cellules est bon mais la mise en page à complètement sauter (largeur des colonnes / hauteur de ligne)

    Que faut-il rajouter à mon code ???

    Merci beaucoup de votre aide !

    J'ai mis mon fichier en pièces jointes.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Utilisez l'enregistreur de macro pour relever toutes les tailles des différentes colonnes et lignes et ajoutez le résultat à la suite de votre macro.
    Voici ce que ça donne avec l'enregistreur de macro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
       Columns("A:A").ColumnWidth = 20.29
        Columns("B:B").ColumnWidth = 57.86
        Columns("C:C").ColumnWidth = 8.71
        Columns("D:D").ColumnWidth = 5.86
        Columns("E:E").ColumnWidth = 26.43
        Columns("F:F").ColumnWidth = 10.71
        Columns("G:G").ColumnWidth = 10.71
        Columns("H:H").ColumnWidth = 49.86
        Rows("1:1").RowHeight = 38
        Rows("2:2").RowHeight = 8.5
        Rows("3:3").RowHeight = 15.75
        Rows("4:4").RowHeight = 9
        Rows("5:5").RowHeight = 15.75
        Rows("6:6").RowHeight = 20
        Rows("7:7").RowHeight = 18.5
        Rows("8:8").RowHeight = 18.5
        Rows("9:9").RowHeight = 8.5
        Rows("10:10").RowHeight = 27.5
        Rows("11:11").RowHeight = 25
        Rows("12:12").RowHeight = 25
        Rows("13:13").RowHeight = 25
        Rows("14:14").RowHeight = 32.25
        Rows("14:14").RowHeight = 32.25
        Rows("15:15").RowHeight = 25
        Rows("16:16").RowHeight = 25
        Rows("17:17").RowHeight = 29
        Rows("18:18").RowHeight = 15
        Rows("19:19").RowHeight = 30.5
        Rows("20:20").RowHeight = 29
        Rows("21:21").RowHeight = 29
        Rows("22:22").RowHeight = 31
        Rows("23:23").RowHeight = 15
        Rows("24:24").RowHeight = 15
        Rows("25:25").RowHeight = 22
    Cdlt

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 178
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    2/ sélectionne la plage de cette feuille à copier (A1:H25)
    Est-ce que cela signifie que les seules données de la feuille sont présentes dans cette plage ?
    Dans l'affirmative, l'utilisation de la méthode Copy de l'objet Worksheet suffit
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Quand je veux copier une partie des données d'un onglet pour en faire un nouvel onglet tout en conservant un maximum de caractéristique de l'onglet source, je procède à l'envers : je copie l'intégralité de l'onglet source et je supprime de l'onglet destination les lignes indésirables.

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub incrementation()
    Set LFin As Long, Set CFin As Long
     
    LFin = Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row : If LFin <= 25 Then LFin = 26
    CFin = Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Column : If CFin <= 8 Then LFin = 9
     
    Sheets(2).Copy After:=Sheets(Sheets.Count)   ' On copie tout
    Range("I1", Cells(1, CFin)).EntireColumn.Delete  ' Suppression des colonnes en trop
    Range("A26", Cells(LFin, 1)).EntireRow.Delete    ' Suppression des lignes en trop
     
    Range("A1") = Sheets(Sheets.Count - 1).Range("A1") + 1
    ActiveSheet.Name = Range("A1").Text
    End Sub

    Avec ça, tu es sûr d'avoir récupéré les largeurs de colonnes, les hauteurs de ligne, la mise en page, les noms et même vraisemblablement (je n'ai pas vérifié) les macro évènementielles.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut
    Merci beaucoup !!!!!

    Cela fonctionne parfaitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probléme mise en forme du texte
    Par Rifton007 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 21/09/2008, 10h02
  2. Problème Mise en forme conditionnelle
    Par GEOPIXEL dans le forum IHM
    Réponses: 1
    Dernier message: 17/04/2008, 15h15
  3. [Mail] problème : mise en forme html d'un mail
    Par minie dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2007, 15h45
  4. [VBA]Mise en forme de fichier Ecxel aprés exportation
    Par taisherg dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/05/2007, 15h40
  5. problème mise en forme de balises ul li dans IE 6
    Par gaboo_bl dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 12/01/2007, 10h38

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