Bloquer largeur de colonne EXCEL [Résolu/Fermé]

Signaler
Messages postés
415
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
7 août 2019
-
Messages postés
415
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
7 août 2019
-
Bonjour,

J'aimerais savoir si c'est possible de bloquer une largeur de colonne ?

Je vous explique :

J'ai un classeur excel avec différents onglets et des tableaux dans chaque onglets. Dans ces onglets les utilisateurs entre leur données dans les tableaux.

Ensuite moi je lance une mise à jour avec un bouton macro dans excel qui me sélectionne les tableaux que j'ai demandé et les affiche les uns à la suite des autres dans un onglet spécial. Les tableaux ont tous la même trame !

Donc je voudrais définir la largeur des colonnes (différente pour chaque colonne) et qu'elles soient bloqué définitivement. Pour qu'à chaque mise à jour je n'ai pas à retaper toutes les largeurs de colonnes.

J'espère avoir été clair. Pour plus d'infos n'hésitez pas !

Merci d'avance. ;)


A voir également:

1 réponse

Messages postés
23990
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
9 avril 2021
6 719
Bonjour,

Soit tu protèges la feuille, soit tu redéfinis les largeurs de colonnes dans ta macro.

eric
Messages postés
23990
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
9 avril 2021
6 719
Re,

exemple:
Sub largeurColonnes()
    Dim larg As Variant, col As Long
    larg = Array(15, 25, 8) ' largeur des colonnes dans un tableau
    For col = 2 To 4 ' à partir de la colonne 2 
        Columns(col).ColumnWidth = larg(col - 2)
    Next col
End Sub

eric
Messages postés
415
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
7 août 2019
24
Ca n'a pas l'air de marcher, j'aimerais bien définir la largeur de chaque colonne si c'est possible.

Voila mon programme, où est ce que je peux insérer le votre ?

Option Explicit
Public Wks As Worksheet
Const Nom = "Process Analysis Synoptic"

Public Sub CopieTB()
Dim Lig As Long, NbTB As Integer, Ordre As Integer
Dim Plage As Range, cel As Range
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets(Nom).Delete
Set Wks = Sheets.Add
Wks.Move After:=Sheets("synoptic")
Wks.Name = Nom
With Sheets("synoptic")
Set Plage = .Range("B19:B" & .Cells(.Rows.Count, 2).End(xlUp).Row)
'Compte le nombre de TB à copier
For Each cel In Plage
If cel <> "" Then NbTB = NbTB + 1
Next cel
If NbTB = 0 Then Exit Sub 'pas trouver de sélectionµ
For Lig = 1 To NbTB
For Each cel In Plage
If cel = Lig Then
CopieUnTB cel
End If
Next cel
Next Lig
End With
Wks.Select
Set Wks = Nothing
Application.DisplayAlerts = True
End Sub



Sub CopieUnTB(cel As Range)
Dim TB, LigNext As Long
TB = Split(cel.Offset(0, 1), "/")
With Sheets(Trim(TB(0)))
LigNext = Wks.Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
.Range("A10:" & .Range("A1").SpecialCells(xlCellTypeLastCell).Address).Copy Wks.Range("A" & LigNext)
End With
End Sub


Merci D'avance
Messages postés
23990
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
9 avril 2021
6 719
où est ce que je peux insérer le votre
plutôt en fin de la procédure que tu appelles
Messages postés
415
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
7 août 2019
24
Et à quoi correspondent les chiffres de votre code ?
Messages postés
415
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
7 août 2019
24
C'est bon ça fonctionne !!!

Merci ! =) Heureusement que ces forums existent !