none
Impossible de définir la propriété ColumnWidths. Le type ne correspond pas. RRS feed

  • Question

  • Bonjour,

    Je souhaite que les largeurs des colonnes dans un ListBox s'ajustent automatiquement. J'utilise le code ci-dessous. Curieusement tout fonctionnait parfaitement et ... soudainement ça ne fonctionne plus. J'obtiens le message d'erreur suivant à la ligne         .ColumnWidths = Join(tcol, ";").

    Erreur d'exécution '-2147352571 (80020005)

    Impossible de définir la propriété ColumnWidths. Le type ne correspond pas.

    ****************************************************************************

    Le userform est ComptesDonnees.  Et le listbox est ListeComptesDonnees.

    Je me suis inspiré d'un fichier de Philippe Tulliez trouvé sur Internet. Ce fichier aussi fonctionnait parfaitement et ... soudainement ... lui aussi ne fonctionne plus. C'est comme si quelque chose se produit sur l'ordinateur pour désactiver une composante ou???

    J'ai cherché sur Internet et cela semblait être relié à une variable mal définie ou mal utilisée mais sans en être certain et sans pouvoir réussir à régler la situation. D'autres ont aussi éprouvé cette même difficulté.

    Comment résoudre cette situation? Merci à l'avance.

    ****************************************************************************

    Option Explicit

    Dim tcol() As String, c As Long, tw As Double

    Sub Pro_LISTACC()

     

    'On Error GoTo Fin

     

    Application.ScreenUpdating = False

     

    Feuil9.Unprotect Feuil7.Range("CN_ValidShPwd").Value

    Feuil9.AutoFilterMode = False

     

     Application.Names.Add Name:="Var_ListAcc", RefersTo:=Feuil9.Range(Feuil9.Cells(Feuil9.Range("CN_ChifZoneFirstRow").Row - 2, Feuil9.Range("CN_ChifCpteZone").Column), Feuil9.Cells(Feuil9.Range("CN_ChifZoneLastRow").Row, Feuil9.Range("CN_ChifChiffrierCTZone").Column))

     

        ComptesDonnees.Caption = "Liste des comptes"

        ComptesDonnees.ListeComptesDonnees.RowSource = "Var_ListAcc"

        ComptesDonnees.ListeComptesDonnees.ColumnCount = 8

        ComptesDonnees.ListeComptesDonnees.TextColumn = 1

       

        With ComptesDonnees.ListeComptesDonnees

            ReDim tcol(.ColumnCount - 1)

            For c = 1 To .ColumnCount ' Calcul largeur des colonnes et le place dans un string par concaténation

                   tcol(c - 1) = CStr(Feuil9.Range("Var_ListAcc").Cells(1, c).Width) * 1: tw = tw + tcol(c - 1)

            Next

            DoEvents

        

            .Width = tw + UBound(tcol) + 2 ' Rectifie la largeur du ListBox ou ComboBox

            .ColumnWidths = Join(tcol, ";")

        End With

     

    End If

    samedi 6 janvier 2018 15:29

Réponses

  • Bonjour,

    J'ai pu résoudre la situation. J'ai cru bon partager la solution en espérant que ça pourra aider quelqu'un à un moment donné. Mais j'aurais tout de même une question.

    C'est une question de séparateur de décimale. Par exemple si la largeur d'une colonne dans la plage en question n'est pas un nombre entier ... par exemple ... 12.8 comme largeur ... et que ... alors le code va porter la concatenation dans le ListBox ... on obtiens ce message. J'ai alors pu résoudre la situation en établissant un nombre entier comme largeur des colonnes avec le code Application.WorksheetFunction.RoudUp...

    Je crois que ... si ... le séparateur de décimal de Windows ... est en virgule ... et qu'alors par exemple la largeur de la colonne était plutôt 12, 8 je n'aurais alors possiblement pas (à tester) eu cette situation. Mais des usagers utilisent les 2 possibilités pour le décimal. Je dois donc ajuster le code.

    J'ai cherché mais en vain ... à pouvoir modifier le séparateur de décimal soit dans VBA ou dans le ListBox. Il semble que dans le ListBox ... le séparateur de décimal exemple pour la propriété ColumnWidths ne puisse être qu'une virgule. Si vous savez comment modifier ceci ... merci à l'avance de le partager.

    Donc ma conclusion pour le moment est de s'assurer que le "String" renvoyé dans la propriété ColumnWidths du ListBox ... n'inclus pas ... de point comme décimale.

    • Marqué comme réponse RMillerLCXL dimanche 7 janvier 2018 17:41
    dimanche 7 janvier 2018 17:41