Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pas trouvé de solution?

13 réponses
Avatar
Charly
Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les Control
TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles

10 réponses

1 2
Avatar
LSteph
Bonjour,

peut-être (non testé, m'en vais) dans le genre , à imbriquer:

dim i as integer
'....
with frm
for i = 1 to .controls.count
if .controls(i).typeOf = msforms.textbox then
'...
next i
end with
'...


Cordialement.

LSteph


Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les Control
TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles




Avatar
Misange
bonjour,
http://www.excelabo.net/excel/controlestypes.php#bouclecontrole
souvenirs souvenirs, c'était ma première question sur ce forum ;-)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les Control
TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles




Avatar
Charly
merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),
celle de Misange pourrait fonctionner si je pouvais renseigner le formulaire
traité -
dans le style :

Sub ListeLables()
Dim Frm As VBComponent
Dim Ctrl As Control
Dim i As Integer

i = 1
For Each Frm In ThisWorkbook.VBProject.VBComponents
If Frm.Type = vbext_ct_MSForm Then
For Each Ctrl In Frm.Controls ' <<<<<
mon problème !
If TypeOf Ctrl Is MSForms.Label Then
Cells(i, 1).Value = Frm.Name
Cells(i, 2).Value = Ctrl.Name
Cells(i, 3).Value = Ctrl.Caption
i = i + 1
End If
Next
End If
Next
End Sub

mon problème est de faire fonctionner la boucle for each Ctrl ...

Merci quand même
Charles

"Charly" a écrit dans le message de news:

Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les
Control TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles



Avatar
anonymousA
Bonjour

For Each Ctrl In Frm.Designer.Controls

A+


merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),
celle de Misange pourrait fonctionner si je pouvais renseigner le formulaire
traité -
dans le style :

Sub ListeLables()
Dim Frm As VBComponent
Dim Ctrl As Control
Dim i As Integer

i = 1
For Each Frm In ThisWorkbook.VBProject.VBComponents
If Frm.Type = vbext_ct_MSForm Then
For Each Ctrl In Frm.Controls ' <<<<<
mon problème !
If TypeOf Ctrl Is MSForms.Label Then
Cells(i, 1).Value = Frm.Name
Cells(i, 2).Value = Ctrl.Name
Cells(i, 3).Value = Ctrl.Caption
i = i + 1
End If
Next
End If
Next
End Sub

mon problème est de faire fonctionner la boucle for each Ctrl ...

Merci quand même
Charles

"Charly" a écrit dans le message de news:

Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les
Control TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles







Avatar
Charly
MERCI !!


"anonymousA" a écrit dans le message de news:
4652cd9e$0$25917$
Bonjour

For Each Ctrl In Frm.Designer.Controls

A+


merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),
celle de Misange pourrait fonctionner si je pouvais renseigner le
formulaire traité -
dans le style :

Sub ListeLables()
Dim Frm As VBComponent
Dim Ctrl As Control
Dim i As Integer

i = 1
For Each Frm In ThisWorkbook.VBProject.VBComponents
If Frm.Type = vbext_ct_MSForm Then
For Each Ctrl In Frm.Controls '
<<<<< mon problème !
If TypeOf Ctrl Is MSForms.Label Then
Cells(i, 1).Value = Frm.Name
Cells(i, 2).Value = Ctrl.Name
Cells(i, 3).Value = Ctrl.Caption
i = i + 1
End If
Next
End If
Next
End Sub

mon problème est de faire fonctionner la boucle for each Ctrl ...

Merci quand même
Charles

"Charly" a écrit dans le message de news:

Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les
Control TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles








Avatar
MichDenis
2 alternatives :

Boucler sur tous les controles "Textbox" en mode création

