Bloquer largeur de colonne EXCEL

Résolu
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. ;)



--
"Mais comment faire,
Comment lui dire,
Comment lui faire voir,
Ma planète,
Artificielle..."

-M-

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

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

    eric
    1. Je suis pas super bon en macro.
      Vous auriez un petit exemple ?

      Merci d'avance
    2. Contributeur
      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
    3. 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
    4. Contributeur
      où est ce que je peux insérer le votre
      plutôt en fin de la procédure que tu appelles
    5. Et à quoi correspondent les chiffres de votre code ?