XL 2016 Formats ListBox/En-têtes

didier09

XLDnaute Occasionnel
Bonsoir le forum,

Je viens solliciter votre aide pour une problématique d’alignement Entêtes et Item ListBox. J'ai adapté un fichier exemple de M. Boisgontier ,mais je n'arrive à trouver les propriétés correspondantes pour un alignement correct. De plus l'userForm se redimesionne parfois tout seul ( Très petit, illisible). J'ai cherché dans les propriétés ColumnWidths du ListBox et essayer d'autres changement sans effet. , idem sur l'UserForm.
Je vous joins mon fichier exemple.
Merci de votre participation.
Didier
 

Pièces jointes

  • SuiviDefautsInstallationsV1.xlsm
    86.3 KB · Affichages: 15

didier09

XLDnaute Occasionnel
Bonsoir Robert,

Désolé, le mot de passe est donnée dans le code VBA. C'est pour cette raison que je n'ai pas précisé. Il est juste là pour éviter à des collègues non expérimentés de faire des erreurs.
MDP : OK

En plus c'est pour gérer un autre userForm....

Didier




VB:
Private Sub Validation_Click()

Dim i As Integer
Dim p As Integer


ActiveSheet.Unprotect Password:="OK"

    Dim LigneDeDestination  As Long
    Me.Techniciens.BackColor = &H80000005
    Me.Secteurs.BackColor = &H80000005
    Me.Communes.BackColor = &H80000005
    Me.OperationsTechniciens.BackColor = &H80000005
    Me.OperationsAutres.BackColor = &H80000005
    
    Me.Datemàj.BackColor = &H80000005
    If Me.Secteurs = "" Then
         MsgBox "Secteur non documenté."
        Me.Secteurs.BackColor = &H80FFFF
        Me.Secteurs.SetFocus
        Exit Sub
     End If
    If Me.Communes.ListIndex = -1 Then
        MsgBox "La commune n'est pas documentée."
        Me.Communes.BackColor = &H80FFFF
        Me.Communes.SetFocus
        Exit Sub
    End If
    If Me.Techniciens.ListIndex = -1 Then
        MsgBox "Le nom du technicien n'est pas documenté."
       Me.Techniciens.BackColor = &H80FFFF
       Me.Techniciens.SetFocus
       Exit Sub
    End If
    If Me.Postes.ListCount = 0 Then
            Me.Postes.Visible = False
            Me.LbPostes.Visible = False
        Else
            Me.Postes.Visible = True
            Me.LbPostes.Visible = True
        End If
         If Me.Traitements.ListCount = 0 Then
            Me.Traitements.Visible = False
            Me.LbTraitements.Visible = False
        Else
            Me.Traitements.Visible = True
            Me.LbTraitements.Visible = True
        End If
    If Me.Postes.ListIndex = -1 And Me.Postes.Visible = True And Me.Traitements.ListIndex = -1 Then
        MsgBox "Le nom du poste ou du traitement n'est pas documenté."
        Me.Postes.BackColor = &H80FFFF
        Me.Postes.SetFocus
       Exit Sub
    End If
    If Me.Traitements.ListIndex = -1 And Me.Traitements.Visible = True And Me.Postes.ListIndex = -1 Then
        MsgBox "Le nom du traitement ou du poste n'est pas documenté."
        Me.Traitements.BackColor = &H80FFFF
        Me.Traitements.SetFocus
       Exit Sub
    End If
    If Me.OperationsTechniciens.ListIndex = -1 Then
        MsgBox "L'opération technicien n'est pas documentée."
       Me.OperationsTechniciens.BackColor = &H80FFFF
       Me.OperationsTechniciens.SetFocus
       Exit Sub
    End If
    If Me.OperationsAutres.ListIndex = -1 Then
       MsgBox "Les autres opérations ne sont pas documentées."
       Me.OperationsAutres.BackColor = &H80FFFF
        Me.OperationsAutres.SetFocus
       Exit Sub
    End If
    'If Me.Divers.ListIndex = -1 Then
       ' MsgBox "Divers n'est pas documenté."
       ' Me.OperationsAutres.BackColor = &H80FFFF
       ' Me.OperationsAutres.SetFocus
       ' Exit Sub
    'End If
    If Me.Datemàj = "" Then
        MsgBox "La date n'est pas documentée."
        Me.Datemàj.BackColor = &H80FFFF
        Me.Datemàj.SetFocus
        Exit Sub
    End If
    If IsDate(Me.Datemàj) = False Then
        MsgBox "La date n'est pas une date conforme."
        Me.Datemàj.BackColor = &H80FFFF
        Me.Datemàj.SetFocus
        Exit Sub
    End If
    With Sheets("Détail Opérations")
        LigneDeDestination = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range("C" & LigneDeDestination) = CLng(Me.ID)
        .Range("B" & LigneDeDestination) = Me.Secteurs
        .Range("A" & LigneDeDestination) = Me.Communes
        .Range("D" & LigneDeDestination) = Me.Postes
        .Range("E" & LigneDeDestination) = Me.Traitements
        .Range("F" & LigneDeDestination) = Me.OperationsTechniciens
        .Range("G" & LigneDeDestination) = Me.OperationsAutres
        '.Range("H" & LigneDeDestination) = Me.Divers
        .Range("H" & LigneDeDestination) = Me.Divers1
        .Range("I" & LigneDeDestination) = CDate(Me.Datemàj)
        .Range("J" & LigneDeDestination) = Me.Techniciens
    End With
    'MsgBox "Transfert des données effectué"
    'Unload Me
    
 
   ' Me.Techniciens = ""
    'Me.Techniciens.Clear
    Me.OperationsTechniciens = ""
    Me.OperationsTechniciens.Clear
    Me.OperationsAutres = ""
    Me.OperationsAutres.Clear
    'Me.Divers = ""
    Me.Divers1 = ""
    'Me.Datemàj = ""
    
 i = 1
    Secteurs.Style = fmStyleDropDownCombo
   For i = 1 To Sheets("Données").Range("A65536").End(xlUp).Row
        Secteurs = Sheets("Données").Range("A" & i)
        If Secteurs.ListIndex = -1 Then Secteurs.AddItem Sheets("Données").Range("A" & i)
    Next i
    For i = 1 To Sheets("Données").Range("F65536").End(xlUp).Row
        Me.OperationsAutres.AddItem (Sheets("Données").Range("F" & i))
    Next i
    'For i = 1 To Sheets("Données").Range("G65536").End(xlUp).Row
       ' Me.Divers.AddItem (Sheets("Données").Range("G" & i))
    'Next i
    For i = 1 To Sheets("Données").Range("H65636").End(xlUp).Row
        Me.Techniciens.AddItem (Sheets("Données").Range("H" & i))
    Next i
    
 p = 1
     OperationsTechniciens.Style = fmStyleDropDownCombo
    For p = 1 To Sheets("Données").Range("E65536").End(xlUp).Row
        'Me.OperationsTechniciens.AddItem (Sheets("Données").Range("E" & p))
        OperationsTechniciens = Sheets("Données").Range("E" & p)
        If OperationsTechniciens.ListIndex = -1 Then OperationsTechniciens.AddItem Sheets("Données").Range("E" & p)
    Next p
    
    Secteurs = ""
    Secteurs.Style = fmStyleDropDownList
    Hauteur = (Application.Height / 2) - (UserFormAjouter.Height / 2) + UserFormAjouter.Datemàj.Top + 23   ' 20 étant la largeur du bandeau de l'userform
    Gauche = (Application.Width / 2) - (UserFormAjouter.Width / 2) + UserFormAjouter.Datemàj.Left + UserFormAjouter.Datemàj.Width
    Me.Top = (Application.Height / 2) - (Me.Height / 2)
    Me.Left = (Application.Width / 2) - (Me.Width / 2)
    
    OperationsTechniciens = ""
    OperationsTechniciens.Style = fmStyleDropDownList
  
    
    If Sheets("Détail Opérations").Range("A2") = "" Then
            ID = 1
        Else
            ID = Application.WorksheetFunction.Max(Sheets("Détail Opérations").Range("A2:A65536")) + 1
        End If
  
   ActiveSheet.Protect Password:="OK"
  

End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

En pièce jointe ton fichier modifié. Je ne sais pas pourquoi au début tes UserForms sont tout rikiki ?!...
Je l'ai ai agrandi puis j'ai modifié ces deux lignes de code pour que les valeurs soient identique (0.8) mais tu devras certainement les adapter selon la résolution de ton écran (c'est là, me semble-t-il, le problème).
Le code modifié (à l'initialisation de l'UserForm) :

VB:
    X = X + f.Columns(i).Width * 0.8 '<------ ici
    temp = temp & f.Columns(i).Width * 0.8 & ";" '<------ ici
Le fichier :
 

Pièces jointes

  • Didier_ED_v01.xlsm
    61.9 KB · Affichages: 11

didier09

XLDnaute Occasionnel
Bonjour Robert,

Merci pour ta solution. c'était problématique pour la suite et pour moi...

Je vais essayer d'améliorer encore le fichier:
- Pour aider et pour plus de cohérence pour mes utilisateurs je vais supprimer l'UserForm Ajouter actuel et me servir d'un autre UserForm identique à celui pour clôturer.

Je posterai le fichier terminé, je reviendrai aussi peut-être vers le forum si ça coince...

Bonne journée et bon week-end
Didier