Bordures automatiques

nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008 - 31 août 2006 à 11:40
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 31 août 2006 à 12:28
Bonjour;

Sur un classeur Excel dynamique (récupérant les données du base Oracle), je souhaite ajouter une fine bordure en fonction du nombre de lignes et de colonnes.

J'ai commencé par quelques choses du genre :
     Range("A:L").End(xlDown).Select
     Selection.Borders(xlTop).Weight = xlMedium
     Selection.Borders(xlTop).Color = 1
Le problème est qu'il ajoute une bordure à toutes les cellules, ce qui prend un temps fou.

Merci par avance pour votre aide.

7 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
31 août 2006 à 11:44
Salut,

en début de traitement : Application.ScreenUpdating = False
en fin de traitement : Application.ScreenUpdating = True

Ca fige le rafraichissement et te fait gagné du temps (mais pas énormément)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
31 août 2006 à 12:01
Salut Mortalino,

Merci pour ta remarque.
Mais comment faire en sorte que seules les cellules possédant des données aient une bordure ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
31 août 2006 à 12:15
    Dim PLV As Long
   
PLV = Columns(1).Find("", [A1], , , , xlByRows, xlnext).Row - 1
Application.ScreenUpdating = False

 Range("A1:B" & PLV).Select
 Selection.Borders(xlTop).Weight = xlMedium
 Selection.Borders(xlTop).Color = 1

Application.ScreenUpdating = True

Ta solution Range("A:L").End(xlDown).Select ne sélectionne que la dernière cellule remplie dans la colonne.

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
31 août 2006 à 12:23
Maintenant ça m'étonne quand tu dis que ça prend du temps !!

J'ai fait un test sur la plage A1:L65536, ça m'a pris 93 milisecondes :

<small>
Coloration syntaxique automatique </small>
Sub test() 

Dep = Timer 

    Columns("A:L").Select 
    With Selection.Borders(xlInsideHorizontal) 
        .LineStyle = xlContinuous 
        .Weight = xlMedium 
        .ColorIndex = xlAutomatic 
    End With 

Arr = Timer
MsgBox Arr - Dep  ' reponse : 0,09345

End Sub 

<small>
Coloration syntaxique automatique </small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
31 août 2006 à 12:24
Merci encore mais ça ne marche pô.
Effectivement, c'est un peu plus rapide mais aucune bordure n'apparaît.
:(
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
31 août 2006 à 12:25
Niveau temps, je crois que c'est normal, notre BDD est monstrueuse. Et tout le monde requête sans arrêt.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
31 août 2006 à 12:28
Essaie celui-ci alors :

<small>
Coloration syntaxique automatique </small>
Dim PLV As Long 

PLV = Columns(1).Find("", [A1], , , , xlByRows, xlnext).Row - 1 
Application.ScreenUpdating = False 

 Range("A1:B" & PLV).Select 

    With Selection.Borders(xlInsideHorizontal)  
        .LineStyle = xlContinuous  
        .Weight = xlMedium  
        .ColorIndex = xlAutomatic  
    End With  

Application.ScreenUpdating = True

<small>
Coloration syntaxique automatique </small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous