Utilisation de plusieurs Userforms

Résolu/Fermé
Geoooorges Messages postés 3 Date d'inscription vendredi 4 décembre 2015 Statut Membre Dernière intervention 4 décembre 2015 - 4 déc. 2015 à 14:19
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 - 4 déc. 2015 à 18:43
Bonjour à tous,

Je me permets de vous contacter suite à un problème de codage VBA et je vous prie par avance d'excuser mon langage de novice!
En effet, je suis du genre "débrouillarde" mais, reconnaissons-le, ne connait pas grand chose à Excel et encore moins en VBA.
Pourtant, avec de bons tutoriels et de bonnes explications, je me débrouille toujours comme ce fut le cas pour créer une liste à choix multiple grâce, notamment à l'intervention de Pijaku dans la discussion ci-contre: https://forums.commentcamarche.net/forum/affich-19616792-liste-deroulante-a-choix-multiple-excel-2007 (merci!)

Pourtant, j'ai beau chercher, je ne vois aucun forum évoquant mon problème de userforms.

Souhaitant créer 4 listes à choix multiples différentes, à utiliser dans 4 colonnes différentes, j'ai créé 4 userforms.

1-Création et utilisation du 1er userform seul = OK

2-Création et utilisation des 2 premiers userforms: les premiers problème apparaissent!
Lorsque je clique sur la colonne A pour utiliser le userform 1 que j'avais pourtant assigné (me semble-t-il), c'est le userform2 qui apparait, et inversement lorsque je clique sur la colone B... Premier mystère pour moi... Mais bon, me direz-vous, en bidouillant, encore une fois, on s'en sort, il suffit de se dire que le 1 correspond au 2 et le 2 au 1, enfin bref, vous me suivez ?! :)

3-Création et utilisation des 4 userforms en même temps: OUPS!
- lorsque je clique sur la colonne A pour utiliser le userform1, c'est le userform2 qui apparait.
- lorsque je clique sur la colonne B pour utiliser le userform2, c'est le userform1 qui apparait.
- lorsque je clique sur la colonne C pour utiliser le userform3, c'est à nouveau le userform1 qui apparait.
- lorsque je clique sur la colonne D pour utiliser le userform4, c'est à nouveau le userform1 qui apparait.

J'ai patouillé, tripatouillé, bidouillé, encodé, décodé, mais je ne comprends rien!

Je vous remercie vivement de votre aide si quelqu'un a une solution à me donner avec, s'il a un peu de patience, une petite explication que je puisse me débrouiller toute seule la prochaine fois...

Pour les bonnes âmes souhaitant m'aider, voici les "codes" utilisés:

A-Code du Userform1
Option Explicit

Private Sub CommandButton1_Click()
Dim i As Byte
Dim ValeurARetourner As String

For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "
End If
Next i
With Sheets("Feuil1")
ActiveCell = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
ActiveCell.Offset(1, 0).Activate
End With
UserForm1.Hide
Unload UserForm1
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer, Derlig As Integer
ListBox1.Clear

Derlig = Sheets("Feuil1").Cells(65536, 7).End(xlUp).Row
For i = 1 To Derlig
ListBox1.AddItem Cells(i, 7).Value
Next i
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox1.Selected(i) = False
End If
Next i
End Sub


B-Code de l'Userform2 (meme logique de petites modifications pour les userforms 3 et 4)
Option Explicit

Private Sub CommandButton1_Click()
Dim i As Byte
Dim ValeurARetourner As String

For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "
End If
Next i
With Sheets("Feuil1")
ActiveCell = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
ActiveCell.Offset(1, 0).Activate
End With
UserForm2.Hide
Unload UserForm2
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer, Derlig As Integer
ListBox1.Clear

Derlig = Sheets("Feuil1").Cells(65536, 8).End(xlUp).Row
For i = 1 To Derlig
ListBox1.AddItem Cells(i, 8).Value
Next i
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox1.Selected(i) = False
End If
Next i
End Sub

C-Code de ma "feuil1"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A2:A100,B2:B100,C2:C100,D2:D100")) Is Nothing Then
Exit Sub
ElseIf Intersect(Target, Range("A2:A100")) Is Nothing Then
Target.Value = ""
Load UserForm1
UserForm1.Show
ElseIf Intersect(Target, Range("B2:B100")) Is Nothing Then
Target.Value = ""
Load UserForm2
UserForm2.Show
ElseIf Intersect(Target, Range("C2:C100")) Is Nothing Then
Target.Value = ""
Load UserForm3
UserForm3.Show
ElseIf Intersect(Target, Range("D2:D100")) Is Nothing Then
Target.Value = ""
Load UserForm4
UserForm4.Show
End If
End Sub


Je vous joins également un fichier (avec des données types, qui n’ont aucun intérêt à avoir un choix multiseclect ici mais c’était histoire de produire un exemple) : https://www.cjoint.com/c/ELenqm2Gm7b


Merci de votre aide ! :)

1 réponse

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
4 déc. 2015 à 15:27
Bonjour,

Voici une proposition à tester.
Dis-moi si cela correspond à ton attente.
https://www.cjoint.com/c/ELeozEjJbB8

A+
1
Geoooorges Messages postés 3 Date d'inscription vendredi 4 décembre 2015 Statut Membre Dernière intervention 4 décembre 2015
4 déc. 2015 à 15:56
Merci Gyrus de ta réponse si rapide!
Malheureusement, je n'arrive pas à télécharger le fichier joint qui s'ouvre seulement via une nouvelle page web chiffrée... (je suis au bureau actuellement, et un filtre m'en empêche peut être)
Il me semble que les fichiers .xls ne me posent pas de problèmes, pourrais-tu modifier le format pour la liaison ?
++
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > Geoooorges Messages postés 3 Date d'inscription vendredi 4 décembre 2015 Statut Membre Dernière intervention 4 décembre 2015
4 déc. 2015 à 16:05
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775 > Geoooorges Messages postés 3 Date d'inscription vendredi 4 décembre 2015 Statut Membre Dernière intervention 4 décembre 2015
4 déc. 2015 à 16:06
Bonjour Geoooorges,

Pb classique avec Firefox :
Pour télécharger le xlsm : clic gauche sur le lien / Enregistrer la cible du lien sous ..

Cordialement
Patrice
0
Geoooorges Messages postés 3 Date d'inscription vendredi 4 décembre 2015 Statut Membre Dernière intervention 4 décembre 2015
4 déc. 2015 à 16:29
Génial, c'est exactement ce que je veux !

Et... je constate que nous sommes bien loin de mes "codages" initiaux !!! ^^

Du coup, si tu as encore un peu de patience, et à l'occasion, je veux bien quelques explications histoire d'en apprendre un peu plus... Mais quoi qu'il en soit, je suis d'ores et déjà en train de copier le truc et de le reproduire à "grande échelle" sur mon vrai document, c'est top.

Merci beaucoup


@Patrice33740: merci pour l'info, testée et approuvée :)
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > Geoooorges Messages postés 3 Date d'inscription vendredi 4 décembre 2015 Statut Membre Dernière intervention 4 décembre 2015
4 déc. 2015 à 18:43
Je veux bien te donner quelques explications mais il faut que tu m'indiques quels sont les points à éclaircir.

A
0