Ajustement auto de largeur de colonne (Columns Width)

Bonjour,

Je suis actuellement sur un ajustement de colonnes automatique. J'ai trouvé cette solution mais elle est beaucoup trop simple et ça ne me plaît pas:

    With Selection
        .ColumnWidth = .ColumnWidth * 8
        .EntireColumn.AutoFit
    End With

Avez-vous une autre solution d'ajustement automatique qui fonctionne avec des commentaire si vous plaît ?:)

Bonne journée

Bérel Kaëlig

Bonjour,

C'est bien la première fois que je vois quelqu'un qui a besoin de complexifier sa macro

Concernant les commentaires, vous en voulez dans la macro ou bien ajuster une colonne qui sera amenée à recevoir des commentaires ?

Dans tous les cas ce code suffit amplement :

With Range("A:A") 'En mettant la colonne qui doit être ajustée
    .EntireColumn.AutoFit 'Va ajuster la colonne selon la plus longue valeur 
End With

Si le problème n'est pas résolu, nous aurions besoin de plus d'information voire d'un fichier exemple.

A plus !

Bonjour,

Merci de ta réponse.

Pour les commentaires en faites j'ai une feuille avec mes cellules remplis de texte et une annotation commentaire et quand j'appuie sur un bouton ca me génère une autre feuille et ça me met le texte et le commentaire dans la même cellule:) je sais pas si cela est clair ... c'est à dire ajuster une colonne qui sera amenée à recevoir des commentaires et du texte ?:)je peux juste mettre le code car pour le fichier c'est confidentiel.

tu le veux ?

cdt,

Kaëlig

Bonjour,

Merci de ta réponse.

Pour les commentaires en faites j'ai une feuille avec mes cellules remplis de texte et une annotation commentaire et quand j'appuie sur un bouton ca me génère une autre feuille et ça me met le texte et le commentaire dans la même cellule:) je sais pas si cela est clair ... c'est à dire ajuster une colonne qui sera amenée à recevoir des commentaires et du texte ?:)je peux juste mettre le code car pour le fichier c'est confidentiel.

tu le veux ?

cdt,

Kaëlig

C'est plus clair en effet !

Le mieux serait de rajouter la partie du code à la fin de ta macro qui concatène le texte et le commentaire.

Imaginons :

Sub Concatene()
    'Ta macro sur la Feuil1
    With Sheets("Feuil2").Range("A:A") 'Adapte le nom de la feuille et la colonne où se trouve ton texte+commentaire
        .EntireColumn.AutoFit 
    End With
End Sub

Logiquement ta colonne devrait s'élargir assez pour ne pas "manger" un bout du texte présent dans les cellules de ta colonne !

Si ce n'est toujours pas ca, alors je veux bien voir le code stp

Comme cela ne fonctionne pas je te passe le code:

Private Sub BTN_gen_autocom2_Click()
scr_upd_false
displayalert_off
'Me.BTN_gen_autocom2.Enabled = False

  With ThisWorkbook

    If Not GetWorksheet("Autocom2") Is Nothing Then

        Worksheets("Autocom2").Delete

    End If
        Worksheets.Add(After:=Worksheets("Autocom1")).Name = "Autocom2"
  End With

ThisWorkbook.Sheets("Autocom1").Select                          'Sheets(7).Range(z) = (j & Chr(10) & i)
Dim Z$, i, i_width, j, o As Range

For Each o In Range("A4:Y11")
    o.Select
    Z = o.Address
    On Error Resume Next
    i = o.Comment.Text

    j = o.Value
    Sheets("Autocom2").Range(Z) = (j & Chr(10) & i)            'Sheets(8).Range(z) = (j & Chr(10) & i)
    Sheets("Autocom1").Range(Z) = j                            'Sheets(7).Range(z) = (j & Chr(10) & i)

    'Forme de la cellule
    Sheets("Autocom2").Range(Z).Interior.Color = o.Interior.Color       'Intérieur de la cellule
    Sheets("Autocom2").Range(Z).Font.Color = o.Font.Color               'Police

    i = ""
    j = ""

Next

'Placement du contenu
ActiveSheet.Range("A4:A6").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With

ActiveSheet.Range("A7:A9").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With

ActiveSheet.Range("B4:I4").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("R4:Y4").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("B9:I9").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("J9:Q9").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("R9:Y9").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("J11:K11").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("M11:N11").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

ActiveSheet.Range("P11:Q11").Select
    With Selection
        .Merge
        .HorizontalAlignment = xlCenter
    End With

