Largeur colonne

Résolu/Fermé
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 29 juil. 2014 à 00:32
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 2 août 2014 à 11:33
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

Le Pingou Messages postés 12046 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
1 août 2014 à 10:27
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
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
1 août 2014 à 15:53
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
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
1 août 2014 à 15:54
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
1 août 2014 à 15:57
Bonjour,

Range("A1:AI13").Font.Bold = True
eric
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
1 août 2014 à 18:46
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
Raymond PENTIER Messages postés 58396 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 094
Modifié par Raymond PENTIER le 29/07/2014 à 02:19
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
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
29 juil. 2014 à 08:25
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
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
31 juil. 2014 à 23:57
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
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
1 août 2014 à 02:24
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
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
1 août 2014 à 13:47
Bonjour Pascal

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

A+

Cdlmnt
0
Le Pingou Messages postés 12046 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
1 août 2014 à 14:23
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
Le Pingou Messages postés 12046 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
29 juil. 2014 à 17:19
Bonjour,
Essayez avec le code qui suit :
Range("A18:A" & Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit 

0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
31 juil. 2014 à 23:30
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58396 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 094
29 juil. 2014 à 20:31
Désolé ; je n'y connais rien en macros ...
0
Le Pingou Messages postés 12046 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
1 août 2014 à 10:00
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
WeaponEDGE Messages postés 113 Date d'inscription vendredi 18 juillet 2014 Statut Membre Dernière intervention 21 novembre 2014 9
Modifié par WeaponEDGE le 1/08/2014 à 10:16
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
Le Pingou Messages postés 12046 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
Modifié par Le Pingou le 1/08/2014 à 22:47
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
1 août 2014 à 23:42
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
Le Pingou Messages postés 12046 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
1 août 2014 à 23:50
Bonsoir eriiic,
J'en profite pour te souhaiter une bonne nuit et excellente fin de semaine.
Amicales salutations
Le Pingou
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
1 août 2014 à 23:59
Merci, bon we estival :-)
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
2 août 2014 à 08:08
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
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
2 août 2014 à 11:33
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