Code vba pour formater largeur de colonne

gibtoul

XLDnaute Junior
Bonjour à tous,

J'ai une macro qui me permet de "formater" la largeur des colonnes.

J'ai un comportement anormale sur plusieurs colonnes qui ne prenne pas en compte la largeur imposée (Col AP, AT ...)

Je joins le fichier pour plus de precisions

Vous remercie par avance pour l'aide apporté

A bientot

gibtoul
 

Pièces jointes

  • Tableau Comparatif TEST.xlsm
    28 KB · Affichages: 47

Papou-net

XLDnaute Barbatruc
Re : Code vba pour formater largeur de colonne

Bonjour gibtoul,

En modifiant, et surtout en simplifiant, ta macro comme ci-dessous, ça devrait fonctionner:

Code:
Sub RAZCOLONNE()
'
  Columns("G:BZ").ColumnWidth = 15
  For c = 6 To 78 Step 4
    Columns(c).ColumnWidth = 0.3
  Next
End Sub
En tout cas, chez moi ça marche sans problème.

Cordialement.
 

mécano41

XLDnaute Accro
Re : Code vba pour formater largeur de colonne

Bonjour à tous,

J'ai fait à peu près pareil et cela fonctionne aussi.

N'oublie pas de mettre des : Application.ScreenUpdating = False et = True aux bons endroits, le changement devient immédiat.

Cordialement
 

gibtoul

XLDnaute Junior
Re : Code vba pour formater largeur de colonne

Merci à Papou-net et mécano41 pour vos réponses rapide

Effectivement cela fonctionne avec cette modification et qui simplifie le code


Par contre je suis pas un pro du VBA et je ne sais pas trop ou mettre les fonctions décrite par mécano41 pour accelerer le temps de changement.

Pour completer mon besoin, dans le cas ou le formatage de la largeur des colonnes est plus "complexes"
(par EX col G : 15 ; H: 12 ; I: 5 ; J : 0.3 , la sequence se repete ensuite sur les autres col de la selection) comment dois-je m'y prendre ?


A bientot

Gibtoul
 

mécano41

XLDnaute Accro
Re : Code vba pour formater largeur de colonne

Si le motif est répétitif :

Code:
Sub RAZCOLONNE()
Dim T()
Dim Cpt1 As Long
Application.ScreenUpdating = False
T = Array(15, 12, 5, 0.3)
For Cpt1 = 7 To 78 Step 4
  For Cpt2 = 0 To 3
    Columns(Cpt1 + Cpt2).ColumnWidth = T(Cpt2)
    Next Cpt2
Next Cpt1
Application.ScreenUpdating = True
End Sub

Pour les Application.ScreenUpdating = xxx il faut en mettre dans tes codes, avant et après des modifications de valeurs ou de format en grand nombre. Cela évite de voir scintiller l'écran et l'opération se fait instantanément

Cordialement
 

Discussions similaires

Réponses
12
Affichages
318

Statistiques des forums

Discussions
312 215
Messages
2 086 331
Membres
103 188
dernier inscrit
evebar