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 :

Besoin d'aide Optimisation VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Besoin d'aide Optimisation VBA
    Bonjour à tous,

    j'ai codé le code ci dessous qui me permet de mettre en couleur les bordures de la ligne active:

    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
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set champ = Range("A1:Bz" & Range("TableauDeBord").Rows.Count + 1) 'Set champ = Range("A1:BZ7720")
        champ.Borders.Color = RGB(0, 0, 0)
        Cells.Borders.LineStyle = xlNone
        If Not Intersect(Target, champ) Is Nothing Then
                If Target.Count = 1 Then
                    With Target.EntireRow
                        With .Borders(xlEdgeTop)
                            .Color = RGB(255, 0, 0)
                        End With
                        With .Borders(xlEdgeBottom)
                            .Color = RGB(255, 0, 0)
                        End With
                    End With
                End If
            End If
    End Sub
    Le code fonctionne, mais celui ci est un peu lent à l'exécution.
    Comme mon niveau en VBA peut être comparé à celui d'une Loutre débutante, j'en appel à votre aide pour savoir si il y à possibilité d'optimiser le code pour rendre celui ci plus efficace?

    Je vous remercie d'avance pour vos réponse et l'aide apporté!

    Ci dessous mon fichier
    Opti.xlsm

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    je ne comprends pas très bien pourquoi tu bordure avec la couleur noire puis xlnone

    malgré tout chez moi c'est instantané
    il est évident que si tu a un tableau avec des milliers de lignes sa ralenti le smilblik forcement


    maintenant perso
    plutôt que remettre tout ton champs en xlnone avant de mettre les bordures rouge sur la ligne sélectionnée je remettrais simplement la ligne précédemment sélectionnée en xlnone
    et pour cela il faut la mémoriser ici avec oldtarget
    remet ta ligne du "set champ"
    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
    Dim oldtarget As Range' a mettre en haut de module 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set champ = Range("A1:Bz" & 100)    'Set champ = Range("A1:BZ7720")
       'si il y une cellule memorisée on lui enleve la bordure rouge
     If Not oldtarget Is Nothing Then oldtarget.EntireRow.Borders.LineStyle = xlNone 
        If Not Intersect(Target, champ) Is Nothing Then
            If Target.Count = 1 Then
                With Target.EntireRow
                    With .Borders(xlEdgeTop): .Color = RGB(255, 0, 0): End With
                    With .Borders(xlEdgeBottom): .Color = RGB(255, 0, 0): End With
                End With
            End If
        End If
        Set oldtarget = Target 'on memorise celle qui vient d'etre bordurée
    End Sub
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Alors déjà, merci beaucoup pour ta réponse.

    Ensuite pourquoi je bordure avec la couleur noire puis xlnone. Bah en fait aucune idée, sur le coup ça me paraissait être une bonne idée, mais non !

    Et je connaissais pas oldtarget, c'est vrai que c'est beaucoup mieux avec!

    En tout cas merci beaucoup pour ton aide! ça marche bien mieux!

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    c'est normal que tu ne connaisse pas j'aurais pu l'appeler tartampion ca aurait été pareil c'est juste une variable object range globale
    c'est quand même plus rapide non?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Pour infos,
    Un informaticien c'est un fainéant comme ceux qui utilisent les macros qu'il développe!

    With permet de ne pas réécrire plusieurs fois la même chose; hors dans notre cas on saisie plus que nécessaire!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Borders(xlEdgeTop).Color = RGB(255, 0, 0)
                     .Borders(xlEdgeBottom).Color = RGB(255, 0, 0)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Oui merci c'est beaucoup plus rapide ! Après comme l'ordi du bureau est une vieille carne, Je pense que ça va être compliqué de faire mieux.

    Merci beaucoup pour vos réponse !

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

Discussions similaires

  1. Réponses: 24
    Dernier message: 17/05/2010, 17h54
  2. besoin d'aide sur VBA d'excel
    Par taraud dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2010, 15h25
  3. Réponses: 19
    Dernier message: 31/01/2008, 20h01
  4. Besoin d'aide en vba
    Par Grechtouille dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/02/2007, 11h07

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