Ma fonction ColumnWidth ne fonctionne pas

Bonjour,

J'aimerais la macro redimensionne les colonnes comme suit: de A à C = 60 mm, de D à E = 20 mm et F = 40 mm.

J'ai mis ce code dans ma macro mais ça ne fonctionne pas:

    With .Worksheets("Liste")
      .[A1].CurrentRegion.SpecialCells(xlCellTypeVisible).Copy [A2]
      Columns("A:C").ColumnWidth = 60
      Columns("D:E").ColumnWidth = 20
      Columns("F:F").ColumnWidth = 40

    End With

Quelqu'un pourrait-il m'aider?

Merci.

Salut,

Essaie avec

    With Worksheets("Liste")
      .[A1].CurrentRegion.SpecialCells(xlCellTypeVisible).Copy [A2]
      Columns("A:C").ColumnWidth = 60
      Columns("D:E").ColumnWidth = 20
      Columns("F:F").ColumnWidth = 40

    End With

Cordialement.

Bonsoir,

Juste en supprimant le . devant Worksheets, ma macro ne fonctionne plus.

Re,

Mais c'est moi qui te remercie d'avoir posé la question

Ce n'est pas possible selon moi que ta macro fonctionnait avec un point devant Worksheets("Liste").

D'ailleurs tu as dit toi-même :

guillaume7684 a écrit :

J'ai mis ce code dans ma macro mais ça ne fonctionne pas:

Et chez moi ça fonctionne sans le point 8)

On peut voir ton fichier ?

Amicalement.

Bonjour,

par contre il faudrait un (de point) devant Columns("A:C").ColumnWidth = 60 si tu veux que ça s'applique à cette feuille

Et l'unité de ColumnWidth n'est pas le mm, mais :

Une unité de largeur de colonne est égale à la largeur d'un caractère du style Normal. Dans le cas des polices proportionnelles, la largeur du caractère 0 (zéro) est utilisée.

eric

Bonsoir,

Un petit bout de code que je pêche dans mes archives qui pourrait t'aider...

Sub LColMm()
    Dim w!, c!
    With ActiveCell
        w = Application.CentimetersToPoints(.Value / 10)
        If w > 1342.5 Or w < 0 Then
            .Value = CVErr(xlErrNA)
            Exit Sub
        End If
        If w > 9 Then
            c = (w - 9) / 5.25 + 1
        Else
            c = w / 9
        End If
        .ColumnWidth = c
    End With
End Sub

Celui-ci était conçu pour sélectionner une cellule, taper la largeur en mm souhaitée, et lancer la macro qui ajuste la largeur de la colonne.

Je ne m'y suis pas repenché pour améliorer la précision, mais de toute façon on n'obtiendra pas une exactitude absolue, car ce dimensionnement fonctionne par palier, si tu fais varier des largeurs à la 2e décimale tu verras que seules certaines valeurs sont prises en compte et les autres sont ramenées à l'une de ces valeurs la plus proche... (et l'unité de calcul n'étant pas le mm, on a peu de chance de tomber sur un nombre exact de mm).

Toutefois, si je convertis la largeur en points (prélevée par sa propriété Width) de la colonne ajustée à 60 mm par cette macro, j'obtiens 60,06 mm, ce qui me paraît une approche acceptable.

Tu peux en adapter le code dans une autre macro en remplaçant ActiveCell.Value par la valeur en mm qui t'intéresse, et supprimant le contrôle que cette valeur ne dépasse pas les limites maximale et minimale autorisées.

Cordialement.

Bonsoir,

C'est bon j'ai laissé tomber, j'ai tout simplement régler mes largeurs de colonne à la main et pour éviter qu'elle soit déréglée j'ai masquer les titres des colonnes.

Merci pour votre aide.

Cdt,

Rechercher des sujets similaires à "fonction columnwidth fonctionne pas"