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 :

Optimiser une macro de mise en forme d'un Tableau [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Points : 41
    Points
    41
    Par défaut Optimiser une macro de mise en forme d'un Tableau
    J'ai un code qui me permet de mettre en forme un tableau sur Excel,
    le problème avec mon code c'est que ça me prend une minute pour avoir un résultat. Mon objectif est d'optimiser ce code.

    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
    51
    52
    53
    Sub Macro()
    Dim FL1 As Worksheet
    Dim i As Integer
    Set FL1 = Worksheets("sheet1")
    'Mise en forme sheet sheet1
    FL1.Activate
    For i = 3 To 6000
    If FL1.Cells(i, 1) = "Metier" Then
     
    Cells(i, 1).Select
    Range(Selection, Selection.End(xlToRight)).Select
    With Selection.Interior
            .ColorIndex = 44
            .Pattern = xlSolid
        End With
        End If
        Next i
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Set FL1 = Nothing
     
    End Sub

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir Mouncefdi, le forum

    Sans avoir testé ton code essaies déjà ces corrections :
    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
    Sub Macro()
    Dim FL1 As Worksheet
    Dim i As Integer
    Set FL1 = Worksheets("sheet1")
    'Mise en forme sheet sheet1
    FL1.Activate
    For i = 3 To 6000
    If FL1.Cells(i, 1) = "Metier" Then
    With Range(Cells(i, 1), Cells(i, 1).End(xlToRight))..Interior
            .ColorIndex = 44
            .Pattern = xlSolid
        End With
        End If
    Next i
         Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlDiagonalDown).LineStyle = xlNone
        Range(Cells(i, 1), , Cells(i, 1), .End(xlDown))..Borders(xlDiagonalUp).LineStyle = xlNone
        With Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Range(Cells(i, 1), , Cells(i, 1), .End(xlDown)).Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Set FL1 = Nothing
     
    End Sub
    ça elimine déjà les select, mais il y a mieux, je ne suis pas encore pret et je n'ai pas vérifié ton code

    a+
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Points : 41
    Points
    41
    Par défaut
    Merci pour les corrections, le problème est résolu merci

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

Discussions similaires

  1. Modifier la mise en forme d'un tableau avec une macro
    Par Wouittone dans le forum VBA Word
    Réponses: 3
    Dernier message: 22/07/2013, 09h02
  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. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  4. Lancement d'une macro après mise à jour d'une cellule
    Par Mukade dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/10/2007, 11h52
  5. Réponses: 8
    Dernier message: 09/01/2007, 16h30

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