Comment remplir un combobox sans utilisation d'une colonne

Résolu
amiro2017 Messages postés 207 Statut Membre -  
amiro2017 Messages postés 207 Statut Membre -
Bonjour ,

je cherche à remplir mon combobox par une série numérique {1,2...11}
sans utilisation d'une colonne d'Excel.

d'autre part je m'adresse à vous pour m'indiquer comment compter le nombre de items de combobox c'est à dire si je séléctionne 3 items chaque fois il me donne n=3

je vous remercie beaucoup pour votre aide!!!

10 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Avant de poser une question sur le forum essaie d'utiliser Google:

    https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F
    1
    1. amiro2017 Messages postés 207 Statut Membre 1
       
      merciiiii
      0
      1. amiro2017 Messages postés 207 Statut Membre 1 > amiro2017 Messages postés 207 Statut Membre
         
        cependant j'ai pas pu trouver comment on compte le nombre de séléctions dans le combobox
        0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    voici un exemple avec une ListBox,a adapter a une ComboBox:

    Dim I As Long, j As Long
    j = 0
    With ListBox1
    For I = 0 To .ListCount - 1
    If .Selected(I) Then
    j = j + 1
    End If
    Next
    MsgBox j
    End With

    1
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    cependant j'ai pas pu trouver comment on compte le nombre de séléctions dans le combobox

    Je serais curieux de voir de quelle façon tu sélectionnes plusieurs items dans une ComboBox!

    Si tu veux sélectionner plusieurs items, il faut utiliser une ListBox dont tu mets la propriété Multiselect à fmMultiSelectMulti comme ceci:

    ListBox1.MultiSelect = fmMultiSelectMulti


    Consulte sans modération le site cité ici sur les ListBox

    https://forums.commentcamarche.net/forum/affich-34447046-comment-remplir-un-combobox-sans-utilisation-d-une-colonne#1

    @+ Le Pivert
    1
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    C'est en effet plus clair, comme ceci:

    Option Explicit
    Dim j As Integer
    Private Sub ComboBox1_Change()
    TextBox1.Value = j
    j = j + 1
    End Sub
    Private Sub UserForm_Initialize()
        Dim i As Byte
        For i = 1 To 15
            ComboBox1.AddItem "Ligne" & i
        Next i
        ComboBox1.ListIndex = 0
       j = 1
     End Sub
    
    

    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Il faut quand même réfléchir!!!!!!!!!!!!

    Ce code empêche la saisie dans tous les TextBox:

    'boucle sur les Textbox
    Dim Ctrl As Control
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.TextBox Then
         Ctrl.Object.Enabled = False
    End If
    Next Ctrl


    Il faut donc mettre après ce code:

    TextBox11.Enabled= True
    TextBox11.Value = j
    j = j + 1


    si l'on veut que la saisie se fasse!!!!!!!

    Au lieu de mettre des captures d'écran mettre le code dans les balises.
    1
    1. amiro2017 Messages postés 207 Statut Membre 1
       
      malhereusement ca ne marche pas c'est pourquoi je décidé de faire une autre méthode qui consiste de faire un contrôle chaque fois sur la séléction d'un item d'un combobox alors on ajoute un aux textbox mais encore il ne marche pas

      corrige moi svp

      j = 0
      TextBox11.Enabled = True
      
      If SelectedItem.ComboBox1 = True Then
      TextBox11.Value = j + 1
      End If
      0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Où as-tu trouvé cela:

    If SelectedItem.ComboBox1 = True 


    Cela n'existe pas.

    Je te donne toutes les infos et tu ne les mets pas en pratique.
    Je fais une dernière tentative, mets moi la totalité du code de l'évenement

    Private Sub ComboBox1_Change()


    Je vois ce que je peux faire!
    1
    1. amiro2017 Messages postés 207 Statut Membre 1
       
      n'oublier pas que mon combobox est dont ses items sont d'origine d'une colonne définie dans excel :

      voici le code :

      Private Sub ComboBox1_Change()
      Dim j As Integer
      
      
      Dim Ctrl As Control
      For Each Ctrl In Me.Controls
          If TypeOf Ctrl Is MSForms.TextBox Then
           Ctrl.Object.Enabled = False
      End If
      Next Ctrl
      
      TextBox11.Enabled = True 'c'est le text box qui doit compter chaque fois le nombre des items chaque fois
      TextBox11.Value = j
      j = j + 1
      TextBox8.Enabled = True
      TextBox8.Value = Date
       Select Case ComboBox1.Value
      Case "Swaps de taux d'intérêt : Payer"
      
      TextBox7.Enabled = False
      TextBox6.Enabled = True
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      
      Case "Swaps de taux d'intérêt : Recevoir"
      
      TextBox7.Enabled = False
      TextBox6.Enabled = True
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      
      Case "Contrats de taux à terme : Acheter (court)"
      
      TextBox6.Enabled = False
      TextBox7.Enabled = True
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      
      Case "Contrats de taux à terme : Vendre (long)"
      
      TextBox6.Enabled = False
      TextBox7.Enabled = True
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      
      Case "Obligations et billets du gouvernement"
      
      TextBox6.Enabled = False
      TextBox7.Enabled = False
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = False
      
      
      Case "Swaps de devises : Recevoir (variable)"
      
      TextBox6.Enabled = False
      TextBox4.Enabled = False
      TextBox7.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = False
      
      Case "Swaps de devises : Payer (variable)"
      
      TextBox6.Enabled = False
      TextBox4.Enabled = False
      TextBox7.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = False
      
      
      Case "Acceptations bancaires à terme : Acheter"
      
      TextBox6.Enabled = False
      TextBox4.Enabled = False
      TextBox7.Enabled = False
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      
      Case "Acceptations bancaires à terme : Vendre"
      
      TextBox6.Enabled = False
      TextBox4.Enabled = False
      TextBox7.Enabled = False
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      Case "Swaps de devises : Recevoir (fixe)"
      
      TextBox6.Enabled = False
      TextBox7.Enabled = False
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = False
      
      Case "Swaps de devises : Payer (fixe)"
      
      TextBox6.Enabled = False
      TextBox7.Enabled = False
      TextBox4.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = False
      
      Case "Contrats à terme sur devise"
      
      TextBox6.Enabled = False
      TextBox4.Enabled = False
      TextBox7.Enabled = True
      TextBox5.Enabled = True
      TextBox9.Enabled = True
      TextBox10.Enabled = True
      
      End Select
      
      
      End Sub
      


      et je vois pas l'utilité de ce code :

      </code basic>
      Private Sub UserForm_Initialize()
      Dim i As Byte
      For i = 1 To 15
      ComboBox1.AddItem "Ligne" & i
      Next i
      ComboBox1.ListIndex = 0
      j = 1
      End Sub</code>

      je vous remercie énormement pour votre aide et effort!!!
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > amiro2017 Messages postés 207 Statut Membre
         
        et je vois pas l'utilité de ce code :

        j = 1 

        C'est grave tu ne comprends rien!

        Ce code sert a initialiser la variable j à l'ouverture de l'UserForm

        Par contre cela ne sert pas dans ton cas, c'est pour mon exemple
        Dim i As Byte 
        For i = 1 To 15 
        ComboBox1.AddItem "Ligne" & i 
        Next i 
         


        ensuite cette variable j doit être déclarée en dehors des sub et non pas comme tu l'as fait dans

        Private Sub ComboBox1_Change()
        Dim j As Integer


        Si tu n'appliques pas ce que je dit, j'abandonne.

        Ensuite pourquoi mettre dans les Select case des TextBox.Enabled = False cela ne sert a rien car il sont tous à false au changement de sélection de la comboBox
        Je t'ai expliqué ici:

        https://forums.commentcamarche.net/forum/affich-34447046-comment-remplir-un-combobox-sans-utilisation-d-une-colonne#12

        il suffit donc de mettre seulement les TextBox.Enabled = True

        Corrige tout ça et on verra la suite
        0
      2. amiro2017 Messages postés 207 Statut Membre 1 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        je vous explique concernant le TextBox.Enabled = False pour chaque case car j'ai besoin de ca et ca marche avec mes besoins car lorsqu'on parle des obligations on parle donc seulement de l'échéance donc les autres données ne doivent pas entrée <gras>sela empêche l'utilisateur d'entrer des informations erronées!<gras>

        d'autre part , jai déja fait j endehors de procédure mais ca ne marche pas !

        par contre j'ai une idée pour dépasser ce problème : je vous explique : en effet j'ai un bouton ajouter (qui sert à enregistrer les données pour chaque cas d'étude) ainsi je vous prie de m'indiquer est-il possible pour chaque appye sur ajouter le textbox de comptage avance d'un pas? car j'ai déjà décidé
        je pense cette idée plus efficace

        voici le code d'ajouter:


        Private Sub CommandButton5_Click()
        Dim dernier As Integer
        Dim j As Integer
        j = 0
        
        Sheets("Approche_standards").Activate
        dernier = Application.WorksheetFunction.CountA(Range("B:B")) + 1
        
        Select Case ComboBox1.Value
        
        Case "Swaps de taux d'intérêt : Payer"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 5).Value = -Val(TextBox4)
        End If
        
        
        Case "Swaps de taux d'intérêt : Recevoir"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 6).Value = -Val(TextBox4)
        End If
        
        
        Case "Contrats de taux à terme : Acheter (court)"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 6).Value = -Val(TextBox7)
        End If
        
        
        Case "Contrats de taux à terme : Vendre (long)"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 5).Value = -Val(TextBox7)
        End If
        
        
        Case "Obligations et billets du gouvernement"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 5).Value = Val(TextBox4)
        End If
        
        
        Case "Swaps de devises : Recevoir (variable)"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 4).Value = Val(TextBox4)
        End If
        
        Case "Swaps de devises : Payer (variable)"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 4).Value = -Val(TextBox4)
        End If
        
        Case "Swaps de devises : Recevoir (fixe)"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 5).Value = Val(TextBox4)
        End If
        
        Case "Swaps de devises : Payer (fixe)"
        If (TextBox4.Value <> "") Then
        Cells(dernier, 5).Value = -Val(TextBox4)
        End If
        
        Case "Contrats à terme sur devise: Acheter"
        If (TextBox5.Value <> "") Then
        Cells(dernier, 4).Value = Val(TextBox4)
        End If
        
        Case "Contrats à terme sur devise: Vendre"
        If (TextBox5.Value <> "") Then
        Cells(dernier, 4).Value = -Val(TextBox4)
        End If
        
        End Select
        textbox11.value=j+1
        Cells(dernier, 2).Value = TextBox8.Value
        Cells(dernier, 3).Value = ComboBox1.Value
        Cells(dernier, 4).Value = Val(TextBox7)
        Cells(dernier, 6).Value = Val(TextBox6)
        Cells(dernier, 7).Value = Val(TextBox5)
        Cells(dernier, 11).Value = Val(TextBox9)
        Cells(dernier, 12).Value = Val(TextBox10)
        
        End Sub
        0
      3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > amiro2017 Messages postés 207 Statut Membre
         
        Je crois que tu ne comprends toujours rien

        En mettant :

        Private Sub CommandButton5_Click()
        Dim dernier As Integer
        Dim j As Integer
        j = 0


        Tu sera toujours à 0.

        Si tu ne comprends pas ce que j'explique:

        Il faut que l'initialisation de j se face à l'ouverture de l'UserForm

        Je ne peux plus rien pour toi

        désolé
        0
      4. amiro2017 Messages postés 207 Statut Membre 1 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        je m'execuse je suis débutant et je ne maîtrise pas parfaitement le vba .
        je vous remercie en tout cas cs_Le Pivert
        c'est pas grave , je veux décider et vraiment je vous remercie beaucoup !!!
        0
  8. amiro2017 Messages postés 207 Statut Membre 1
     
    malhereusement une erreur s'affiche
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Si tu n'arrives pas a mettre :

      With ComboBox1


      a la place de

      With ListBox1


      parce que c'était la seule chose à changer dans le copier coller. Il y a un soucis pour la suite!

      Il faudrait prendre quelques cours de vba pour connaitre les fondamentaux.

      Quand on met
      With Combobox1
      , cela évite de le remettre partout on démarre ensuite avec un point:

      .Selected


      au lieu de:

      ComboBox1.Selected


      Voilà
      0
  9. amiro2017 Messages postés 207 Statut Membre 1
     
    je m'execuse cs_Le Pivert car j'ai déjà fait et je suis débutant en vba et chaque fois avant de poser des questions je cherche mais parfois des astuces comme cela , je n'arrive pas à les arracher:
    j'ai déjà fait with combobox1 à la place de listbox et j'ai déjà fait .selected

    je vous remercie toujours et pardonne moi :

    voir ce qui m'affiché même je fais .selected
    0
  10. amiro2017 Messages postés 207 Statut Membre 1
     
    Bonjour,

    ma problème n'est pas dans la séléction des plusieurs items d'un combobox en effet j'ai besoin d'un text box qui affiche le nombre des items séléctionnées d'un combobox pour un cas d'étude :
    voici une capture d'écran


    c'est à dire si je séléctionne un élément donc textbox affiche 1
    puis si je séléctionne le deuxième il affiche 2 et ainsi de suite
    0
  11. amiro2017 Messages postés 207 Statut Membre 1
     
    merci mais malhereusement un erreur s'affiche indiquant accés impossible

    voici le code comme vous me proposez

    0