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

VBA Word Discussion :

Simplification d'un programme pour gagner en rapidité


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut Simplification d'un programme pour gagner en rapidité
    Bonjour
    Voilà, j'ai un bout de programme VBA word dans un ensempble qui prend beaucoup trop de temps à s'exécuter.
    Contexte : on est dans un tableau et je veux remplacer la couleur de toutes les bordures existantes par une autre couleur. Je teste donc chaque cellule puis chaque type de bordure pour voir si elle existe et lui appliquer une couleur donnée. mais c'est beaucoup trop long. Prendre en compte que là où il n'y a pas de trait, il ne faut pas en créer un... Ce serait trop simple.
    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
    Sub a_Tableau_Mise_en_forme2()
    Dim I, J, Max As Integer
    Max = mytable.Rows.count
                On Error Resume Next
                For I = 1 To Max
                    For J = 1 To mytable.Columns.count
                       mytable.Cell(I, J).Select
                        With Selection
                            With .Borders(wdBorderLeft)
                                If .LineStyle <> wdLineStyleNone Then
                                    .Color = 10375424
                                    .LineWidth = wdLineWidth025pt
                                End If
                            End With
                            With .Borders(wdBorderRight)
                                If .LineStyle <> wdLineStyleNone Then
                                    .Color = 10375424
                                    .LineWidth = wdLineWidth025pt
                                End If
                            End With
                            With .Borders(wdBorderTop)
                                If .LineStyle <> wdLineStyleNone Then
                                    .Color = 10375424
                                    .LineWidth = wdLineWidth025pt
                                End If
                            End With
                            With .Borders(wdBorderBottom)
                                If .LineStyle <> wdLineStyleNone Then
                                    .Color = 10375424
                                    .LineWidth = wdLineWidth025pt
                                End If
                            End With
                        End With
                    Next
                Next
     
    End Sub
    Vos idées d'accélération seront les bienvenues.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Une piste !

    Pour gagner en vitesse, il ne faut pas utiliser un objet Selection

    Les Ranges sont plus efficaces à utiliser.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,


    En VBA, chaque variable doit être typée.

    va nous donner deux variant et un entier.
    La syntaxe correcte est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim A as Integer, B as Integer, C as integer
    Pour boucler sur ton tableau, il est plus simple de travailler avec des objets et collections de tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim myTbl As Table
    Dim myRow as Row
    Dim myCell As Cell
     
    Set myTbl = ActiveDocument.Tables(1)
    For Each myRow in myTbl.Rows
        For Each myCell in myRow.Cells
            With myCell.Range. ...
            .....
            End With
        Next myCell
    Next myRow
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Optimisation code pour gagner en rapidité
    Par polodu84 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/03/2008, 15h32
  2. existe t 'il des programme pour transformer les bases
    Par creazone dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/10/2004, 14h11
  3. [TP]Programme pour piloter port série et parallèle...
    Par DDR dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/04/2004, 21h52
  4. Créer de programme pour WIndows avec Turbo Pascal
    Par kaygee dans le forum Turbo Pascal
    Réponses: 16
    Dernier message: 20/08/2003, 23h22

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