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 :

Mise en forme des cellule par variable


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Points : 45
    Points
    45
    Par défaut Mise en forme des cellule par variable
    Bonjour,

    Je voudrais savoir si il est possible, en vba, de copier le mise en forme d'une plage de cellules dans une variable et de faire un coller à partir de cette variable ?

    Cette question car pour le moment j'utilise (Exemple de la documentation):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Sheet1").Range("C1:C5").Copy 
    ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range("D1:D5")
    mais dans une boucle je ne suis pas sur que ce soit ce qui est le plus rapide.

    Merci d'avance pour votre aide !

    Romain

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

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

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

    Si ce n'est pour reprendre que la mise en forme de la plage, c'est plutôt l'instruction PasteSpecial qu'il faut utiliser.
    Exemple pour recopier au sein de la même feuille active:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("C1:C5").Copy
        Range("D1:D5").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Cordialement.

  3. #3
    Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    Merci pour votre réponse. C'est déjà une avancée effectivement mais sinon est-ce possible d'enregistrement la mise en forme dans une variable/structure et de coller à partir de ça ?

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

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

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

    A ma connaissance, il n'est pas possible de conserver dans une variable le "format" d'une cellule ou d'une plage de cellules.

    Ce qui est possible: conserver dans une variable la référence de la cellule modèle (ou de la plage de cellules-modèle). Un petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Sub Test()
        Dim r As Range
        Set r = Worksheets("Feuil1").Range("B1")   '--- cellule modèle
        '--- 
        r.Copy
        Worksheets("Feuil2").Range("E6:F12").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        '---
        Set r = Nothing
    End Sub
    On peut éventuellement placer ces cellules modèles sur une feuille masquée et/ou protégée, et les nommer pour les utiliser plus facilement. C'est à mon avis la méthode la plus simple.

    Autre méthode, plus fastidieuse et moins souple: en utilisant l'enregistreur de macro, enregistrer le formatage de la cellule ou plage modèle et en faire une routine. Exemple de résultat:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Explicit
     
    Sub Test2()
        Encadrer Worksheets("Feuil2").Range("B2")
        Encadrer Worksheets("Feuil2").Range("B4:D6")
        FondBleu Worksheets("Feuil2").Range("D2")
    End Sub
     
    Sub Encadrer(r As Range)
        With r
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            With .Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlThin
            End With
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        End With
    End Sub
     
    Sub FondBleu(r As Range)
        With r.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorLight2
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
    End Sub
    Cordialement.

Discussions similaires

  1. Mise en forme des cellules sous jxl
    Par aur0re dans le forum Documents
    Réponses: 7
    Dernier message: 14/10/2009, 15h26
  2. Réponses: 3
    Dernier message: 19/07/2007, 09h19
  3. Mise en forme des cellules d'une flexgrid
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 30/08/2006, 10h57
  4. [VBA-E] mise en forme des cellules
    Par Cirdan Telemnar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 19h44
  5. [POI] difficultés dans la mise en forme des cellules
    Par corbier32 dans le forum Documents
    Réponses: 2
    Dernier message: 03/05/2006, 09h48

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