Modifier petit code pour afficher nombre de "controls"

Fermé
dudulleray - 22 nov. 2013 à 09:44
vieuxray Messages postés 16 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 18 décembre 2013 - 23 nov. 2013 à 16:53
Bonjour a toutes et tous, forum bonjour



Excel 2007 VBA windows 7 32 bits


je souhaiterai svp compter le nombre de controls (Tous) de mon Userform1

et l'afficher dans l'ordre dans la colonne (S) a partir de S1

j'ai bidouiller ce petit code mais ca marche pas bien pour l'ordre d'affichage.

Merci a vous pour votre temps et bonne journée

Cdlt Ray


'Compte le nombre de contrôles dans l'userform(1)

Dim Ctrl As Control, Cpt As Long
Cpt = 1
For Each Ctrl In Me.Controls

Cells(Cpt, 19).Value = Ctrl.Name
Range("S1").Value = Ctrl.Name

Cpt = Cpt + 1
Next Ctrl
A voir également:

11 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
22 nov. 2013 à 10:03
Bonjour Raymond,

Ceci est faux :
Cells(Cpt, 19).Value = Ctrl.Name
Range("S1").Value = Ctrl.Name

car S1 est écrasé à chaque passage de boucle.
Il ne faut conserver que la première ligne.
Ensuite, tu parles d'ordre... Quel ordre ? alphabétique ? TabIndex ? position dans le UserForm ?

A+
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 nov. 2013 à 13:43
Bizarre,
tu a quel navigateur ?
Avec Google Chrome pas de problème.
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 nov. 2013 à 18:19
Je pensais que tu serais assez "fort" pour transcrire sur une feuille. :=)
Private Sub CommandButton9_Click()
Dim Ctl As Control
Dim Lab() As String, Command() As String, Txt() As String, Autre() As String
Dim Lb As Integer, Cd As Integer, Tx As Integer, Aut As Integer
ReDim Lab(0): ReDim Command(0): ReDim Txt(0): ReDim Autre(0)
Dim i As Integer

For Each Ctl In Me.Controls
Select Case TypeName(Ctl)
Case "Label": ReDim Preserve Lab(Lb): Lab(Lb) = Ctl.Name: Lb = Lb + 1
Case "CommadButton": ReDim Preserve Command(Cd): Command(Cd) = Ctl.Name: Cd = Cd + 1
Case "TextBox": ReDim Preserve Txt(Tx): Txt(Tx) = Ctl.Name: Tx = Tx + 1
Case Else: ReDim Preserve Autre(Aut): Autre(Aut) = Ctl.Name: Aut = Aut + 1
End Select
Next Ctl
'Exemple d'affichage par catégorie de contrôles.
Dim Lig As Long
Lig = 2
With ActiveSheet
.Columns("S:S").ClearContents
.Cells(Lig, "S") = "Il y a " & Lb & " Label"
Lig = Lig + 1
For i = 0 To Lb - 1
.Cells(Lig, "S") = Lab(i)
Lig = Lig + 1
Next i
Lig = Lig + 1
.Cells(Lig, "S") = "Il y a " & Tx & " TextBox"
Lig = Lig + 1
For i = 0 To Tx - 1
.Cells(Lig, "S") = Txt(i)
Lig = Lig + 1
Next i
'... la suite
Lig = Lig + 1
.Cells(Lig, "S") = "Il y a " & Me.Controls.Count & " controls dans l'userform"
End With
End Sub
A+
1
Salut lermite222

merci pour la reponse et le code modifier c'est sympa

rassure toi bien que j'ai essayer de modifier et que je voulais arriver seul

Mais hélas pour moi je n'y suis pas parvenu

Heureusement qu'il y a internet et surtout des gens comme toi qui partage

leur savoir

je partage souvent mes bras ( bricoles en tout genre ) et je peux te dire que je n'ai pas

souvent de merci.

Bon en tout cas le code proposer fonctionne bien

