XL 2010 largeur colonne selon date

Telecast

XLDnaute Nouveau
Bonjour
J'ai fait un tableau contenant dans la 1ère colonne les mois et à la 1ère ligne les jours.(pour des sommes)
Pour la largeur des colonnes j'ai manuellement mis la valeur de 3 à toutes les colonnes.
J'aimerais qu'à la date du jour,la largeur de la colonne correspondante s'adapte aux données de la cellule et reprenne la valeur de 3 dés le lendemain.
Bien entendu les autres restes à 3 en attendant bien sagement leur tour.
Je ne maitrise pas VBA mais si il le faut j’essayerai.
Bonne journée et merci par avance pour vos aides!
BT
 

jmfmarques

XLDnaute Accro
Bonjour
Commence par analyser et comprendre ce minuscule bout de code :
VB:
With Rows(1)
    .ColumnWidth = 3
    .Columns(Day(Date)).ColumnWidth = 10
  End With
qui passe à une largeur de 10 une seule colonne (celle de même N° que le jour), toutes les autres étant à 3.

L'autre aspect :
la largeur de la colonne corre spondante s'adapte aux données de la cellule
est bien plus complexe sur une feuille Excel. Il s'agirait en effet de déterminer une largeur de colonne correspondant à une largeur graphique de texte, qui elle-même dépend de plusieurs facteurs (la police, sa taille, etc ..., mais également une "intervention" purement Excel et incontrôlée : celle de marges d'affichage à adopter selon le cas)
Une autre question se pose : celle de données qui, entre deux lignes de la même colonne, contiendraient des textes de largeurs graphiques différentes ;)
Tu auras probablement à jouer de manière plus simple avec le format des cellules ("renvoyer à la ligne automatiquement")
 

Telecast

XLDnaute Nouveau
Bonjour
Merci pour la rapidité de vos réponses que je pense avoir comprises,effectivement "autofit"ne semble pas convenir si ce n'est pas la largeur de la colonne qui s'adapte.
Quand à l'aspect et la longueur des données dans les cellules,ce sont(à une virgule et 2 chiffres près) les mêmes dans toutes les colonnes.
Je n'ai plus que la mise en application (tout bête)avec un peu de paracétamol à consommer avec modération!!! (en garder pour ce que vous savez.Chut!!!!;))
A bientôt et encore merci
 

Patrice33740

XLDnaute Impliqué
Exemple, avec le jour en ligne 1 et le mois en colonne A (comme demandé) :
VB:
Option Explicit
Public Sub AutofitColonneDuJour(wsh As Worksheet)
Dim r As Range
  Set r = wsh.Range("B1").CurrentRegion.Offset(0, 1)
  Set r = r.Resize(, r.Columns.Count - 1)
  r.ColumnWidth = 3
  r.Columns(Day(Date)).AutoFit
End Sub
 

Pièces jointes

  • Autofit.xlsm
    17.3 KB · Affichages: 13

Patrice33740

XLDnaute Impliqué
Exactement

Le principe est simple :
Dans un premier temps, toutes les colonnes du tableau, sauf la première, sont réglées à 3 de largeur.
puis la colonne du jour est en largeur automatique (l'équivalent du double clic sur la ligne de séparation des titres de colonne)

Pour automatiser ce code, il est exécuté à l'ouverture du fichier et/ou à l'activation de la feuille, donc en plus du code ci-dessus qui est dans un module Standard, tu trouves
dans le module du classeur :
VB:
Option Explicit
Private Sub Workbook_Open()
  Call mMain.AutofitColonneDuJour(Feuil1)
End Sub
Edit : il faut bien sûr adapter le codename (Feuil1) de la feuille en fonction de ton classeur

Et dans le module de la feuille :
VB:
Option Explicit
Private Sub Worksheet_Activate()
  Call mMain.AutofitColonneDuJour(Me)
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 691
Membres
103 641
dernier inscrit
anouarkecita2