Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

Maspalio

XLDnaute Occasionnel
Bonjour,

Je reviens encore une fois vers vous :D


https://www.excel-downloads.com/threads/erreur-380-vba-mhh-que-faire.168050/

Début de semaine, j'avais un petit souci ( cf. lien ci-dessus ).

Donc me revoilà, avec le même classeur mais un problème différent.
J'ai un souci avec l'affectation des valeurs dans le combobox 3.. J'ai obtenu aucun résultat, j'ai beau cherché mais en vain.

Merci,
 

Pièces jointes

  • BOA Schlauch_v0.xls
    275 KB · Affichages: 142
Dernière édition:
G

Guest

Guest
Re : Probleme d'affectation de Valeur dans Combobox

Bonjour,

quand tu charges la combobo2, cible et source sont de type "String" et quand tu charges la combobox 3 cible est string et source (cellule) est numérique.

J'écrirais quelque chose comme ceci:

Code:
        If CbxIndex = 3 Then Cible = Val(Cible)
        For j = 3 To NbLignes
            If Ws.Cells(j, CbxIndex - 1) = Cible Then
                Obj = Ws.Cells(j, CbxIndex)
                If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j).Offset(0, CbxIndex - 1)
            End If
        Next j

Ou Alors en utilisant .text
Code:
              For j = 3 To NbLignes
            If Ws.Cells(j, CbxIndex - 1).Text = Cible Then
                Obj = Ws.Cells(j, CbxIndex)
                If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j).Offset(0, CbxIndex - 1)
            End If
        Next j

A+
 

Dranreb

XLDnaute Barbatruc
Re : Probleme d'affectation de Valeur dans Combobox

Bonjour.
De mon coté j'ai résolu le problème en réécrivant:
VB:
Private Sub ComboBox2_Change()
    'Affectation des valeurs du ComboBox3
    If ComboBox2.Value <> "" Then Val_ComboBox 3, CDbl(ComboBox2.Value)
End Sub
Cordialement
 

Maspalio

XLDnaute Occasionnel
Re : Probleme d'affectation de Valeur dans Combobox (update 12.08.11 - 8:05 )

Je reviens vers vous, après avoir continuer a remplir ma "DB", je bute sur un nouveau problème avec mes combobox à choix conditionnels.

Si je sélectionne "FOODMASTER", Dans mon combobox3, j'ai 3 possibilités or il devrait y en avoir qu'une seule.

En testant les différentes méthodes proposés par Hasco et Dranreb, le résultat est le même.

