Gérer la largeur de colonne en VBA

Bonjour,

Je souhaite mettre en place un module en VBA permettant de gérer la largeur d'une colonne d'après le contenu d'une cellule.

Je m'explique :

Si

cellule C3 contient au moins sam ou dim

Alors

Largeur de la colonne 5

Sinon

Largeur de la colonne 15

Ce principe doit s'appliquer à une plage de données allant de C3 à R3.

Je débute en VBA et n'y arrive pas. Merci pour le coup de pouce

Hello essaie ça :)

Sub taille_colonne()

For i = 3 To 18

If Cells(3, i) = "sam" Or Cells(3, i) = "dim" Then

Columns(i).Select
Selection.ColumnWidth = 5

Else

Columns(i).Select
Selection.ColumnWidth = 15

End If

Next i

End Sub

Bonjour,

Une autre proposition :

Sub TestGererLesColonnes()
    GererLesColonnes ActiveSheet
End Sub

Sub GererLesColonnes(ByVal Sh As Worksheet)

Dim I As Integer

    With Sh
         For I = 3 To 18
             .Cells.HorizontalAlignment = xlCenter
            If IsDate(.Cells(3, I)) Then
               Select Case WorksheetFunction.Weekday(CDate(.Cells(3, I)), 2)
               Case 6, 7
                    .Cells(3, I).ColumnWidth = 5
               Case Else
                    .Cells(3, I).ColumnWidth = 15
               End Select
            End If
        Next I
    End With

End Sub

Merci à vous deux mais impossible à mettre en place.

Je souhaite que les colonnes du planning correspondantes à un samedi ou un dimanche soient fines pour limiter l'espace occupé sachant que ce ne sont pas des jours travaillés :

17test.xlsm (40.37 Ko)

Merci encore!

J'ai pourtant réussi :

capture

Bonjour à tous,

Cells(3, I)

Dans le fichier fourni, les dates sont en ligne 9,

Cordialement,

Je ne remets pas en cause la solution proposée

Je débute et n'ai pas autant de facilité que vous, quelque chose m'échappe malgré l'application du code sur la ligne 9.

Serait-il possible de me renvoyer le document avec le code VBA pour l'analyser et comprendre mon erreur svp ?

Merci à tous et bon weekend de pâques !

Par contre, comme le calendrier est automatique, les colonnes contenant les weekend ne sont pas fixes, tout dépend du nombre de jours dans le mois.

Je ne sais pas si cela est pris en compte dans la proposition initiale.

Merci d'être indulgent, novice ici présent

Personne pour explication ?

Je ne comprends pas mon erreur.

Bonjour à tous,

Essaie ceci: à partir du code fourni gentiment par Eric,

Private Sub Worksheet_Calculate()
 Dim I%, col%

     col = Me.Cells(9, Columns.Count).End(xlToLeft).Column

  Application.ScreenUpdating = False

      For I = 3 To col
       Me.Cells.HorizontalAlignment = xlCenter
         If IsDate(Me.Cells(9, I)) Then
           Select Case WorksheetFunction.Weekday(CDate(Me.Cells(9, I)), 2)
             Case 6, 7
               Me.Cells(9, I).ColumnWidth = 5
             Case Else
               Me.Cells(9, I).ColumnWidth = 15
           End Select
        End If
      Next I
End Sub

Code à placer dans le module de la feuille Planning...

24raphael-test.xlsm (40.54 Ko)

J'utilise l'évènement Calculate de la feuille : lorsque tu modifies ton mois et/où ton année, vu qu'il y a un calcul de date en AJ4 et AJ5, la macro est exécutée à l'actualisation de la formule.

Cordialement,

Merci infiniment

Rechercher des sujets similaires à "gerer largeur colonne vba"