Partager via

VBA Excel : visuel dans une Combobox

Anonyme
2019-07-10T09:52:12+00:00

Bonjour,

J'utilise un UserForm avec une Combobox. Pour l'alimenter, j'ai une plage nommée. Dans la liste déroulante, les formats de nombre n'apparaisse pas comme dans la colonne de ma plage nommée voir capture d'écran. Or, j'aimerais que  la colonne 3, avec les quantités, apparaisse avec 2 chiffres après la virgule.

Voici le code que me permet d'alimenter ma combobox.

Private Sub UserForm_Initialize()

Module6.Redimensionner

  choix1 = [liste].Value

  Me.ComboBox1.List = choix1

  Label6.Visible = False

  If Val(Application.Version) > 10 Then SendKeys "{F4}"

End Sub

Private Sub ComboBox1_Change()

   If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, Application.Index(choix1, , 1), 0)) Then

     Dim b()

     Me.TextBox1 = ""

     tmp = "*" & UCase(Me.ComboBox1) & "*"

     n = 0

     For i = LBound(choix1) To UBound(choix1)

       If UCase(choix1(i, 1)) Like tmp Or UCase(choix1(i, 2)) Like tmp Or UCase(choix1(i, 3)) Like tmp Or UCase(choix1(i, 4)) Like tmp Or UCase(choix1(i, 5)) Like tmp Then

         n = n + 1: ReDim Preserve b(1 To 5, 1 To n)

         b(1, n) = choix1(i, 1): b(2, n) = choix1(i, 2): b(3, n) = choix1(i, 3): b(4, n) = choix1(i, 4): b(5, n) = choix1(i, 5)

       End If

      Next i

      If n > 0 Then Me.ComboBox1.Column = b: Me.ComboBox1.DropDown

    Else

      On Error Resume Next

      Me.TextBox1 = Me.ComboBox1.Column(1)

      Me.TextBox2 = Me.ComboBox1.Column(2)

      Me.TextBox4 = Me.ComboBox1.Column(3)

      Me.TextBox7 = Me.ComboBox1.Column(4)

    End If

End Sub

Je remercie toute personne qui m'apportera son aide. Evidemment ceci est une version de développement avec des soldes de stock négatif ;)....

Sandra

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

12 réponses

  1. DanielCo 107.7K Points de réputation
    2019-07-11T07:48:27+00:00

    Merci. Je n'arrive pas à saisir quelque chose dans le combobox. Peux-tu me donner un exemple de ce qu'il faut saisir ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2019-07-10T19:50:53+00:00

    Bonjour Daniel,

    Merci de bien vouloir te pencher sur mon problème. Il est vrai qu'il est plus esthétique que "fonctionnel"...

    Voici le lien avec le fichier simplifié en question : LIEN

    C'est le double click sur les cellules F17:F30 qui active le UserForm.

    Avec mes remerciements et mes cordiales salutations.

    Sandra

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2019-07-10T16:10:38+00:00

    Ca devient un peu compliqué à tester. Est-ce que tu peux mettre ton classeur, sans données confidentielles, sur OneDrive, DropBox, CJoint.com, mon-partage.fr ou sur un autre site de partage et poster le lien correspondant ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2019-07-10T11:59:34+00:00

    Bonjour Daniel,

    Merci de ta réponse.

    Avec ton code, le visuel est parfait à l'initialisation de la combobox, mais lorsque l'on commence à saisir dans la combobox alors le format des chiffres est modifié.

    Aurais-tu encore une piste ?

    Avec mes remerciements et mes cordiales salutations.

    Sandra

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2019-07-10T10:20:15+00:00

    Bonjour,

    Tu ne peux pas copier ta plage nommée (liste). Il faut remplir le combobox de la façon suivante :

        Me.ComboBox1.Clear

        For Each C In [liste].Resize(, 1)

          Me.ComboBox1.AddItem C.Value

          Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = C.Offset(, 1).Value

          Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 2) = Format(C.Offset(, 2).Value, "0.00")

        Next C

    Ajoute également les autres éléments.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire