Problème avec TypeOf objControl Is MSForms.MultiPage

Résolu/Fermé
GrandJean - Modifié par pijaku le 28/11/2013 à 08:42
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 28 nov. 2013 à 07:50
Bonjour,

Je développe une application bilingue. Tous mes libellés doivent donc être soit en Français, soit en Anglais.
J'ai créé une feuille dans laquelle se trouvent les libellés source. Je n'ai pas de problème pour alimenter les labels, CB, Frame... Là où je coince, c'est pour les légendes des onglets du multipage.
Voici le bout de code concernant cette partie :

ElseIf TypeOf objControl Is MSForms.MultiPage Then        
        For i = 490 To 519 'lignes correspondant aux légendes spécifiques multipage
          If objControl.Tag = .Cells(i, "C") Then  'j'utilise tag comme repère d'identification
            objControl.Caption = .Cells(i, col)
            objControl.ControlTipText = .Cells(i, col + 3)       
            Exit For
          Else
          End If
        Next i


J'ai essayé de remplacer Multipage par page ou par pages. Cela ne change rien. Je me demande s'il ne faut pas créer une sous boucle pour balayer les pages du multipage. J'ai fait quelques essais, sans succès. Si jamais vous aviez une piste, je vous en serais reconnaissant.
D'avance, merci
Jean


5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
27 nov. 2013 à 15:16
Bonjour,

Qu'appelles tu "légende des onglets du multipages"?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
27 nov. 2013 à 15:23
En attendant ta réponse, voici comment boucler sur les pages et renvoyer le nom (Name) et le Caption :
Dim i As Byte
For i = 0 To Me.MultiPage1.Pages.Count - 1
    MsgBox Me.MultiPage1.Pages(i).Name & "  " & Me.MultiPage1.Pages(i).Caption
Next i
0
Merci d'avoir pris le temps de regarder ma question.
Ce que j'apelle l'onglet, c'est en fait le caption.
Je connais la procédure que tu indiques et je l'utilise aussi. Mais dans mon cas, l'avantage du contrôle MSForms, c'est que j'ai plusieurs multipage dans mon application et que je veux tous les "balayer" avec une seule procédure.
J'espère que cette explication complémentaire clarifie le sujet
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 27/11/2013 à 16:51
Et bien tu mixes les deux procédures...
Comme ceci :
Dim objControl As Control, i As Byte
For Each objControl In Me.Controls
    If TypeOf objControl Is MsForms.MultiPage Then
        For i = 0 To Me.MultiPage1.Pages.Count - 1
            MsgBox objControl.Name & "  " & objControl.Caption
        Next i
    End If
Next objControl

Ou alors il y a un truc qui m'échappe......
Cordialement,
Franck
0
La macro qui gère l'affichage est dans un module. A chaque ouverture de UF, j'appelle la macro. J'alimente ainsi, et successivement titre de formulaire, label, bouton, frame...
Je suis certain qu'il faut imbriquer une deuxième procédure dans la boucle mais c'est là où je coince. J'ai essayé d'appliquer ton idée, sans succès, parce que le nom du multipage change d'un UF à l'autre.
Une solution serait peut-être d'inclure la procédure dans le UF lui-même juste pour le nom des pages.
0

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

Posez votre question
Bonsoir Franck,

Finalement, j'ai creusé ton idée et maintenant, cela fonctionne parfaitement. En fait, comme toujours, j'ai fait un break et cela m'a permis de réfléchir à la solution...

Voilà le code :
ElseIf TypeOf objControl Is MSForms.MultiPage Then
        For i = 0 To UF.MultiPage1.Pages.count - 1
          For ii = 490 To 496 'lignes sur lesquelles se trouvent les variables à récupérer
            If CDbl(UF.MultiPage1.Pages(i).Tag) = CDbl(.Cells(ii, "C")) Then
              UF.MultiPage1.Pages(i).Caption = .Cells(ii, col)
              Exit For
            Else
            End If
        
          Next ii
        Next i


Pour moi, la question est résolue. Si jamais tu as une idée pour améliorer mon code, je suis preneur.
En tout cas, merci de ton aide et de ton temps

Bonne soirée
Jean
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
28 nov. 2013 à 07:50
Salut,

Non rien pour améliorer. J'enlèverais toutefois le Else inutile.
Bonne continuation
Franck
0