Ajustement largeurs sur plusieurs onglets

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patsyl60

XLDnaute Occasionnel
Bonjour le forum,

Petit problème de mise en forme.

Dans un tableau, via une macro, je veux sélectionner toutes les feuilles et ajuster automatiquement la largeur des colonnes. Cela ne fonctionne pas. Lorsque je sélectionne toutes les feuilles, la largeur se met à jour sur la 1ère feuille et pas sur les suivantes.

Pouvez vous m'aider.

Un petit fichier exemple en pièce jointe. (Je n'ai mis qu'une ligne 1 sur 3 onglets mais dans mon tableau définitif, il y à minimum 68 onglets et environ 30 lignes)

D'avance merci.

Patsyl60 😕
 

Pièces jointes

Re : Ajustement largeurs sur plusieurs onglets

Bonjour Patsyl60 ,
Bonjour à toutes et à tous.

Une solution sans VBA.

  1. Cliquez avec le bouton droit de votre souris sur un onglet de feuille, puis dans le menu, cliquez sur Sélectionner toutes les feuilles.
  2. Sélectionnez les colonnes à ajuster le contenu.
  3. Double-cliquez sur une bordure à droite de l'un des en-têtes de colonne.
A vous lire et bon courage.

Cordialement.

BCharef
 
Dernière édition:
Re : Ajustement largeurs sur plusieurs onglets

Salut Patsyl60, le Forum

Peut-être comme cela

Code:
Sub Macro1()
Dim i As Byte
For i = 1 To Sheets.Count
    With Sheets("Feuil" & i)
        .[A1].FormulaR1C1 = "aaaaaaaaaaaaaaaa"
        .[B1].FormulaR1C1 = "bbbbbbbbbbbbbbbbbbbbbbb"
        .[C1].FormulaR1C1 = "cccccccccccccccccccccc"
        .Columns("A:C").EntireColumn.AutoFit
    End With
Next i
End Sub
A condition que la structure de tes feuilles soient toujours pareilles CAD Feuil1, Feuil2, Feuil3 etc...

EDITION: Salut BCharef 🙂, Robert 🙂...Moiaussi

Bonne Journée
 

Pièces jointes

Dernière édition:
Re : Ajustement largeurs sur plusieurs onglets

Bonjour Patsyl, bonjour le forum,

J'ai pas bien compris ton code... Peut-être comme ça :
Code:
Sub Macro1()
Dim sh As Worksheet 'déclare la variable sh
 
Application.ScreenUpdating = False 'masque les changements à l'écran
For Each sh In Sheets 'boucle sur tous les onglets du classeur
    sh.Select
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "aaaaaaaaaaaaaaaa"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "bbbbbbbbbbbbbbbbbbbbbbb"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "cccccccccccccccccccccc"
    Columns("A:C").EntireColumn.AutoFit
    Range("A1").Select
Next sh 'prochain onglet du classeur
 
Sheets("Feuil1").Select
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub

Édition :

Salut BCharef, Dull, bien le bonjour heureux de vous croiser.
 
Re : Ajustement largeurs sur plusieurs onglets

Merci à bcharef, Dull, Robert pour vos réponses.

Comme c'est pour intégrer dans une macro, je préfére les macros de Dull et Robert.

Les 2 fonctionnent super bien mais comme le noms de mes feuilles changent,Je vais opter pour la macro de Robert

Décidement, ce forum est une mine d'entraide.

Bonne journée à tous. Merci encore pour votre aide.

Patsyl60 🙂
 
Re : Ajustement largeurs sur plusieurs onglets

Re le Fil

Un mélange des deux codes

Code:
Sub Macro1()
Dim sh As Worksheet 'déclare la variable sh
Application.ScreenUpdating = False 'masque les changements à l'écran
For Each sh In Sheets 'boucle sur tous les onglets du classeur
With sh
    .[A1].FormulaR1C1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    .[B1].FormulaR1C1 = "bbbbbbbbbbbbbbbbbbbbbbb"
    .[C1].FormulaR1C1 = "cccccccccccccccccccccc"
    .Columns("A:C").EntireColumn.AutoFit
End With
Next sh
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub
Le fait d'enlever les Select allège considérablement le Code 🙂

Bonne Journée
 
Re : Ajustement largeurs sur plusieurs onglets

Bonjour à tous


Pourquoi pas tout simplement 😕

Code:
Sub largcol()
Dim s As Worksheet
For Each s In Worksheets
With s
.Columns(1).ColumnWidth = 13.29
.Columns(2).ColumnWidth = 16.57
.Columns(3).ColumnWidth = 11.43
End With
Next s
End Sub