'Création du tableau
Worksheets("Autocom2").Range("A4:A6").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("A7:A9").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("B4:I4").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("B5:I5").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("R4:Y4").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("N5:O5").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("O6:P6").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("R5:Y8").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("J7:Q7").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("B8:Q8").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("B9:I9").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("J9:Q9").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("R9:Y9").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("J11:K11").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("M11:N11").Borders.LineStyle = xlContinuous
Worksheets("Autocom2").Range("P11:Q11").Borders.LineStyle = xlContinuous

'Aucun remplissage des cellules
Worksheets("Autocom2").Range("A10:Y10").Interior.ColorIndex = xlColorIndexNone
Worksheets("Autocom2").Range("A11:I11").Interior.ColorIndex = xlColorIndexNone
Worksheets("Autocom2").Range("L11").Interior.ColorIndex = xlColorIndexNone
Worksheets("Autocom2").Range("O11").Interior.ColorIndex = xlColorIndexNone
Worksheets("Autocom2").Range("R11:Y11").Interior.ColorIndex = xlColorIndexNone

'Fusion des cellules
Worksheets("Autocom2").Range("J11", "K11").MergeCells = True 'Fusion des cellules
Worksheets("Autocom2").Range("M11", "N11").MergeCells = True 'Fusion des cellules
Worksheets("Autocom2").Range("P11", "Q11").MergeCells = True 'Fusion des cellules

'Bordure Spécifique
 With Selection
    Worksheets("Autocom2").Range("U5").Borders((xlEdgeRight)).Weight = 4
    Worksheets("Autocom2").Range("U6").Borders((xlEdgeRight)).Weight = 4
    Worksheets("Autocom2").Range("Q7").Borders((xlEdgeRight)).Weight = 4
    Worksheets("Autocom2").Range("Q8").Borders((xlEdgeRight)).Weight = 4
    Worksheets("Autocom2").Range("J7").Borders((xlEdgeLeft)).Weight = 4
    Worksheets("Autocom2").Range("J4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("K4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("L4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("M4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("N4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("O4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("P4").Borders((xlEdgeTop)).Weight = 2
    Worksheets("Autocom2").Range("Q4").Borders((xlEdgeTop)).Weight = 2
 End With

    'Ajustement automatique des cellules et des lignes par rapport au contenu
ThisWorkbook.Sheets("Autocom2").Select

    ActiveSheet.Range("B5:Y11").Select
    With Selection
        '.ColumnWidth = .ColumnWidth * 8
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        '.EntireColumn.AutoFit
    End With

    With Sheets("Autocom2").Range("B5:Y15") 'Adapte le nom de la feuille et la colonne où se trouve ton texte+commentaire
        .EntireColumn.AutoFit
    End With

Me.BTN_gen_autocom2.Enabled = True
scr_upd_true
displayalert_on
End Sub

Si dans mon code tu vois qu'il y a des choses que je pourrais faire en quelques lignes au lieu de plusieurs comme notamment la création de bordure tu peux modifié

Bon courage

cdt,

Kaëlig

Bonjour,

qui peut m'aider svp

Cdt,

Bérel Kaëlig

Bonjour enfaite il faut que ma cellule s'adapte automatique avec le texte et les commentaire

Bonne journée

Kaëlig

Bonjour,

Désolé pour l'attente,

Remplace

    With Sheets("Autocom2").Range("B5:Y15") 'Adapte le nom de la feuille et la colonne où se trouve ton texte+commentaire
        .EntireColumn.AutoFit
    End With

Par :

    With Sheets("Autocom2").Range("B:Y") 'Adapte le nom de la feuille et la colonne où se trouve ton texte+commentaire
        .EntireColumn.AutoFit
    End With

Pour info, les cellules d'une colonne donnée seront toutes de la même taille. Que tu ais une lettre ou une phrase, la cellule prendra la taille de la cellule la plus remplie.

A plus !

Bonjour,

Désolé pour l'attente,

Remplace

    With Sheets("Autocom2").Range("B5:Y15") 'Adapte le nom de la feuille et la colonne où se trouve ton texte+commentaire
        .EntireColumn.AutoFit
    End With

Par :

    With Sheets("Autocom2").Range("B:Y") 'Adapte le nom de la feuille et la colonne où se trouve ton texte+commentaire
        .EntireColumn.AutoFit
    End With

Pour info, les cellules d'une colonne donnée seront toutes de la même taille. Que tu ais une lettre ou une phrase, la cellule prendra la taille de la cellule la plus remplie.

A plus !

Salut désolé du retard mais je suis partie sur un autre projet je viens de tester ce que tu m'a donné mais cela ne fonctionne toujours pas

A Plus !

Rechercher des sujets similaires à "ajustement auto largeur colonne columns width"