XL 2019 Combobox qui est correctement remplie mais ne renvoie pas les bons résultats.

donpopo

XLDnaute Occasionnel
Bonjour le forum,
Je n'y comprends rien !

Dans mon programme, j'ai un userform deux onglets qui est appelé par le bouton 'Correspondances' et ensuite par le bouton 'Lettre de demande en conciliation'.
Sur cet userform, j'ai deux combobox; la combobox1 fonctionne très bien, mais la combobox2 me pose problème:
j'arrive à constituer sa liste en fonction d'un critère (titulaire d'un bail).
Lorsque je sélectionne le 1er nom de la liste, les renseignements sont correctement remplis dans les textbox appropriées; mais lorsque je sélectionne le deuxième nom de la liste alors là rien ne va plus; il m'affiche des données d'un 3eme nom non repris dans la combobox.
j'ai mis un msgbox m'affichant provisoirement le n° de ligne sélectionné et effectivement cela ne correspond pas à la ligne choisie.
Pourtant, j'ai déjà utiliser nombre de fois des combobox.

Ci-joint mon fichier pour plus de clarté.

Quelqu'un pourrait il vérifier mon code?

D'avance merci,
donpopo
 

Pièces jointes

  • ESSAI erroné.xlsm
    714.4 KB · Affichages: 15
Solution
Bonjour,
La solution est d'inclure le n° réel de la ligne dans le combobox2 :
ComboBox2.List(ComboBox2.ListCount - 1, 2) = i + f.[A5].Offset(-1).Row
VB:
'----------------------------
'Valorisation de la ComboBox2
'----------------------------
Private Sub SetComboBox2()
Dim Arr, i, f
Set f = Sheets("Locataires")
Arr = f.Range("A5:R" & f.[A65000].End(xlUp).Row).Value
    Me.ComboBox2.ColumnCount = 3
    Me.ComboBox2.ColumnWidths = "90;50;0"
For i = 1 To UBound(Arr)
   If Arr(i, 18) <> "" Then
      ComboBox2.AddItem Arr(i, 1)
      ComboBox2.List(ComboBox2.ListCount - 1, 1) = Arr(i, 2)
      ComboBox2.List(ComboBox2.ListCount - 1, 2) = i + f.[A5].Offset(-1).Row
   End If
Next i
End Sub

et de changer la ligne de code dans l'evt Change...

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Pour regarder , déjà faudrait que tout le fichier soit simple à utiliser !!
qui est appelé par le bouton 'Correspondances'
????? Il est OU ce bouton car déjà au lancement on a un usf que l'on ne connait pas ??
Puis dans "accueil" les ascenseurs sont inefficaces et donc on ne peut faire défiler les lignes ou colonnes ??
Ensuite , il faudrait expliquer tes manip. en pas à pas pour arriver à reproduire ton erreur :
je clic sur x puis je fais ...etc
Selon l'image , est ce à cet endroit ?
De plus , on ne peut jamais quitter si on ne clique pas sur un bouton ... que l'on ne voit PAS !!!!!!!!!!
j'ai dû faire Alt+Ctrl+sup pour quitter Excel ?????
 

Pièces jointes

  • dem1.jpg
    dem1.jpg
    80.8 KB · Affichages: 23

fanch55

XLDnaute Barbatruc
Bonjour;
Le bouton quitter ? 🤔
1618756080451.png


A la lecture du code, le combobox1 est initialisé à l'ouverture de l'userform et le combobox 2 aussi : SetComboBox2.
Mais par la suite quand au changement du combobox1, rien n'est fait ... :rolleyes:
 

Pièces jointes

  • 1618756825378.png
    1618756825378.png
    34.1 KB · Affichages: 18
Dernière édition:

donpopo

XLDnaute Occasionnel
En effet, pour qui ne connait pas le programme cela peut sembler confus. Mais il n'y a pas si longtemps que j'utilise VBA, je fais comme je peux.

L'userform qui s'ouvre au démarrage est un échéancier que l'on peut quitter sans problème.

Effectivement, j'ai interdit que l'on ferme les userform par la croix.

Pour ouvrir le userform concerné, cliquer "bouton Correspondances", puis cliquez "Bouton lettre de demande en conciliation".

L'userform qui s'ouvre est un userform a DEUX onglets (onglets situés au bas de l'userform). Le bouton "encoder" ou "quitter" se situe sur l'onglet2.

Le problème est:
sur la copie d'écran ci-dessus, le nom du locataire est correct Bernes), mais toutes les autre données (prenom, conjoint) sont erronées; ce sont les coordonnées d'un locataire non repris dans la liste de la combobox2. (non repris car ne possède pas de bail).

Or si je sélectionne le premier locataire de la combobox2, les coordonnées sont correctes.

Je rejoint le fichier où j'ai ôté l'userform qui s'ouvre au début.

Merci de ton aide.
 

Pièces jointes

  • ESSAI erroné.xlsm
    719.9 KB · Affichages: 5

herve62

XLDnaute Barbatruc
Supporter XLD
Mais il n'y a pas si longtemps que j'utilise VBA, je fais comme je peux
Ah bon ??? ensuite tu fais
j'ai interdit que l'on ferme les userform par la croix.
Un débutant est loin ....loin de connaître cette astuce ??

Et surtout ARRETE DE TOUT EMPECHER DE FERMER PAR LA CROIX
c'est insupportable , on peut pas aller dans le VBA > USF affiché qui masque , et on sait pas le fermer ????
Tes USF s'affichent hors écran ( en bas ) vérifie tes dimensions !!!
Je dois quitter comme j'ai dit au début
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Bonjour,
La solution est d'inclure le n° réel de la ligne dans le combobox2 :
ComboBox2.List(ComboBox2.ListCount - 1, 2) = i + f.[A5].Offset(-1).Row
VB:
'----------------------------
'Valorisation de la ComboBox2
'----------------------------
Private Sub SetComboBox2()
Dim Arr, i, f
Set f = Sheets("Locataires")
Arr = f.Range("A5:R" & f.[A65000].End(xlUp).Row).Value
    Me.ComboBox2.ColumnCount = 3
    Me.ComboBox2.ColumnWidths = "90;50;0"
For i = 1 To UBound(Arr)
   If Arr(i, 18) <> "" Then
      ComboBox2.AddItem Arr(i, 1)
      ComboBox2.List(ComboBox2.ListCount - 1, 1) = Arr(i, 2)
      ComboBox2.List(ComboBox2.ListCount - 1, 2) = i + f.[A5].Offset(-1).Row
   End If
Next i
End Sub

et de changer la ligne de code dans l'evt Change :

Nr_Lign_Locat = ComboBox2.List(ComboBox2.ListIndex, 2)
 
Dernière édition:

Discussions similaires