PS: Sheets inclut aussi les feuilles graphiques (donc risque de bug)
Avec Worksheets (les feuilles graphiques ne sont pas prises en compte)
 
Re : Ajustement largeurs sur plusieurs onglets

Merci pour toutes vos réponses qui fonctionnent.

Message pour Staple1600 : Les largeurs sont différentes car comme je l'explique dans mon 1ér post il y an environ 30 lignes par feuille ( non présentes dans mon fichier test (trop lourd)), c'est pourqui il me faut l'EntireColumn.AutoFit.

Encore merci à tous.

Patsyl60 🙂
 
Re : Ajustement largeurs sur plusieurs onglets

Re


Et alors ?


Que ce soit avec ma proposition ou les autres , il te faut donc

60 lignes de code ? (une pour chaque colonne non ?)

(Dans les exemples du fil, nous traitions tous 3 colonnes , donc 3 lignes de code )
 
Re : Ajustement largeurs sur plusieurs onglets

re,

Je me suis peut être mal exprimé. Dans mes lignes des colonnes A, B, C de toutes les feuilles , les réf sont différentes en nombre de caractères ( ce sont des noms et adresse) et je veux ajuster les colonnes en fonction de la réf la plus longue. Dans ta macro, les largeurs des colonnes sont fixes.

J'espère avoir répondu à ton post. Sinon, dis le mois, je te mettrai un petit fichier test avec quelques réfs.

Encore merci pour ton aide et ton activité précieuse sur ce forum.

Patsyl60 🙂
 
Re : Ajustement largeurs sur plusieurs onglets

Re


Pour info ce sont les largeurs trouvées dans ton fichier exemple 🙄

Sinon tu peux faire cela aussi

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Target.Columns.AutoFit
End Sub

A mettre dans ThisWorkbook
 
Dernière édition:
Re : Ajustement largeurs sur plusieurs onglets

Bonsoir patsyl60, Dull, Robert, Staple1600,
Bonsoir à toutes et à tous.

Afin de solutionner votre problème, et comme je suis un ignare en la matiére, je vous recommande de procéder à l'enregistrement la macro en veillant au respect de la procédure citée ci haut.

Une fois l'enregistrement de la macro est enregistrée, essayez de le faire présenter à nos chéres ami(e)s expert en la matiére afin de porter les corrections nécessaires en cas de nécessite.

A vous lire et bon courage.

Cordialement.

BCharef
 
Re : Ajustement largeurs sur plusieurs onglets

Re Bonsoir patsyl60, Dull, Robert, Staple1600,
Re Bonsoir à toutes et à tous.

L'enregistrement de la macro pour 68 feuilles et pour l'ensemble des colonnes m'a donné le code ci-après:

Code:
[B][COLOR=Navy]AjustementLargeurSurPusieursOnglets[/COLOR][/B] Macro
' Macro enregistrée le 01/11/2009 par BCharef
'