je te souhaite un excellent W-end accompagner de tous mes remerciements.

Cordialement Raymond

PS: tu a vu qu'il y a bien un soucis de copier coller sur le site
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 nov. 2013 à 14:56
D'après ce que j'ai lu plus bas ce n'est que pour les non-membre.
Inscrit-toi, ça coute rien.
A+
0
Salut lermite222

Merci ok je vais m'inscrire

Pendant que je te tiens iihihihih

j'ai excel 2007 version etudiant depuis un moment, on m'offre l'achat d'une version plus récente

Excel 2010 ou 2013 officielle bien sur

tu pourrai svp m'aiguiller et conseiller pour acheter un Excel

j'ai fouiller un peu mais je suis un peu indécis

Merci a toi bon W-end

Cdlt Raymond
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 nov. 2013 à 15:57
Tant qu'il n'y a pas de changement fondamental entre les versions comme par exemple entre le 2003 et le 2007, ça ne vaux pas beaucoup la peine de changer.
De plus, certaine fonctions sont déjà différentes entre le 2007 et le 2010 ce qui nécessite du remaniement de code.
0
vieuxray Messages postés 16 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 18 décembre 2013
23 nov. 2013 à 16:12
Ok merci pour ta réponse, c'est gentil,

je voulais refaire mon programme de compta sur une autre version

mon programme est sensible a excel

Excel a cesser de fonctionner
Excel doit redemarer

Mon excel est installer correctement sur un bon pc, suis peut etre pas bon pour le VBA
mais le matos je connais.

peut etre mon fichier corrompu ou je ne sais plus quoi d'ailleurs
un coup le poids grossi ensuite ca rebaisse

c'est a plus rien y comprendre

j'ai fait plusieurs le tour du code et fait fonctionner le programme tourne nikel
si je modifie des fois c'est bon, des fois non, (réponse de Normand)

Bon sinon suis inscrit voila

merci a toi bon w-end

Raymond
0
Salut Zoul67,

Merci bien pour ta réponse

ça démarre mal, LOL, mais, je ne sais pas faire autrement.


Ceci est faux :

Cells(Cpt, 19).Value = Ctrl.Name
Range("S1").Value = Ctrl.Name


Bon je souhaiterai svp juste savoir le nombre de controls tout confondu que j'ai dans mon USF

Quand je dis dans l'ordre c'est tout simplement compter tous le Labels puis les

Textboxs les Frames etc etc

J'avais vu un petit code sur le net qui faisait ce que tu dit (Quel ordre ? alphabétique ? TabIndex ? position dans le UserForm ? )

mais bien sur, je ne retrouve plus.

Merci beaucoup pour ton aide

Cdlt Ray
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
22 nov. 2013 à 10:55
Re,

Quand je disais première ligne, je pensais à celle-ci :
Cells(Cpt, 19).Value = Ctrl.Name
qui est bonne.
Soit tu les listes, soit tu les comptes en te basant sur ceci (ici : décompte des Listbox-es) :
Dim ctrl As msforms.Control, cnt As Long
cnt = 0
For Each ctrl In UserForm1.Controls
If TypeOf ctrl Is msforms.ListBox Then
cnt = cnt + 1
End If
Next
MsgBox cnt


A+
0

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

Posez votre question
Re Zoul67

Merci pour le petit code, j'ai essayer ca fonctionne bien.

Mais comment svp je peux faire pour lister tous les controls en une seule fois

et afficher le tout dans la colonne S

Merci beaucoup

a plus tard

Cdlt Ray
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
22 nov. 2013 à 11:30
Re,

Le code de ta question amputé de "Range("S1").Value = Ctrl.Name" ne fonctionne pas ?
0
Re,

Si cela fonctionne mais l'affichage n'ai pas comme je souhaitai

Exemple qui serai afficher dans la colonne (S)

label1
label2
label3
textbox1
textbox2
textbox3
frame1
frame2
combobox1
combobox2

etc etc etc