'-----------------------------------
Sub test()
Dim Vbcomp As Object
Dim frm As UserForm
For Each Vbcomp In ThisWorkbook.VBProject.VBComponents
If Vbcomp.Type = 3 Then
Set frm = Vbcomp.Designer
For Each c In frm.Controls
If TypeName(c) = "TextBox" Then
'ton code pour tes textbox
MsgBox c.Name & " du formulaire : " & Vbcomp.Name
End If
Next
End If
Next
End Sub
'-----------------------------------

Boucler sur tous les controles "Textbox" seulement des formulaires
CHARGER en mémoire vive qu'ils soient visibles ou non à l'écran

'------------------
Sub UserformCharger()
On Error Resume Next
For Each u In UserForms
Set Mavar = u
If Err = 0 Then
For Each c In u.Controls
MsgBox c.Name & " du formulaire : " & u.Name
Next
End If
Next
End Sub
'------------------



"Charly" a écrit dans le message de news:

Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les Control
TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles
Avatar
lSteph
Re Bonjour,
..pressé ce matin,
mais si cela peut marcher mais plus compliqué à adapter que je
pensais

http://cjoint.com/?fwpFHMcayG

LSteph

le Code:

Option Explicit
Sub listTbox()
Dim i As Integer, j As Integer, mycheckup As String
With ThisWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).Type = 3 Then

For j = 0 To .VBComponents(i).Designer.Controls.Count - 1
If Left(.VBComponents(i).Designer.Controls(j).Name, 5) = "TextB"
Then
mycheckup = mycheckup & .VBComponents(i).Name & " - " & _
.VBComponents(i).Designer.Controls(j).Name & vbCrLf
End If
Next j

End If
Next i
End With
MsgBox mycheckup
End Sub

'....
On 22 mai, 11:51, "Charly" wrote:
merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),


Avatar
lSteph
...mais si, cela peut marcher, sauf que ce matin j'étais pressé et
c'est un peu moins simple à adapter que je ne pensais (déjà faut
cocher réf à vbextensibility mais cela je suppose que c'est déjà
fait )

Exemple: http://cjoint.com/?fwpFHMcayG

Cdlt

lSteph
le code:

Option Explicit
Sub listtbox()
Dim i As Integer, j As Integer, mycheckup As String
With ThisWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).Type = 3 Then
'....
For j = 0 To .VBComponents(i).Designer.Controls.Count - 1
If Left(.VBComponents(i).Designer.Controls(j).Name, 5) = "TextB"
Then
mycheckup = mycheckup & .VBComponents(i).Name & " - " & _
.VBComponents(i).Designer.Controls(j).Name & vbCrLf
End If
Next j

End If
Next i
End With
MsgBox mycheckup
End Sub



On 22 mai, 11:51, "Charly" wrote:
merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),
celle de Misange pourrait fonctionner si je pouvais renseigner le formula ire
traité -
dans le style :

Sub ListeLables()
Dim Frm As VBComponent
Dim Ctrl As Control
Dim i As Integer

i = 1
For Each Frm In ThisWorkbook.VBProject.VBComponents
If Frm.Type = vbext_ct_MSForm Then
For Each Ctrl In Frm.Controls ' << <<<
mon problème !
If TypeOf Ctrl Is MSForms.Label Then
Cells(i, 1).Value = Frm.Name
Cells(i, 2).Value = Ctrl.Name
Cells(i, 3).Value = Ctrl.Caption
i = i + 1
End If
Next
End If
Next
End Sub

mon problème est de faire fonctionner la boucle for each Ctrl ...

Merci quand même
Charles

"Charly" a écrit dans le message de news:


Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les
Control TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles




Avatar
lSteph
...mais si, cela peut marcher, sauf que ce matin j'étais pressé et
c'est un peu moins simple à adapter que je ne pensais (déjà faut
cocher réf à vbextensibility mais cela je suppose que c'est déjà
fait )

Exemple: http://cjoint.com/?fwpFHMcayG

Cdlt

lSteph
le code:

Option Explicit
Sub listtbox()
Dim i As Integer, j As Integer, mycheckup As String
With ThisWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).Type = 3 Then
'....
For j = 0 To .VBComponents(i).Designer.Controls.Count - 1
If Left(.VBComponents(i).Designer.Controls(j).Name, 5) = "TextB"
Then
mycheckup = mycheckup & .VBComponents(i).Name & " - " & _
.VBComponents(i).Designer.Controls(j).Name & vbCrLf
End If
Next j

End If
Next i
End With
MsgBox mycheckup
End Sub



On 22 mai, 11:51, "Charly" wrote:
merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),
celle de Misange pourrait fonctionner si je pouvais renseigner le formula ire
traité -
dans le style :

Sub ListeLables()
Dim Frm As VBComponent
Dim Ctrl As Control
Dim i As Integer

i = 1
For Each Frm In ThisWorkbook.VBProject.VBComponents
If Frm.Type = vbext_ct_MSForm Then
For Each Ctrl In Frm.Controls ' << <<<
mon problème !
If TypeOf Ctrl Is MSForms.Label Then
Cells(i, 1).Value = Frm.Name
Cells(i, 2).Value = Ctrl.Name
Cells(i, 3).Value = Ctrl.Caption
i = i + 1
End If
Next
End If
Next
End Sub

mon problème est de faire fonctionner la boucle for each Ctrl ...

Merci quand même
Charles

"Charly" a écrit dans le message de news:


Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les
Control TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles




Avatar
lSteph
...mais si, cela peut marcher, sauf que ce matin j'étais pressé et
c'est un peu moins simple à adapter que je ne pensais (déjà faut
cocher réf à vbextensibility mais cela je suppose que c'est déjà
fait )

Exemple: http://cjoint.com/?fwpFHMcayG

Cdlt

lSteph
le code:

Option Explicit
Sub listtbox()
Dim i As Integer, j As Integer, mycheckup As String
With ThisWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).Type = 3 Then
'....
For j = 0 To .VBComponents(i).Designer.Controls.Count - 1
If Left(.VBComponents(i).Designer.Controls(j).Name, 5) = "TextB"
Then
mycheckup = mycheckup & .VBComponents(i).Name & " - " & _
.VBComponents(i).Designer.Controls(j).Name & vbCrLf
End If
Next j

End If
Next i
End With
MsgBox mycheckup
End Sub



On 22 mai, 11:51, "Charly" wrote:
merci pour votre aide,

mais les deux solutions ne conviennent pas!
celle de LSteph ne fonctionne pas (merci tout de même),
celle de Misange pourrait fonctionner si je pouvais renseigner le formula ire
traité -
dans le style :

Sub ListeLables()
Dim Frm As VBComponent
Dim Ctrl As Control
Dim i As Integer

i = 1
For Each Frm In ThisWorkbook.VBProject.VBComponents
If Frm.Type = vbext_ct_MSForm Then
For Each Ctrl In Frm.Controls ' << <<<
mon problème !
If TypeOf Ctrl Is MSForms.Label Then
Cells(i, 1).Value = Frm.Name
Cells(i, 2).Value = Ctrl.Name
Cells(i, 3).Value = Ctrl.Caption
i = i + 1
End If
Next
End If
Next
End Sub

mon problème est de faire fonctionner la boucle for each Ctrl ...

Merci quand même
Charles

"Charly" a écrit dans le message de news:


Bonjour à tous,

Je cherche un moyen de créer une procédure pour boucler sur tous les
Control TextBox de tous les UserForm de mon classeur actif.

J'ai bien trouvé une procédure pour boucler sur tous les formulaires

Dim frm As vbcomponent
For Each frm In ThisWorkbook.VBProject.VBComponents
If frm.Type = 3 Then

End If
Next frm

mais je coince pour boucler ensuite sur les contrôles TextBox des
formulaires trouvés.

Merci pour votre aide
Charles




1 2