Conditionner largeur certaines colonne à une valeur

Bonjour les Pros d'EXCEL

J'aurais besoin de votre aide pour peaufiner un planning que je fignole petit à petit.
Là je bloque sur comment ajuster les colonnes correspondant au '' Samedi '' et '' Dimanche '' (Elles sont grisées sur la feuille de calcul)
Est-il possible de conditionner la largeur de ces colonnes suivant une Valeur '' Texte '' ou '' Numérique '' ?

PS : Je ne connais presque rien en VBA

Merci par avance pour votre aide

Bonjour,

Mettre ce code dans la feuille même pour le mois de janvier ("F", "G", "M", "N", "T", "U", "AA", "AB") cela correspond aux colonnes à être ajuster automatiquement

Ps: faire la même chose pour les autres mois

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cols As Variant
    Dim i As Long
    ' Liste des colonnes à ajuster
    cols = Array("F", "G", "M", "N", "T", "U", "AA", "AB")
    ' Parcourir chaque colonne et ajuster la largeur
    For i = LBound(cols) To UBound(cols)
        Columns(cols(i)).AutoFit
    Next i
End Sub

Slts

Bonjour,

une autre proposition ;

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Long
    For c = 2 To 33
    If Cells(3, c).Value = "Samedi" Or Cells(3, c).Value = "Dimanche" Then
    Cells(3, c).ColumnWidth = 20
    Else
    End If
    Next c
End Sub

Mettre le code sur chaque feuille.

edit : on peut faire 1 seul code pour toutes les feuilles du classeur, il suffit de mettre ça dans ThisWorkbook (et pas sur chaque feuille comme je disais ci-dessus) ;

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim c As Long
    For c = 2 To 33
    If Cells(3, c).Value = "Samedi" Or Cells(3, c).Value = "Dimanche" Or Cells(3, c).Value = "S" Or Cells(3, c).Value = "D" Then
    Cells(3, c).ColumnWidth = 20
    Else
    End If
    Next c
End Sub

L'effet se fera sur la feuille active, pas toutes en même temps.

Bonjour,

Merci pour vos réponses c'est super !
Par contre je dois mal m'y prendre car quand je colle le '' code '' dans la fenêtre et que j'enregistre rien ne ce passe...
Je dois mal faire quelques choses (Je suis néophyte dsl...)

capture d ecran 2025 06 30 100807

Bonjour,

mon code s'exécute dès que vous changez qqch dans une des feuilles.

Si vous tapez juste un chiffre ou lettre dans une cellule, les colonnes de w-e se réduiront de largeur (vous pouvez bien sûr changer la valeur, j'ai mis 20 au hasard).

Nickel tout fonctionne !
Encore merci !

A l'utilisation je rencontre un PB.
En effet si je change d'année, les samedi et dimanche changent de colonne.
Du coup dès que je tape ou agit dans une cellule les nouvelles colonnes correspondante au samedi et dimanche ce mettent bien à la largeur voulu, mais les '' anciennes '' colonnes samedi et dimanche reste en largeur réduite.
Bizarre non ?

Il faudrait que je rajoute un truc du genre :

If Cells(3, c).Value = "Lundi" Or Cells(3, c).Value = "Mardi" Or Cells(3, c).Value = "Mercredi" Or Cells(3, c).Value = "Jeudi" Or Cells(3, c).Value = "Vendredi" Then
Cells(3, c).ColumnWidth = 30

Pour traiter tout les '' Lundi / Mardi / Mercredi / Jeudi / Vendredi en Largeur 30 de colonne ?

Je n'arrive pas à l'insérer proprement par contre malgré mes essais....

Bonjour,

en-dessous de Else, rajoutez ceci ;

Cells(3, c).ColumnWidth = 30

J'ai testé ça sans succès.
Désolé mais je débute...

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim c As Long
    For c = 2 To 33
    If Cells(3, c).Value = "Samedi" Or Cells(3, c).Value = "Dimanche" Or Cells(3, c).Value = "S" Or Cells(3, c).Value = "D" Then
    Cells(3, c).ColumnWidth = 9
    Or
    If Cells(3, c).Value = "Lundi" Or Cells(3, c).Value = "Mardi" Or Cells(3, c).Value = "Mercredi" Or Cells(3, c).Value = "Jeudi" Or Cells(3, c).Value = "Vendredi" Then
    Cells(3, c).ColumnWidth = 30
    Else
    End If
    Next c
End Sub

Il doit y avoir un PB d'écriture du code.
D'ailleurs si vous avez un bon lien vers des tutos ou cours sur les bases du codage VBA...
Merci

Je suppose que vous avez loupé ma réponse ci-dessus, je mets le code complet ;

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim c As Long
    For c = 2 To 33
    If Cells(3, c).Value = "Samedi" Or Cells(3, c).Value = "Dimanche" Or Cells(3, c).Value = "S" Or Cells(3, c).Value = "D" Then
    Cells(3, c).ColumnWidth = 9
    Else
    Cells(3, c).ColumnWidth = 30
    End If
    Next c
End Sub

C'est parfois plus simple que ce qu'on s'imagine.

Ah oui j'avais pas vue ta réponse...
Nickel.
Donc le Else permet de passer sur une autre '' instruction '' vue la 1ere n'est pas '' vraie '' si je comprends
C'est en effet plus simple que ce que je pensais...

Rechercher des sujets similaires à "conditionner largeur certaines colonne valeur"