Largeur colonne

Résolu
Bonjour,

Je cherche le code pour mettre une colonne en forme par rapport à son plus grand contenu, mais je veux commencer à la ligne A18 et finir à la dernière de mon tableau, qui varie suivant les données récupérées.

Merci pour votre aide.

10 réponses

  1. Bonjour pascalou83400,
    Essayez donc avec cette procédure :
    Sub colonnes()
    Dim nbli As Integer
    nbli = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A18:AI" & nbli).Columns.AutoFit
    Columns("B:B").ColumnWidth = 13
    Columns("C:C").ColumnWidth = 15.5
    Columns("F:F").ColumnWidth = 13.5
    Columns("K:K").ColumnWidth = 14.5
    Columns("L:L").ColumnWidth = 14.5
    Columns("M:M").ColumnWidth = 38
    Columns("P:P").ColumnWidth = 14.5
    Columns("Q:Q").ColumnWidth = 14.5
    Columns("U:U").ColumnWidth = 17
    With Range("A18:B" & nbli & "," & "E18:AI" & nbli)
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlBottom
    End With
    With Range("C18:D" & nbli)
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlBottom
    End With
    End Sub

    1
    1. Bon j'avance à petit pas, j'ai fait qq modifs et ca marche , sauf que je veux mettre en gras la plage A1:AI13 et que je ne trouve pas le code (j'ai fais une macro pour voir le code et voila ce que j'en ai tiré)
      merci les gars.
      0
    2. le code ;

      Sub colonnes()
      Dim nbli As Integer
      nbli = Cells(Rows.Count, 1).End(xlUp).Row
      Range("A18:AI" & nbli).Columns.AutoFit
      Columns("B:B").ColumnWidth = 16
      Columns("F:F").ColumnWidth = 14.5
      Columns("K:K").ColumnWidth = 16
      Columns("L:L").ColumnWidth = 16
      Columns("M:M").ColumnWidth = 38
      Columns("P:P").ColumnWidth = 15
      Columns("Q:Q").ColumnWidth = 15
      Columns("R:R").ColumnWidth = 16
      Columns("S:S").ColumnWidth = 18.5
      Columns("T:T").ColumnWidth = 15
      Columns("U:U").ColumnWidth = 18
      Columns("V:V").ColumnWidth = 19.5
      Columns("W:W").ColumnWidth = 15
      Columns("X:X").ColumnWidth = 14.5
      Columns("Y:Y").ColumnWidth = 17
      Columns("AF:AF").ColumnWidth = 12
      Columns("AH:AH").ColumnWidth = 14
      Columns("AI:AI").ColumnWidth = 14
      With Range("A16:AI" & nbli)
      .HorizontalAlignment = xlCenter
      .VerticalAlignment = xlCenter
      End With

      With Range("C18:D18" & nbli)
      .HorizontalAlignment = xlLeft
      .VerticalAlignment = xlCenter
      End With

      End Sub

      Sub engrasA1aAI13()
      ' mettre en gars la plage de A1:AI13

      Range("A1:AI13").Selection.Font.Bold = True

      End Sub

      Sub policeencalibri28()

      Dim nbli As Integer
      nbli = Cells(Rows.Count, 1).End(xlUp).Row
      Range("A1:AI" & nbli).Select
      With Selection.Font
      .Name = "Calibri"
      .Size = 28
      .Underline = xlUnderlineStyleNone
      .ThemeColor = xlThemeColorLight1
      .TintAndShade = 0
      .ThemeFont = xlThemeFontMinor
      End With

      End Sub
      0
    3. Contributeur
      Bonjour,

      Range("A1:AI13").Font.Bold = True
      eric
      0
    4. je continue , je cherche à inserer une image jpg dans mon entete, j'ai trouvé ce code, mais je ne sais pas comment indiquer le chemin ou se troove l'image.

      mon chemin est W:\logo\logo palmacea entete, je mets le code

      Sub Macro1()
      Dim Photo As Variant
      Dim Gauche, Sommet, Largeur, Hauteur As Single

      Photo = Application.GetOpenFilename("Images JPEG (*.jpg), *.jpg")
      Gauche = Range("C2").Left
      Sommet = Range("C2").Top
      Largeur = Range("C2").Width
      Hauteur = Range("C2").Height

      If Photo <> False Then
      Feuil1.Shapes.AddPicture Photo, True, True, Gauche, Sommet, Largeur, Hauteur
      End If
      End Sub
      0
  2. Contributeur
    Non : une colonne ne peut pas avoir des largeurs différentes !
    Tu ne peux faire cela que sur Word, où les tableaux sont dessinés, et non automatiques comme dans Excel.

    C'est bien, la retraite ! Surtout aux Antilles ... :-)
    Raymond (INSA, AFPA, CF/R)
    0
    1. Bonjour Raymond,

      Je sais et je veux une seule taille, mais je veux étirer ma colonne avec la plus grande valeur, mais je dois commencer à la ligne A18, car au dessus j'ai des entêtes trop volumineuses.

      Je fais le code suivant qui marche bien, sauf que je ne trouve pas comment me baser sur ma ligne A18 jusqu'à la dernière ligne utilisée.

      Sub largeurdecolonne()

      Columns("A:A").EntireColumn.AutoFit

      End Sub

      Merci

      bonne journée
      0
      1. Bonsoir Pascalou

        Où as tu mis ton code ?
        Sub colonne()

        Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit

        end sub

        Il fonctionne bien si tu le mets dans dans le Worksheet de la feuille en question

        (Ouvrir l'éditeur VBA Cliquer sur la feuille dans l'arborescence et mettre le code dans la page blanche)

        Si au contraire tu mets le code dans un module il faut indiquer la feuille,
        tu as plusieurs manières de proceder, soit :

        Activesheet.Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit

        qui appliquera le code dans la feuille active (tu peux ainsi appeler la macro de n'importe quelle feuille et elle s'appliquera sur celle-ci

        soit Sheets("Feuil2").Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit

        et la macro ne s'appliquera qu'à la feuille nommée Feuil2

        soit enfin Sheets(3).Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit

        et la macro s'appliquera à la 3eme feuille du classeur (en partant de la gauche) quelque soit son nom

        Cdlmnt
        0
      2. Bonjour Via55,

        meme le vba n'a pas de secret pour toi...

        alors je vais encore profiter de tes explications qui sont au top.

        j'ai mis ce code , mais j'ai une erreur :

        Sub colonnes()

        Range("A18:AI18" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit
        Columns("B:B").ColumnWidth = 13
        Columns("C:C").ColumnWidth = 15.5
        Columns("F:F").ColumnWidth = 13.5
        Columns("K:K").ColumnWidth = 14.5
        Columns("L:L").ColumnWidth = 14.5
        Columns("M:M").ColumnWidth = 38
        Columns("P:P").ColumnWidth = 14.5
        Columns("Q:Q").ColumnWidth = 14.5
        Columns("U:U").ColumnWidth = 17

        Range("A18:B18" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.HorizontalAlignment = xlCenter.Columns.VerticalAlignment = xlBottom

        Range("C18:D18" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.HorizontalAlignment = xlLeft.Columns.VerticalAlignment = xlBottom

        Range("E18:AI18" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.HorizontalAlignment = xlCenter.Columns.VerticalAlignment = xlBottom
        End Sub

        et je cherche à macrotiser la police calibri en 30 et les marges.

        Bon je vais me coucher, car je n'en peu plus.

        a+

        Pascal
        0
      3. Bonjour Pascal

        Le Pingou (que je salue au passage) a été plus rapide que moi et te donnes la solution

        A+

        Cdlmnt
        0
      4. Bonjour via55,
        Merci.
        En utilisant [Ajouter un commentaire] cela a pour effet de voir les réponses toujours plus loin dans le fil, c'est vraiment dommage pour le suivi... mais bon chacun si retrouveras .... !
        Salutations.
        Le Pingou
        0
    2. Bonjour,
      Essayez avec le code qui suit :
      Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit 

      0
      1. Bonjour,

        Bon j'ai eu le temps de voir ton code, ca ne marche pas, je pense que je rentre mal le cde :

        Sub colonne()

        Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit

        end sub

        il ne manque pas qq chose , comme style la feuille du classeur ?

        activeworksheets

        je commence mon apprentissage vba, je pense que ca va etre coton.

        a+

        Pascal
        0
    3. Contributeur
      Désolé ; je n'y connais rien en macros ...
      0
      1. Bonjour pascalou83400,
        Est-ce que le code que je vous ai proposé fonctionne chez-vous... ?
        Vous dites ; j'ai mis ce code, mais j'ai une erreur
        Pour pouvoir vous aider il faut aussi mettre le message d'erreur et la ligne de code concerné... !

        0
        1. Bonjour,

          Est ce qu'il y des données en dehors de votre Tableau dans la colonne A ?

          Si la réponse est non, alors utilsez le code suivant :

          Columns("A:A").EntireColumn.AutoFit

          Si la réponse est oui :
          Après avoir jeté un petit coup d'oeil, je ne pense que ce soit possible. A vrai dire :

          - soit on autoajuste une colonne en fonction de toutes les données de celle ci. D'ailleur manuellement on est Obligé de cliquer sur A pour ensuite double cliquer sur le bord pour l'autoajuster.

          - soit on impose une taille manuellement et dans ce cas on utlise le code :
          Columns("A:A").ColumnWidth = 15 (plus la valeur est grande plus la largeur de la colonne est grande)
          0
          1. Bonsoir,
            C'est une telle salade pour suivre la discussion ...... !
            Sans compter que l'on ne sait même ce qu'il en est des propositions .... !
            Merci de prendre note que je quitte le poste, désolé.

            Salutations.
            Le Pingou
            0
            1. Contributeur
              Ouais ben pareil.
              Il discute dans son coin, et aucun retour sur les propositions (sans parler de remerciements...).
              Et bien qu'il continue tout seul.
              eric
              0
            2. Bonsoir eriiic,
              J'en profite pour te souhaiter une bonne nuit et excellente fin de semaine.
              Amicales salutations
              Le Pingou
              0
            3. Contributeur
              Merci, bon we estival :-)
              0
          2. Bonjour le fil,

            une petite proposition après la bronzette, ce code dans les propriétés de la feuille (clic droit sur l'onglet/visualiser le code) paramètrera les colonnes de A à E (1 à 5) sur un simple clic dans la plage A5:E30

            Option Explicit

            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            If Target.Column >= 1 And Target.Column <= 5 And Target.Row > 5 And Target.Row < 30 Then
            Columns("A:E").EntireColumn.AutoFit
            Else
            Columns("A:E").ColumnWidth = 2
            End If
            End Sub

            0
            1. Bonjour à tous,

              Bon je pense que j'ai réussi à mettre le code qui correspond à ma mise en page, je vous remercie tous pour voter aide, et désolé de ne pas répondre et remercier en temps réel les personnes qui m'aident ( tout particulièrement Via55, Pingou, et Eriiic ), mais je prends beaucoup de temps pour comprendre et mettre en pratique vos données, qui pour moi représente des nuits sans sommeil, mais je crois que je devient accro à l'informatique.
              En retour la seule aide que je peux vous apporter est ma connaissance sur les plantes méditerranéennes,

              Mais bon je n'ai pas encore fini mon projet, j'avance très lentement, alors à bientôt.

              le code :

              Sub largeurdecolonnes()
              ' met les largeurs de colonnes suivant le besoin de la mise en page avec centrage du texte horiz + verti

              Dim nbli As Integer
              nbli = Cells(Rows.Count, 1).End(xlUp).Row
              Range("A18:AI" & nbli).Columns.AutoFit
              Columns("B:B").ColumnWidth = 16
              Columns("F:F").ColumnWidth = 14.5
              Columns("K:K").ColumnWidth = 16
              Columns("L:L").ColumnWidth = 16
              Columns("M:M").ColumnWidth = 38
              Columns("P:P").ColumnWidth = 15
              Columns("Q:Q").ColumnWidth = 15
              Columns("R:R").ColumnWidth = 16
              Columns("S:S").ColumnWidth = 18.5
              Columns("T:T").ColumnWidth = 15
              Columns("U:U").ColumnWidth = 18
              Columns("V:V").ColumnWidth = 19.5
              Columns("W:W").ColumnWidth = 15
              Columns("X:X").ColumnWidth = 14.5
              Columns("Y:Y").ColumnWidth = 17
              Columns("AF:AF").ColumnWidth = 12
              Columns("AH:AH").ColumnWidth = 14
              Columns("AI:AI").ColumnWidth = 14
              With Range("A16:AI" & nbli)
              .HorizontalAlignment = xlCenter
              .VerticalAlignment = xlCenter
              End With

              ' centrage du texte horiz + retrait gauche

              With Range("C18:D18" & nbli)
              .HorizontalAlignment = xlLeft
              .VerticalAlignment = xlCenter
              End With

              End Sub

              Sub engrasA1aAI13()

              ' mettre en gras la plage de A1:AI13

              Range("A1:AI13").Font.Bold = True

              End Sub

              Sub policeencalibri28()
              ' met le texte en police Calibri et en 28
              Dim nbli As Integer
              nbli = Cells(Rows.Count, 1).End(xlUp).Row
              Range("A1:AI" & nbli).Select
              With Selection.Font
              .Name = "Calibri"
              .Size = 28
              .Underline = xlUnderlineStyleNone
              .ThemeColor = xlThemeColorLight1
              .TintAndShade = 0
              .ThemeFont = xlThemeFontMinor
              End With

              End Sub

              Sub inserimagelogo()

              ' insere le logo dans l'entete

              Dim Gauche, Sommet, Largeur, Hauteur As Single

              Gauche = Range("D3").Left
              Sommet = Range("D3").Top
              Largeur = Range("D3").Width = 40
              Hauteur = Range("D3").Height

              Feuil1.Shapes.AddPicture "W:\logo\logo palmacea entete.jpg", True, True, Gauche, Sommet, Largeur, Hauteur

              End Sub
              0