Dur dur, le VBA :(

Le souci est que comme l'affectation des valeurs du combobox 3 se base sur le combobox 2.. ben il me selectionne tous les valeurs possible .. :(
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

Bonjour.
Essayez comme ça:
VB:
Option Explicit
Dim Ws As Worksheet, EnPhaseDInitialisation As Boolean

Private Sub UserForm_Initialize()
    'Affectation des valeurs du ComboBox1
    Val_ComboBox 1
End Sub

Private Sub ComboBox1_Change()
   If EnPhaseDInitialisation Then Exit Sub
    'Affectation des valeurs du ComboBox2
    Val_ComboBox 2, ComboBox1.Value
End Sub

Private Sub ComboBox2_Change()
   If EnPhaseDInitialisation Then Exit Sub
    'Affectation des valeurs du ComboBox3
    Val_ComboBox 3, ComboBox1.Value, CDbl(ComboBox2.Value)
End Sub

'Procédure pour affecter des valeurs aux ComboBox
Private Sub Val_ComboBox(CbxIndex As Integer, ParamArray Cible() As Variant)

Dim NbLignes As Long, TV As Variant, Cbx As ComboBox, L As Long, ÀRetenir As Boolean, C As Long

'Définit la feuille contenant les données
    Set Ws = Worksheets("DB_Schlauch")
    'Définit le nombre de lignes dans la colonne A
    NbLignes = Ws.Range("A65536").End(xlUp).Row
'Met une bonne fois pour toutes en tableau dans un variant les valeurs des plages, pour limiter les requêtes Excel
    TV = Ws.Range("A3:C" & NbLignes).Value

    
'Définit le ComboBox à remplir
    Set Cbx = Me.Controls("ComboBox" & CbxIndex)
    
EnPhaseDInitialisation = True ' Pour ne plus provoquer de récursions
'Supprime les anciennes données
    Cbx.Clear

'Boucle sur les lignes de la colonne A (à partir de la 3eme ligne)
    For L = 1 To UBound(TV)
   'Remplit le ComboBox sans doublons
       Cbx.Value = TV(L, CbxIndex): ÀRetenir = Cbx.ListIndex = -1
'Alimentation conditionnelle du Combobox en fonction de ce qui est sélectionnée dans les contrôles précédents éventuels:
       For C = 1 To CbxIndex - 1 ' 1 to -1 ==> ne passe du tout dans la boucle
          If Not ÀRetenir Then Exit For
          ÀRetenir = TV(L, C) = Cible(C - 1) ' Parce qu'un ParamArray démarre à 0
          Next C
       If ÀRetenir Then Cbx.AddItem TV(L, CbxIndex)
       Next L
       
EnPhaseDInitialisation = False

'Positionne sur le premier élément si la liste n'est pas vide
If Cbx.ListCount > 0 Then Cbx.ListIndex = 0

End Sub
Achtung der is der CommandButtonKalkulieren_Click... derrière que je n'ai pas reproduite.
À+
 

Maspalio

XLDnaute Occasionnel
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

Awesome \o/

Dranreb, t'es un Dieu ... (je me prosterne devant tant de génie :p)

Question bête, si je veux rajouter une 4ieme combobox ? ou plus :D (on sait jamais.. selon l’évolution du programme).

Car j'ai essayé de comprendre ton bout de code, mais malheureusement j'ai pas tout compris :(
De ce que j'ai compris c'est pas faisable, car faudrait modifier à nouveau tout le code de la procédure pour affecter des valeurs aux ComboBox. Juste ?

Merci encore,
 

Dranreb

XLDnaute Barbatruc
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

Faux en partie, c'est au contraire conçu pour en ajouter d'autres en rajoutant chaque fois au dernier l'avant dernier critère en plus des précédents.
Toutefois la procédure ne récupère que 3 colonnes. Il faudrait qu'elle en récupère le nombre de TextBox. Ou si les colonnes ne sont plus contiguës à partir de la A il faudrait le programmer autrement.
À+
 

Maspalio

XLDnaute Occasionnel
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

pour les 3 colonnes j'ai compris..


Code:
TV = Ws.Range("A3:D" & NbLignes).Value

Cependant pour le reste, je plane complétement. J'ai testé différentes solutions, mais en vain.


Code:
Private Sub ComboBox3_Change()
   If EnPhaseDInitialisation Then Exit Sub
    'Affectation des valeurs du ComboBox3
   Val_ComboBox 4, ComboBox1.Value, CDbl(ComboBox3.Value)
End Sub

dans ces eaux la ?
 

Maspalio

XLDnaute Occasionnel
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

mhhh.. Je doute la, vu que dans la fonction tu ne passes que 2 paramètres

Code:
Private Sub Val_ComboBox(CbxIndex As Integer, ParamArray Cible() As Variant)

Donc faudrait un Cible1 .. ce qui par la suite modifie tout le code vu qu'il doit être pris en compte dans le IF.

non ?
 

Dranreb

XLDnaute Barbatruc
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

mhhh.. Je doute la, vu que dans la fonction tu ne passes que 2 paramètres
j'en passais déjà 3 à la Combobox2: tu oublie que le 1er n'est que le N° de ComboBox. Où est le problème ?
Extrait de l'aide sur l'instruction Sub:
ParamArray Facultatif. Utilisé exclusivement comme dernier argument dans arglist pour indiquer que l'argument final est un tableau Optional contenant des éléments de type Variant. Le mot clé ParamArray, qui permet d'indiquer un nombre quelconque d'arguments, ne peut être utilisé avec les mots clé ByVal, ByRef ou Optional.
À+
 

Maspalio

XLDnaute Occasionnel
Re : Probleme d'affectation de Valeur dans Combobox (up 12.08.11 8h15)

Edit : effectivement ca marche, Je viens de comprendre que tout dépend en faite de :
Code:
 Val_ComboBox 4, ComboBox1.Value, CDbl(ComboBox2.Value), ComboBox3.Value

pas de CDbl cette fois ci ;) comme toujours ce sont les petites finesses du code qui sont souvent le plus complexe.

Merci encore ,

Si jamais je peux quelque chose pour toi, fait moi signe ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 271
Membres
103 168
dernier inscrit
isidore33