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

Excel Discussion :

Appliquer une même mise en forme au tableau des feuilles dont le premier caractère du nom est similaire.


Sujet :

Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut Appliquer une même mise en forme au tableau des feuilles dont le premier caractère du nom est similaire.
    Bonsoir, le forum.
    Je veux boucler sur les feuilles d'un classeur et appliquer la même mise en forme aux tableaux qu'elles contiennent en se basant sur le premier caractère à gauche du nom de la feuille.
    Dans la capture jointe, j'ai par exemple un classeur avec deux feuilles dénommées respectivement Xdif et Xpil. Comment faire pour créer automatiquement avec vba le même tableau dans toutes les feuilles dont le nom commence par X.
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Quelque chose de ce genre devrait le faire:
    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
    Option Explicit
     
    Sub RecopierTableau()
        Dim rModele As Range, wsh As Worksheet
        Set rModele = Worksheets("Xdif").Cells
        For Each wsh In ThisWorkbook.Worksheets
            If Left(wsh.Name, 1) = "X" Then
                If wsh.Name <> "Xdif" Then
                    rModele.Copy
                    wsh.Range("A1").PasteSpecial xlPasteFormats
                End If
            End If
        Next wsh
        Application.CutCopyMode = False
        Set rModele = Nothing
    End Sub
    Cordialement.

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut re
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Quelque chose de ce genre devrait le faire:
    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
    Option Explicit
     
    Sub RecopierTableau()
        Dim rModele As Range, wsh As Worksheet
        Set rModele = Worksheets("Xdif").Cells
        For Each wsh In ThisWorkbook.Worksheets
            If Left(wsh.Name, 1) = "X" Then
                If wsh.Name <> "Xdif" Then
                    rModele.Copy
                    wsh.Range("A1").PasteSpecial xlPasteFormats
                End If
            End If
        Next wsh
        Application.CutCopyMode = False
        Set rModele = Nothing
    End Sub
    Cordialement.
    Bonjour, votre code fonctionne certes, mais ce n'est pas exactement ce que je cherche. D'abord, votre code impose de coller à la cellule A1 alors que je voudrais pouvoir choisir selon mes besoins. Puis, je voudrais en même temps coller les mêmes entêtes du tableau.

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    "je voudrais pouvoir choisir selon mes besoins". Dans ce cas, il me semble que des simples copier-coller seront plus efficaces, surtout si les différents tableaux n'ont pas le même nombre de lignes. Les macros, c'est pour répéter (plus ou moins exactement) la même chose.

    Cependant, voici toujours quelque chose qui se rapproche, supposant qu'il n'y a que 1 tableau par feuille:
    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
    Sub RecopierLeTableau()
        Dim rModele As Range, rTitres As Range, wsh As Worksheet, rA1 As Range
        Set rModele = Worksheets("Xdif").UsedRange          '--- le tableau
        Set rTitres = rModele.Rows(1)                       '--- la première ligne du tableau
        For Each wsh In ThisWorkbook.Worksheets
            If Left(wsh.Name, 1) = "X" Then
                If wsh.Name <> "Xdif" Then
                    Set rA1 = wsh.UsedRange.Cells(1, 1)     '--- cellule coin supérieur gauche du tableau déjà existant (ou A1 si pas de tableau)
                    rModele.Copy
                    rA1.PasteSpecial xlPasteFormats         '--- recopie les formats (sans écraser les données déjà inscrites)
                    rTitres.Copy rA1                        '--- recopie la ligne de titres (en écrasant les titres déjà inscrits)
                End If
            End If
        Next wsh
        Application.CutCopyMode = False
        Set rA1 = Nothing
        Set rTitres = Nothing
        Set rModele = Nothing
    End Sub
    A tester, et adapter.
    Cordialement.

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 234
    Points : 92
    Points
    92
    Par défaut RE
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    "je voudrais pouvoir choisir selon mes besoins". Dans ce cas, il me semble que des simples copier-coller seront plus efficaces, surtout si les différents tableaux n'ont pas le même nombre de lignes. Les macros, c'est pour répéter (plus ou moins exactement) la même chose.

    Cependant, voici toujours quelque chose qui se rapproche, supposant qu'il n'y a que 1 tableau par feuille:
    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
    Sub RecopierLeTableau()
        Dim rModele As Range, rTitres As Range, wsh As Worksheet, rA1 As Range
        Set rModele = Worksheets("Xdif").UsedRange          '--- le tableau
        Set rTitres = rModele.Rows(1)                       '--- la première ligne du tableau
        For Each wsh In ThisWorkbook.Worksheets
            If Left(wsh.Name, 1) = "X" Then
                If wsh.Name <> "Xdif" Then
                    Set rA1 = wsh.UsedRange.Cells(1, 1)     '--- cellule coin supérieur gauche du tableau déjà existant (ou A1 si pas de tableau)
                    rModele.Copy
                    rA1.PasteSpecial xlPasteFormats         '--- recopie les formats (sans écraser les données déjà inscrites)
                    rTitres.Copy rA1                        '--- recopie la ligne de titres (en écrasant les titres déjà inscrits)
                End If
            End If
        Next wsh
        Application.CutCopyMode = False
        Set rA1 = Nothing
        Set rTitres = Nothing
        Set rModele = Nothing
    End Sub
    A tester, et adapter.
    Cordialement.
    Merci beaucoup pour le soutien! Exactement ce que je voulais.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/11/2020, 08h45
  2. [XL-2010] appliquer une macro prenant en compte l'ensemble des feuilles d'un classeur
    Par mastafungus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/03/2017, 12h40
  3. Réponses: 6
    Dernier message: 26/09/2016, 22h13
  4. Comment appliquer une mise en forme à de nouvelles feuilles?
    Par jacksparot dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2011, 20h09
  5. [XL-2003] mise en forme de tableau via une macro
    Par sebastienmarche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2009, 10h39

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