Comment remplir un combobox sans utilisation d'une colonne [Résolu/Fermé]

Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
- - Dernière réponse : amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
- 16 mars 2017 à 22:32
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!!!
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382
1
Merci
Bonjour,

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

http://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59017 internautes nous ont dit merci ce mois-ci

amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1 -
merciiiii
amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1 > amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
-
cependant j'ai pas pu trouver comment on compte le nombre de séléctions dans le combobox
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59017 internautes nous ont dit merci ce mois-ci

Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382
1
Merci
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

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


@+ Le Pivert

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59017 internautes nous ont dit merci ce mois-ci

Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382
1
Merci
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


Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59017 internautes nous ont dit merci ce mois-ci

Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59017 internautes nous ont dit merci ce mois-ci

amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
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
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382
1
Merci
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!

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59017 internautes nous ont dit merci ce mois-ci

amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
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!!!
cs_Le Pivert
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382 > amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
-
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:

http://www.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
amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1 > cs_Le Pivert
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
-
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
cs_Le Pivert
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382 > amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
-
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é
amiro2017
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1 > cs_Le Pivert
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
-
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 !!!
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1
0
Merci
malhereusement une erreur s'affiche
cs_Le Pivert
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
382 -
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à
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1
0
Merci
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
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1
0
Merci
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
Messages postés
199
Date d'inscription
mardi 28 février 2017
Statut
Membre
Dernière intervention
31 août 2017
1
0
Merci
merci mais malhereusement un erreur s'affiche indiquant accés impossible

voici le code comme vous me proposez