lister textbox

faroka

XLDnaute Nouveau
Bonjour,
j 'aimerais pouvoir lister et imprimer tous les noms des textbox , listbox d'un projet .
Ceci pour faciliter la programmation et dépannage si bug.
Merci à vous
 

faroka

XLDnaute Nouveau
Re : lister textbox

j'utilise une multipage (12 pages) ) avec plusieurs textbox et une listbox a chaque page. j'aimerais donc pouvoir lister et imprimer tous ces noms afin de faciliter la suite de la programmation ainsi qu'un éventuel dépannage si un bug survient.
 

job75

XLDnaute Barbatruc
Re : lister textbox

Bonjour faroka, salut Philippe,

Apparemment il s'agit de contrôles dans un UserForm.

Donc on peut placer cette macro dans son code :

Code:
Sub ImprimerContrôlesUserForm()
Dim c As Control, t$(), n%
For Each c In Controls
  If TypeName(c) = "TextBox" Then
    ReDim Preserve t(1, n) 'base 0
    t(0, n) = c.Name
    t(1, n) = "TextBox"
    n = n + 1
  ElseIf TypeName(c) = "ListBox" Then
    ReDim Preserve t(1, n)
    t(0, n) = c.Name
    t(1, n) = "ListBox"
    n = n + 1
  End If
Next
If n Then
  Application.ScreenUpdating = False
  With Workbooks.Add.Sheets(1)
    .[A1] = "Contrôle": .[A1].Font.Bold = True
    .[B1] = "Type": .[B1].Font.Bold = True
    .[A2].Resize(n, 2) = Application.Transpose(t)
    .Columns.AutoFit 'ajustement largeur
    .[A2].Resize(n, 2).Sort .[A2], Header:=xlNo 'tri sur colonne A
    .PrintOut 'impression
    .Parent.Close False
  End With
  Application.ScreenUpdating = True
End If
End Sub
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : lister textbox

Re,

Avec une 3ème colonne pour le nom de la page où se trouve le contrôle :

Code:
Sub ImprimerContrôlesUserForm()
Dim c As Control, t$(), n%
For Each c In Controls
  If TypeName(c) = "TextBox" Then
    ReDim Preserve t(2, n) 'base 0
    t(0, n) = c.Name
    t(1, n) = "TextBox"
    t(2, n) = c.Parent.Name
    n = n + 1
  ElseIf TypeName(c) = "ListBox" Then
    ReDim Preserve t(2, n)
    t(0, n) = c.Name
    t(1, n) = "ListBox"
    t(2, n) = c.Parent.Name
    n = n + 1
  End If
Next
If n Then
  Application.ScreenUpdating = False
  With Workbooks.Add.Sheets(1)
    .[A1] = "Contrôle": .[A1].Font.Bold = True
    .[B1] = "Type": .[B1].Font.Bold = True
    .[C1] = "Page": .[C1].Font.Bold = True
    .[A2].Resize(n, 3) = Application.Transpose(t)
    .Columns.AutoFit 'ajustement largeur
    .[A2].Resize(n, 3).Sort .[A2], Header:=xlNo 'tri sur colonne A
    .PrintOut 'impression
    .Parent.Close False
  End With
  Application.ScreenUpdating = True
End If
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : lister textbox

Re,

Juste pour un code un peu plus léger :

Code:
Sub ImprimerContrôlesUserForm()
Dim c As Control, typ$, t$(), n%
For Each c In UserForm1.Controls
  typ = TypeName(c)
  If typ = "TextBox" Or typ = "ListBox" Then
    ReDim Preserve t(2, n) 'base 0
    t(0, n) = c.Name
    t(1, n) = typ
    t(2, n) = c.Parent.Name
    n = n + 1
  End If
Next
If n Then
  Application.ScreenUpdating = False
  With Workbooks.Add.Sheets(1)
    .[A1] = "Contrôle": .[A1].Font.Bold = True
    .[B1] = "Type": .[B1].Font.Bold = True
    .[C1] = "Page": .[C1].Font.Bold = True
    .[A2].Resize(n, 3) = Application.Transpose(t)
    .Columns.AutoFit 'ajustement largeur
    .[A2].Resize(n, 3).Sort .[A2], Header:=xlNo 'tri sur colonne A
    .PrintOut 'impression
    .Parent.Close False
  End With
  Application.ScreenUpdating = True
End If
End Sub
Bonne fin de soirée et A+
 

Discussions similaires

Réponses
8
Affichages
372

Statistiques des forums

Discussions
312 492
Messages
2 088 930
Membres
103 984
dernier inscrit
maliko67