[VBA] - Ouverture onglet dans Multipage selon choix ListBox

Bonsoir,

J'ai un "UserForm6" qui contient un système d'onglets.

A côté j'ai fait apparaître une ListBox qui liste en temps réel les erreurs rencontrées dans une base de données.

J'aimerais que lorsqu'on clique sur l'une des erreurs qui s'affiche dans la ListBox, l'onglet qui permet la correction de cette erreur soit ouvert.

Exemple :

- si l'erreur "Des numéros d'étude différents ont été trouvés" .

Alors l'Onglet n°4 ("Etudes") s'active.

- si l'erreur "Une ou plusieurs espèce(s) possède(nt) un enjeu différent"

Alors l'Onglet n°2 ("Enjeux") s'active.

Etc.

Je mets un document de travail pour mieux illustrer ce que je cherche à faire !

Merci de votre attention

Bonne soirée !

107clic-listbox.xlsm (79.26 Ko)

Bonjour,

Rajouter cette macro dans Userform9 :

Private Sub ListBox1_Click()
UserForm6.MultiPage1.Value = Me.ListBox1.ListIndex
End Sub

A+

Bonjour,

Merci pour votre aide.

Le nombre d'erreurs et le nombre d'onglets sont différents ; il y a donc une erreur lorsque le n° de l'erreur est supérieur au nombre d'onglet.

Je pensais à quelque chose du genre :

Private Sub ListBox1_Click()
   Nb = UserForm9.ListBox1.ListCount
   ReDim t(Nb)
    For p = 0 To Nb - 1
        'If Not UserForm9.ListBox1.Selected(p) Then
            If UserForm9.ListBox1.Selected(p) = "Des numéros d'études différents ont été trouvés" Then 'Me.ListBox1.ListIndex '"Des numéros d'études différents ont été trouvés" Then
            'UserForm6.MultiPage1.Value = "Des numéros d'études différents ont été trouvés" Then 'Me.ListBox1.ListIndex '"Des numéros d'études différents ont été trouvés" Then
                UserForm6.MultiPage1.Value = 4
            End If
            'End If
        'End If
    Next p
End Sub

Mais j'ai une erreur car p correspond à un numéro de ligne et que je veux désigner le contenu de la ligne, dans la ListBox.

Qu'en pensez-vous ?

Une possibilité :

Private Sub ListBox1_Click()
If Me.ListBox1.ListIndex < 4 Then
   UserForm6.MultiPage1.Value = Me.ListBox1.ListIndex
Else
   'Autre traitement...
End If
End Sub

autre solution :

Private Sub ListBox1_Click()
Select Case Me.ListBox1.ListIndex
Case Is < 4: UserForm6.MultiPage1.Value = Me.ListBox1.ListIndex
Case 5: 'Autre traitement...
Case 6: 'Autre traitement...
Case 7: 'Autre traitement...
Case Else: 'encore un autre traitement
End If
End Sub

A+

Bonsoir,

Je ne comprends pas, comment en ne lui indiquant pas de quelle erreur il s'agit (en la nommant), Excel peut-il trouver l'onglet qui correspond ?

La position de l'erreur est variable, elle dépend de ce qui est trouvé dans le document et n'est, de fait, pas toujours présente.

Oui tu as raison, je n'avais pas "épluché" le code derrière le ListBox... C'est sur que si le contenu du ListBox est aléatoire on ne peut pas se baser sur le ListIndex, dans ce cas c'est le Select case qui prévaut : en adaptant le contenu du ListBox à la Value du multipage.

Le problème est que je ne ne sais pas à quel onglet du multipage correspondent les libellés de ta ListBox mais ça va te faire un truc du genre : (moi j'ai fait ça avec des libellés bidons mais toi tu y retrouveras surement tes petits°

Private Sub ListBox1_Click()
   Select Case Me.ListBox1.Value
   Case "Des numéros d'espèces différents ont été trouvés": UserForm6.MultiPage1.Value = 0
   Case "Des enjeux différents ont été trouvés": UserForm6.MultiPage1.Value = 1
   Case "Problème d'effectifs détectés": UserForm6.MultiPage1.Value = 2
   Case "Des numéros d'études différents ont été trouvés": UserForm6.MultiPage1.Value = 3
   Case Else:
   End Select
End Sub 

A toi d'adapter en fonction de tes messages en tenant compte que les index du multipage sont numérotés à partir de zéro

(Donc le quatrième onglet du multipage correspond à Value = 3...)

Ok ?

Si ça te pose probléme tu me fais une table de correspondance :

Onglet du multipage = message du Listbox

A+

Bonsoir,

Merci beaucoup ! Vous avez encore trouvé la solution

J'ai adapté en fonction de vos indications et tout fonctionne à merveille

Le projet avance à grands pas vers sa finalisation.

Bonne soirée !

Rechercher des sujets similaires à "vba ouverture onglet multipage choix listbox"