Largeur colonne

Résolu
pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   -  
pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   -
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. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
       
      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. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
       
      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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Range("A1:AI13").Font.Bold = True
      eric
      0
    4. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
       
      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. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    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
  3. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
     
    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. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
       
      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. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonjour Pascal

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

      A+

      Cdlmnt
      0
    4. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      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
  4. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Essayez avec le code qui suit :
    Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit 

    0
    1. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Désolé ; je n'y connais rien en macros ...
    0
  7. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  8. WeaponEDGE Messages postés 114 Statut Membre 9
     
    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
  9. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonsoir eriiic,
      J'en profite pour te souhaiter une bonne nuit et excellente fin de semaine.
      Amicales salutations
      Le Pingou
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Merci, bon we estival :-)
      0
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  11. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
     
    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