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

  1. Contributeur
    Bonjour,

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

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

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