Controls en vb
Fermé
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
17 déc. 2008 à 09:54
colas31 Messages postés 135 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 21 décembre 2010 - 20 déc. 2008 à 21:39
colas31 Messages postés 135 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 21 décembre 2010 - 20 déc. 2008 à 21:39
A voir également:
- Controls en vb
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Ghost controls - Télécharger - Bureautique
- Vb runtime - Télécharger - Divers Utilitaires
11 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 déc. 2008 à 13:53
17 déc. 2008 à 13:53
Bonjour,
En VBA il n'est pas possible de définir des index.
Une solution ici si tu ne t'en sort pas revient je tâcherai de t'aider.
A+
En VBA il n'est pas possible de définir des index.
Une solution ici si tu ne t'en sort pas revient je tâcherai de t'aider.
A+
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
21
17 déc. 2008 à 14:08
17 déc. 2008 à 14:08
Merci mais je vais t'avouer que je n'ai pas vraiment compris le système.
Donc si tu dis que la fonctions Controls ne fonctionne pas...
Voila ce que je souhaite faire peut être que avec le code ca ira mieux.
nom = Controls("ListBox" & i).Name
For compt = 0 To (nom.ListCount - 1)
If nom.Selected(compt) = True Then
.....
End If
Next
J'ai essayer aussi en remplacant dans la boucle "nom" par " Feuil12.OLEObjects(i + 1).Name " Mais cela ne marche pas ...
As tu une idée ?
Donc si tu dis que la fonctions Controls ne fonctionne pas...
Voila ce que je souhaite faire peut être que avec le code ca ira mieux.
nom = Controls("ListBox" & i).Name
For compt = 0 To (nom.ListCount - 1)
If nom.Selected(compt) = True Then
.....
End If
Next
J'ai essayer aussi en remplacant dans la boucle "nom" par " Feuil12.OLEObjects(i + 1).Name " Mais cela ne marche pas ...
As tu une idée ?
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 déc. 2008 à 14:15
17 déc. 2008 à 14:15
Bien sûr que j'ai une idée puisque c'est moi qui te donne l'adresse d'une astuce que j'ai fait.
Tu renomme tes listBox comme indiqué.. Ex List01.. List02..List03 etc..
Tu remplace TextBox par ListBox (dans l'astuce)
Relit là avec attention, tu va certainement trouver.
Ah question, tes Listbox sont sur une feuille ou un UF, parce que c'est pas la même chose pour y arriver.
A+
Tu renomme tes listBox comme indiqué.. Ex List01.. List02..List03 etc..
Tu remplace TextBox par ListBox (dans l'astuce)
Relit là avec attention, tu va certainement trouver.
Ah question, tes Listbox sont sur une feuille ou un UF, parce que c'est pas la même chose pour y arriver.
A+
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
21
17 déc. 2008 à 14:20
17 déc. 2008 à 14:20
Elles sont sur une feuille c'est pour ca peut être que je n'ai pas bien compris ton astuce :/
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 déc. 2008 à 16:57
17 déc. 2008 à 16:57
Le principe est exactement le même, c'est juste le nom des objets qui change...
Sub ObjListbox()
Dim obj As OLEObject
Dim i as Integer
For Each obj In ActiveSheet.OLEObjects
If TypeOf obj.Object Is MSForms.ListBox Then
i = Val(Right(obj.Name, 2))
'Ici tu a le N° du Listbox dans i
'Faire action sur obj.
Stop
End If
Next obj
End Sub
Tu dit, j'ai pas tester avec des listes, ça fonctionne avec textBox et checkBox..
Sub ObjListbox()
Dim obj As OLEObject
Dim i as Integer
For Each obj In ActiveSheet.OLEObjects
If TypeOf obj.Object Is MSForms.ListBox Then
i = Val(Right(obj.Name, 2))
'Ici tu a le N° du Listbox dans i
'Faire action sur obj.
Stop
End If
Next obj
End Sub
Tu dit, j'ai pas tester avec des listes, ça fonctionne avec textBox et checkBox..
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
21
17 déc. 2008 à 17:10
17 déc. 2008 à 17:10
Merci,
mais le nom et le numéro de la listbx j'ai pu desj les recuperer au préalable grace a ca :
Feuil12.OLEObjects(i + 1).Name
et a partir de la je fait comme tu le dit pour recuperer le numéro mais à partir de ce point je suit bloqué car je ne peux point reutiliser ces 2 variables ainsi obtenues.
Car je veux verifier si la ligne une de la listebox est coché .
Donc en reutilisant tes variables cela ne marche pas ==> obj.Name.Selected(i) ceci du a la non exitence d'index comme tu disais ?
For compt = 0 To (ListBox1.ListCount - 1)
If ListBox1.Selected(compt) = True Then
Feuil2.Rows(J + 1).Insert Shift:=x1Up
End If
Next
Mais comme tu peux le voir dessus ce code marche. Or je doit l'executer sur 5 Listbox
Enfin je ne sais pas si je suis bien clair .....
mais le nom et le numéro de la listbx j'ai pu desj les recuperer au préalable grace a ca :
Feuil12.OLEObjects(i + 1).Name
et a partir de la je fait comme tu le dit pour recuperer le numéro mais à partir de ce point je suit bloqué car je ne peux point reutiliser ces 2 variables ainsi obtenues.
Car je veux verifier si la ligne une de la listebox est coché .
Donc en reutilisant tes variables cela ne marche pas ==> obj.Name.Selected(i) ceci du a la non exitence d'index comme tu disais ?
For compt = 0 To (ListBox1.ListCount - 1)
If ListBox1.Selected(compt) = True Then
Feuil2.Rows(J + 1).Insert Shift:=x1Up
End If
Next
Mais comme tu peux le voir dessus ce code marche. Or je doit l'executer sur 5 Listbox
Enfin je ne sais pas si je suis bien clair .....
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 déc. 2008 à 17:24
17 déc. 2008 à 17:24
tu doit employer l'objet exactement comme si c'était la Listbox, Cad, Obj.selected(-...
aller..encore un exemple :)
Mais tu à combien de ListBox sur ta feuille ?
Est-ce que ça vaux la peine de travailler par index ?
aller..encore un exemple :)
Sub ObjCheckbox() Dim obj As OLEObject Dim i As Integer, compt As Integer For Each obj In ActiveSheet.OLEObjects If TypeOf obj.Object Is MSForms.ListBox Then i = Val(Right(obj.Name, 2)) 'Ici tu a le N° du text box. 'Faire action Select Case i Case XX ' le N° de la listBox que tu veux traiter For compt = 0 To obj.ListCount - 1 If obj.Selected(compt) = True Then Feuil2.Rows(J + 1).Insert Shift:=x1Up End If Next Case YY 'Autre liste etc. End Select Stop End If Next obj End Sub
Mais tu à combien de ListBox sur ta feuille ?
Est-ce que ça vaux la peine de travailler par index ?
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
21
18 déc. 2008 à 15:50
18 déc. 2008 à 15:50
Merci mais je me demande si le probleme ne vient pas de exel ....
Car j'ai une erreur générer à obj.ListCount et obj.Selected(compt)
erreur 438
Propriété ou méthode non gérer par cette objet.
je comprend pas pourquoi ca m'intrigue.
Sinon j'ai contourner ce probleme grace à ton idée des "Case" J'avais oublier cette méthode merci a toi.
J'obtiens un code lours mais bon.
Si jamais tu vois d'ou vient l'erreur que j'obtient je suis preneur.
merci
Car j'ai une erreur générer à obj.ListCount et obj.Selected(compt)
erreur 438
Propriété ou méthode non gérer par cette objet.
je comprend pas pourquoi ca m'intrigue.
Sinon j'ai contourner ce probleme grace à ton idée des "Case" J'avais oublier cette méthode merci a toi.
J'obtiens un code lours mais bon.
Si jamais tu vois d'ou vient l'erreur que j'obtient je suis preneur.
merci
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 déc. 2008 à 16:22
18 déc. 2008 à 16:22
comme je l'ai dit j'ai pas tester mais essaye avec...
obj.Object.ListCount et obj.Object.Selected(compt)
fort probable que ça va aller.
obj.Object.ListCount et obj.Object.Selected(compt)
fort probable que ça va aller.
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
21
18 déc. 2008 à 16:44
18 déc. 2008 à 16:44
Merci plus d'erreur sauf que je revoit le code car ca ne m'affiche pas ce que je souhaite.
Mais tu as relger mon probleme principal Merci bien.
et une derniere question mais la plus en rapport avec les Objet.
Est ce que dans l'appel d'une fonction je peux passer toute les caracterisqitque d'une listbox
explication du genre
Call traitement (Listbox1)
.....
Sub traitement (Dim obj As OLEObject)
dans cette parti je peux recuperer le nom de la liste box via obj.Objet.Name ???
Merci encore
Mais tu as relger mon probleme principal Merci bien.
et une derniere question mais la plus en rapport avec les Objet.
Est ce que dans l'appel d'une fonction je peux passer toute les caracterisqitque d'une listbox
explication du genre
Call traitement (Listbox1)
.....
Sub traitement (Dim obj As OLEObject)
dans cette parti je peux recuperer le nom de la liste box via obj.Objet.Name ???
Merci encore
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 déc. 2008 à 22:13
18 déc. 2008 à 22:13
Pas comme ça...
Sub traitement (List as ListBox)
....
....
End Sub
et pour l'appel, si c'est dans la boucle
Call Traitement Obj
A+
Sub traitement (List as ListBox)
....
....
End Sub
et pour l'appel, si c'est dans la boucle
Call Traitement Obj
A+
colas31
Messages postés
135
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
21
20 déc. 2008 à 21:39
20 déc. 2008 à 21:39
Désolé pour ma réponse tardive et merci encore pour ton aide, et ta patience ^^
@plus
@plus