Liste déroulante Userform (par ligne sans doublons)

Fermé
Theo9245 - 23 janv. 2021 à 16:52
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 24 janv. 2021 à 07:40
Bonjour,

Merci pour le code que j'ai trouvé sur ce forum pour réaliser une liste déroulante par colonne, cependant je cherche à l'utiliser pour effectuer une liste sur une colonne, j'ai donc essayer de le transformer sans succès, je ne parviens pas à visualiser l'erreur, avez-vous une idée ?

Je vous joins un fichier pour une meilleure explication :
https://www.cjoint.com/c/KAxpK6SDafh



Dans un premier temps,
Je cherche à proposer dans la liste déroulante L_TC la liste colonne (8) H:2 à H:X page "P1"

Ensuite en fonction de L_TC qui est en colonne (9) I:2 à I:X page "P1" proposer dans la liste déroulante L_Tiers la liste des Tiers colonne (10) J:2 à J:X page "P1". (sans doublons)

Pour l'instant je me suis arrêté là, C'est le code ci-dessous.
Ensuite en fonction de L_Tiers je souhaite afficher L_Cat colonne (11)
Et en fonction de L_Cat afficher les comptes colonnes (12 à 17)



Code :
Option Explicit
Private Sub Formulaire_Initialize()
' Procédure permettant d'initailiser
' les données de la liste L_TC.
Dim Ligne As Long
' Initialisation des Variables.
Ligne = 2 ' Numéro de la Première ligne.
' Création d'une boucle pour charger toutes les rubriques.
With Sheets("P")
Do While .Cells(Ligne, 9).Value <> "" ' Tant qu'il y a des valeurs sur la colonne 9.
FrmSaisie.L_TC.AddItem .Cells(Ligne, 9).Value
Ligne = Ligne + 1
Loop
End With
End Sub


Private Sub L_Tiers_Change()
' Procédure permettant d'initialiser
' les données de la liste Sous-Rubrique.
Dim i As Long
Dim j As Long
Dim Ligne As Long
' Initialisation variables.
i = 2
' On vide la liste des sous-rubriques.
FrmSaisie.L_Tiers.Clear
' On travaille sur la feuille données
With Sheets("P")
' On boucle pour récupérer les sous rubriques de chaque rubriques.
Do While .Cells(i, 10).Value <> ""
' On test que le nom de rubriques soit bien identique.
If .Cells(i, 9).Value = FrmSaisie.L_TC.Value Then ' Si oui
' Récupération du N° de colonne
Ligne = .Cells(i, 10).Row
End If
i = i + 1
Loop
' On initialise le numéro de ligne à 3.
j = 3
' On boucle sur les colonnes pour récupérer les sous-rubriques.
Do While .Cells(Ligne, j).Value <> ""
' On charge les villes dans la liste déroulante
FrmSaisie.L_Tiers.AddItem .Cells(Ligne, j)
j = j + 1
Loop
End With
' On affiche la première valeur par défaut.
L_Tiers.ListIndex = 0
End Sub
Private Sub Fermer_click()
Unload Me
End Sub


Bien à vous,
Théo
A voir également:

1 réponse

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
Modifié le 24 janv. 2021 à 08:40
Bonjour,

FrmSaisie_Initialize
Inconnue dans le VBA!!
UserForm_Initialize oui

Si vous voulez ajouter un Tiers avec ce code (qui ne peut pas s'executer) pas possible
Il y a des boutons ajout/efface: vous servent a kakechose
Pouvez expliquer ce que vous voulez reelement?

Qelles sont vos connaissances en VBA?
0