Boucle sur MultipageX.PageY.ControlsZ

I

IFFIC

Guest
Bonsoir à tous dans cette heure tardive.
Mais je sais combien il ne l'est pas quand l'on a une passion pour VBA

J'ai un simple souci:

De remplacer! 'Page1' par 'Controls('Page' & X)
Me permettant de faire une boucle sur celles-ci.
J'ai fouillé…. Je n'ai pas trouvé!!!


Voici un bout de ma procédure issue de:
Set MTP = UserForm1.Controls.Add('Forms.MultiPage.1', , True) 'CREATION DU
MULTIPAGE..et c. ….. pour le reste…(SpinButton et TextBox en face l'un de l'autre)

(Cela va encore énerver 'Ti')

Dans un module de classe:

Public WithEvents Groupespin As MSForms.SpinButton

Dim NUMERO_MULTIPAGE As Integer
Dim NUMERO_PAGE As Integer
' Dim LA_PAGE-EN_QUESTION As Page..En fait ce qu'il me manque de définir ici !!!!

Dim NUMERO_TROU_SAISIE As Integer

Dim Trou_à_saisie_concerné As Control


Private Sub Groupespin_Change()
NUMERO_MULTIPAGE = 1
NUMERO_PAGE = 1 ' INUTILE POUR L'INSTANT FAUTE DE SAVOIR L'Initialisé
NUMERO_TROU_SAISIE = 33 ' Si le numéro d'ordre de la page _
est > au nombre de TextBox: Plantage of course...
' Le Hic est que sue la page 5 il a un numéro d'orde de 33.. et c.

With UserForm1.Controls('MultiPage' & NUMERO_MULTIPAGE)


'BOUCLE SUR LES PAGES DU MULTIPAGE

For j = 0 To UserForm1.Controls('MultiPage' & NUMERO_MULTIPAGE).pages.Count - 1

'BOUCLE SUR LES PAGES DU MULTIPAGE POUR TROUVER LES 'TROUS A SAISIR' (Alias 'Textox')

For Each Trou_à_saisie_concerné In UserForm1.Controls('MultiPage' & NUMERO_MULTIPAGE).Page1.Controls

If Trou_à_saisie_concerné.Name = ('TextBox' & NUMERO_TROU_SAISIE) Then

Trou_à_saisie_concerné.BackColor = &HC0&
' La couleur du Trou_à_saisie_concerné.BackColor = &HC0&fond
' est en réalité remplacée par une valeur issue d'un calcul
' entre la TextBox 'x' de l'USF1 et la TextBox 'y' du même endroit..and so on...
End If

Next
Next j

End With


End Sub


Merci d'avance, et bonne fin de soirée,
Sinon; bonne fin de semaine

IFFIC
 

MichelXld

XLDnaute Barbatruc
bonsoir Iffic

je ne suis pas sur d'avoir bien compris mais tu peux tester ces 2 methodes pour boucler sur toutes les pages d'un Multipage



Dim MPge As MultiPage
Dim Pge As Page
Set MPge = Me.Controls('MultiPage' & 1)
For Each Pge In MPge.Pages
MsgBox Pge.Caption
Next Pge



Dim MPge As MultiPage
Dim i As Byte
Set MPge = Me.Controls('MultiPage' & 1)
For i = 0 To MPge.Pages.Count - 1
MsgBox MPge.Pages(i).Caption
Next i





bonne soiree
MichelXld
 
I

IFFIC

Guest
Bonsoir Michel, bonsoir à ceux qui passent par là

Je dois reconnaître que mon post n'est pas des plus clairs!
Double Merci pour ton aide, elle a du mérite..C'est sympa.

Je n'ai pas encore testé, mais je suis certain
que dans tes méthodes, je trouverai mon bonheur.

Bonne fin de soirée, ou belle journée.

IFFFIC

P.S. J'ai eu du mal à répondre…Plusieurs 'Plouff'
(Ma bécane patine!)
 
I

IFFIC

Guest
Encore moi!

En fait, j'ai des 'Spin buttons' liés à des 'TextBoxes' j'ust'à coté.
dans des pages d'un Multipage.

L'événement quand le Spin passe de 0 à 1 serait que la valeur
De la 'TextBox' associée soit comme je le veux.

Public WithEvents Groupespin As MSForms.SpinButton

Private Sub Groupespin_Change()
Dim MPge As MultiPage
Dim i As Byte
Dim TXB As Controls

Set MPge = UserForm1.Controls('MultiPage' & 1)

For i = 0 To MPge.pages.Count - 1

MsgBox MPge.pages(i).Caption 'Jusqu'ici c'est l'aide Michel qui mache

Pour la suite, je vais sans doute devoir retourner à mon
Apprenticing elementary!!!

For Each TXB In MPge.pages(i)

If TXB.Name = ('TextBox' & Right(Groupespin.Name, 1) + 28) Then
TXB.Value = 0
End If

Next

Next i

End Sub

J'ai le sentiment d'avoir présumé de mes capacités à manipuler VBA
sur ce truc… N'est-il pas?

Même pas capable de faire une boucle genre 'For Each'
Sur des TextBoxes d'une page (X) d'un 'MultiPage(Y) !!!!


Merci à celui ou celle qui voudra bien effacer le tableau et expliquer..

Bonne soirée ou Bonjour à tous

Quelle chance d'avoir des 'Michels et autres sur ce site…'

J'ai grosse envie de savoir aider, un jour, moi aussi!

IFFIC
 

Hervé

XLDnaute Barbatruc
Bonsoir iffic, michel

moi c'est arthur :)

Iffic, c'est difficile de te répondre, il à fallut que je monte un userform, que je crée tout les controles, que je rajoute un module de classe, que je copie ton code, que je le comprenne, que je l'adapte OUF :)

En tout cas chez moi ceci fonctionne :


Private Sub Groupespin_Change()
Dim MPge As MultiPage
Dim i As Byte
Dim TXB As Control

For Each TXB In UserForm1.Controls

If TXB.Name = ('TextBox' & Right(Groupespin.Name, 1) + 28) Then
        TXB.Value = Groupespin.Value
'pour essai
End If

Next

End Sub


Je ne comprend pas pourquoi tu veux à tout prix connaitre le nom du multipage qui contient la textbox, a vrai dire on en à pas besoin.

Mais si tu veux vraiment connaitre le nom de l'onglet ou se trouve le spinbutton, tu peux utiliser ce type de code dans le module de classe :

MsgBox Groupespin.Parent.Name

salut
 
I

IFFIC

Guest
Merci Patrick, Heu M… Hervé..
Qu''il est c.. Iffic: …Yves, pour sa traduction en petit breton que je suis.

J'admire ta patience
Si ce n'est ton humour…

Sauf que je soupçonne que tu m'ais appris
Que même si les 'TXB' sont dans une 'Page' d'un 'Multipage'
Ils sont en premier dans l'USF

Je vais regarder en faisant plus simple et en suivant ton conseil.

Hervé, je suis admiratif de ta connaissance,
Et surtout vachement touché du mal que tu t'es donné à mettre de l'ordre dans mon 'Bordel'

QQ chose me dit que je ne risque plus de me planter sur ton 'Prénom'

Amicalement; merci, encore une fois de plus.

Je viens de reconstruire, et cela marche…

IFFIC
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 825
Membres
104 677
dernier inscrit
soufiane12