Comment remplir un combobox sans utilisation d'une colonne

Résolu/Fermé
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 - 15 mars 2017 à 15:04
amiro2017 Messages postés 194 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!!!
A voir également:

10 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 mars 2017 à 15:13
Bonjour,

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

https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F
1
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
15 mars 2017 à 15:26
merciiiii
0
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1 > amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017
15 mars 2017 à 16:27
cependant j'ai pas pu trouver comment on compte le nombre de séléctions dans le combobox
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 mars 2017 à 17:30
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié par cs_Le Pivert le 16/03/2017 à 07:58
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 mars 2017 à 10:55
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

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

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 mars 2017 à 14:44
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
Modifié par amiro2017 le 16/03/2017 à 15:20
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 mars 2017 à 18:07
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
Modifié par amiro2017 le 16/03/2017 à 19:37
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017
16 mars 2017 à 20:48
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
16 mars 2017 à 22:08
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017
16 mars 2017 à 22:17
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
16 mars 2017 à 22:32
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
15 mars 2017 à 20:28
malhereusement une erreur s'affiche
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 mars 2017 à 20:38
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
15 mars 2017 à 20:51
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
Modifié par amiro2017 le 16/03/2017 à 08:33
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
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
16 mars 2017 à 14:15
merci mais malhereusement un erreur s'affiche indiquant accés impossible

voici le code comme vous me proposez

0