Merci a toi

Ray
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par pijaku le 22/11/2013 à 14:12
Bonjour,
Un exemple pour afficher tout les contrôles par catégorie
Private Sub CommandButton4_Click()
Dim Ctl As Control
Dim Lab() As String, Command() As String, Txt() As String, Autre() As String
Dim Lb As Integer, Cd As Integer, Tx As Integer, Aut As Integer
ReDim Lab(0): ReDim Command(0): ReDim Txt(0): ReDim Autre(0)
Dim Mess As String, i As Integer, CR
CR = Chr(13)
    For Each Ctl In Me.Controls
        Select Case TypeName(Ctl)
        Case "Label": ReDim Preserve Lab(Lb): Lab(Lb) = Ctl.Name: Lb = Lb + 1
        Case "CommadButton": ReDim Preserve Command(Cd): Command(Cd) = Ctl.Name: Cd = Cd + 1
        Case "TextBox": ReDim Preserve Txt(Tx): Txt(Tx) = Ctl.Name: Tx = Tx + 1
        Case Else: ReDim Preserve Autre(Aut): Autre(Aut) = Ctl.Name: Aut = Aut + 1
        End Select
    Next Ctl
    'Exemple d'affichage par catégorie de contrôles.
    Mess = "Il y a " & Lb & " Label" & CR
    For i = 0 To Lb - 1
    Mess = Mess & Lab(i) & CR
    Next i
    Mess = Mess & "Il y a " & Tx & " TextBox" & CR
    For i = 0 To Tx - 1
    Mess = Mess & Txt(i) & CR
    Next i
    '... la suite
    Mess = Mess & "Il y a " & Me.Controls.Count & " controls dans l'userform"
    MsgBox Mess
End Sub 

A adapter bien entendu.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
0
Salut lermite222

Merci pour ta réponse et pour le code

impossible de prendre ton code en copier coller pour faire l'essai

ca mets tout les lignes de code bout a bout, ça donne une ligne de code de 300 metres LOL

je vais imprimer et le taper

Merci a toi bonne après midi

Cdlt Ray
0
salut lermite222

tu a vu la reponse faite de pijaku, il y a bien un soucis

ca va se résoudre en son temps
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
22 nov. 2013 à 14:14
En attendant, j'ai édité le code de lermitte222 et ajouté la balise <code basic> qui va te permettre de copier-coller.........

Au passage, je te salue lermitte222! Bonne journée à toi!
0
salut pijaku

Merci beaucoup c'est nikel comme ca

Re bon W-end

Cdlt Ray
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
22 nov. 2013 à 14:27
Bon week end à toi également Raymond.
A+
0
Google Chrome sous windows 7 32 bits

ca marchai encore bien tout a l'heure, ca arrive assez souvent mème quand je réponds aux gens le curseur se bloque pour écrire disparait

c'est uniquement sur ce forum, sinon jamais d'ennuie particulier

tant pis je vais le taper tout a l'heure
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
22 nov. 2013 à 14:03
Bonjour,

Il y a effectivement un petit bug avec les balises <code>.
Le copié-collé (donc le copié en l'occurrence) bug pour les non-inscrits.

Par contre, je n'ai pas ton souci de curseur, même en tant que non-inscrit.

Je fais remonter l'info, en tout cas.
Merci et bonne continuation

A+
0
Salut pijaku

Merci de faire remonter l'info

Bon W-end

Cordialement Ray
0
Re lermite222

Bon après ce petit soucis , j'ai pu copier ton code

je l'ai essayer ca m'a l'air de fonctionner mais a l'affichage dans la MSGBOX

comme il y a beaucoup de controls

la msgbox s'affiche sur toute la hauteur de l'ecran et je ne peux pas la faire défiler

ce qui fait que je ne vois que le début de la liste.

Mais si on pouvais svp faire en sorte d'afficher la liste dans ma colonne (S) ça

m'arrangerai bien

Merci pour ton aide

Ray
0