'
    Sheets(Array("Feuil68", "Feuil67", "Feuil66", "Feuil65", "Feuil64", "Feuil63", _
        "Feuil62", "Feuil61", "Feuil60", "Feuil59", "Feuil58", "Feuil57", "Feuil56", "Feuil55" _
        , "Feuil54", "Feuil53", "Feuil52", "Feuil51", "Feuil50", "Feuil49", "Feuil48", _
        "Feuil47", "Feuil46", "Feuil45", "Feuil44")).Select
    Sheets("Feuil68").Activate
    Sheets(Array("Feuil43", "Feuil42", "Feuil41", "Feuil40", "Feuil39", "Feuil38", _
        "Feuil37", "Feuil36", "Feuil35", "Feuil34", "Feuil33", "Feuil32", "Feuil31", "Feuil30" _
        , "Feuil29", "Feuil28", "Feuil27", "Feuil26", "Feuil25", "Feuil24", "Feuil23", _
        "Feuil22", "Feuil21", "Feuil20", "Feuil19")).Select Replace:=False
    Sheets(Array("Feuil18", "Feuil17", "Feuil16", "Feuil15", "Feuil14", "Feuil13", _
        "Feuil12", "Feuil11", "Feuil10", "Feuil9", "Feuil8", "Feuil7", "Feuil6", "Feuil5", _
        "Feuil4", "Feuil1", "Feuil2", "Feuil3")).Select Replace:=False
    Cells.Select
    Cells.EntireColumn.AutoFit
    ActiveWindow.ScrollColumn = 244
    ActiveWindow.ScrollColumn = 243
    ActiveWindow.ScrollColumn = 242
    ActiveWindow.ScrollColumn = 240
    ActiveWindow.ScrollColumn = 236
    ActiveWindow.ScrollColumn = 230
    ActiveWindow.ScrollColumn = 221
    ActiveWindow.ScrollColumn = 211
    ActiveWindow.ScrollColumn = 195
    ActiveWindow.ScrollColumn = 180
    ActiveWindow.ScrollColumn = 167
    ActiveWindow.ScrollColumn = 157
    ActiveWindow.ScrollColumn = 149
    ActiveWindow.ScrollColumn = 141
    ActiveWindow.ScrollColumn = 135
    ActiveWindow.ScrollColumn = 127
    ActiveWindow.ScrollColumn = 120
    ActiveWindow.ScrollColumn = 112
    ActiveWindow.ScrollColumn = 104
    ActiveWindow.ScrollColumn = 98
    ActiveWindow.ScrollColumn = 93
    ActiveWindow.ScrollColumn = 88
    ActiveWindow.ScrollColumn = 83
    ActiveWindow.ScrollColumn = 77
    ActiveWindow.ScrollColumn = 72
    ActiveWindow.ScrollColumn = 69
    ActiveWindow.ScrollColumn = 65
    ActiveWindow.ScrollColumn = 63
    ActiveWindow.ScrollColumn = 62
    ActiveWindow.ScrollColumn = 61
    ActiveWindow.ScrollColumn = 59
    ActiveWindow.ScrollColumn = 58
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 55
    ActiveWindow.ScrollColumn = 51
    ActiveWindow.ScrollColumn = 47
    ActiveWindow.ScrollColumn = 42
    ActiveWindow.ScrollColumn = 38
    ActiveWindow.ScrollColumn = 32
    ActiveWindow.ScrollColumn = 27
    ActiveWindow.ScrollColumn = 22
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Sheets(Array("Feuil68", "Feuil67", "Feuil66", "Feuil65", "Feuil64", "Feuil63", _
        "Feuil62", "Feuil61", "Feuil60", "Feuil59", "Feuil58", "Feuil57", "Feuil56", "Feuil55" _
        , "Feuil54", "Feuil53", "Feuil52", "Feuil51", "Feuil50", "Feuil49", "Feuil48", _
        "Feuil47", "Feuil46", "Feuil45", "Feuil44")).Select
    Sheets("Feuil68").Activate
    Sheets(Array("Feuil43", "Feuil42", "Feuil41", "Feuil40", "Feuil39", "Feuil38", _
        "Feuil37", "Feuil36", "Feuil35", "Feuil34", "Feuil33", "Feuil32", "Feuil31", "Feuil30" _
        , "Feuil29", "Feuil28", "Feuil27", "Feuil26", "Feuil25", "Feuil24", "Feuil23", _
        "Feuil22", "Feuil21", "Feuil20", "Feuil19")).Select Replace:=False
    Sheets(Array("Feuil18", "Feuil17", "Feuil16", "Feuil15", "Feuil14", "Feuil13", _
        "Feuil12", "Feuil11", "Feuil10", "Feuil9", "Feuil8", "Feuil7", "Feuil6", "Feuil5", _
        "Feuil4", "Feuil1", "Feuil2", "Feuil3")).Select Replace:=False
    Sheets("Feuil68").Select
    Range("A1").Select
End Sub

Il est utile de porter à votre connaissance le bon fonctionnement, après avoir affecter la macro à un bouton.

Sincèrement, je ne sais pas comment le simplifier, mais je laisserai le soin à nos chéres ami(es) de le simplifier et, je penserais bel et bien que ça me servira comme première leçon en cas de simplification.

A vous lire et bon courage.

Cordialement.

BCharef.
 
Re : Ajustement largeurs sur plusieurs onglets

Merci à tous pour votre aide.

Pour Staple1600, Merci pour ta méthode. En la mettant dans ThisWorkbook, la largeur se met automatiquement à chaque changement de cellule.

Pour bcharef, les méthodes de dull ( 14h17), de Robert (12h47) ainsi que la méthode de Staple1600 (20h03) fonctionnent parfaitement.

Pour moi tout est ok.

Encore merci. Bonne soirée à tous

Patsyl60 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

F
Réponses
5
Affichages
1 K
Fanou44
F
Réponses
6
Affichages
848
L
Réponses
2
Affichages
1 K
L
R
Réponses
4
Affichages
2 K
Romane.
R
M
Réponses
5
Affichages
2 K
L
  • Question Question
Réponses
7
Affichages
6 K
Réponses
1
Affichages
1 K
Réponses
7
Affichages
880
Retour