Userform Combobox et RECHERCHEV
Bonjour tout le monde.
Alors je vais vous expliquer mon soucis. Cela fait deux-trois jours que j'ai un problème avec une fonction recherchev version VBA.
Que je m'explique : j'ai créé il y a peu un excel qui permet d'ouvrir deux userform afin qu'ils calculent automatiquement un total en fonction de certaines données (un système de devis automatique en quelques sortes). Dans l'ensemble, quand j'ai des champs à remplir ou des cases à cocher, mes calculs fonctionnent bien. Mon soucis, concerne un champ où je dois sélectionner parmi une liste disponible dans un champ. Quand je sélectionne un temps, il faudrait que le prix en conséquence soit pris en compte et ce n'est pas la cas. Voici donc ce que j'ai fait :
Alors, pour commencer, j'ai fait apparaître les champs dans la case en utilisant le code suivant :
Private Sub UserForm_Initialize()
Dim Cel As Range
'Chant[[Temps chant]]
For Each Cel In Range("Chant[[Temps chant]]")
Me.TpsChnt.AddItem Cel.Text
Next Cel
End Sub
Comme vous le remarquez, les valeurs font parti d'un tableau "Chant", colonne "Temps chant". Sur cette partie là, pas de problèmes.
La deuxième consiste à prendre une valeur comme référence en fonction de la donnée sélectionnées dans le champ précédent. N'ayant pas réussi à utiliser une fonction type RECHERCHEV,, je suis parti sur une fonction IF / ELSEIF... mais même là ça ne fonctionne pas.
'Calculer Chant en fonction des données ci-dessus
If chkchnt = True Then
If TpsChnt.SelText = Sheets("Feuil2").Range("f6").Value Then
Chant = Sheets("Feuil2").Range("g6").Value * Kd
ElseIf TpsChnt.Value = Sheets("Feuil2").Range("f7").Value Then
Chant = Sheets("Feuil2").Range("g7").Value * Kd
ElseIf TpsChnt.Value = Sheets("Feuil2").Range("f8").Value Then
Chant = Sheets("Feuil2").Range("g8").Value * Kd
ElseIf TpsChnt.Value = Sheets("Feuil2").Range("f9").Value Then
Chant = Sheets("Feuil2").Range("g9").Value * Kd
ElseIf TpsChnt.Value = Sheets("Feuil2").Range("f10").Value Then
Chant = Sheets("Feuil2").Range("g10").Value * Kd
ElseIf TpsChnt.Value = Sheets("Feuil2").Range("f11").Value Then
Chant = Sheets("Feuil2").Range("g11").Value * Kd
End If
End If
Je me demande si c'est le fait de sélectionner une valeur parmi d'autres qui ne me feraient pas planter. Si c'est bien ça, ou même si c'est autre chose, quelqu'un saurait-il me guider pour savoir comment réussir ?
Merci d'avance,
Sha'
Bonjour
Si tu joins ton fichier, il sera plus facile de te proposer quelque chose.
Bye !
Salut gmb,
Déjà merci pour ta réponse réactive.
Alors oui, je comprends qu'avec un fichier, ce serait plus facile de m'aider mais étant donné que ce sont des données qui restent confidentielles, je ne peux pas vous donner le fichier même.
Par contre, je viens de faire une version d'essai sans aucunes valeurs réelles. Si ça peut permettre déjà d'aider à trouver le bug au niveau du codage, je ne dis pas non.
Je pense que le bug survient au niveau du codage de l'User "Chant" dans les formules de BtnCalcul_Click
Depuis, ce matin j'ai essayé une nouvelle formule mais ça ne fonctionne pas non plus apparemment :
'Calculer Chant en fonction des données ci-dessus
If chkchnt = True Then
Set cel = Feuil2.Columns("f").Find(what:=Me.TpsChnt, LookIn:=xlValues, lookat:=xlWhole).Row
If Not IsError(cel) Then
Chant = Feuil2.Cells(cel, 7).Value
Else
MsgBox "La donnée entrée comme temps de chant n'est pas connue."
End If
End If
Merci d'avance.
Bonjour
Sans approfondir, je remarque une erreur de frappe dans ton code de l'Initialize.
Tu écris:
If chkchnt = True Then
Or, ton CheckBox s'appelle : " ChkCht "
C'est presque pareil mais la macro ne le comprend pas !
Dis-moi si je dois chercher plus loin...
A te relire.
Bye !
Aaah bien vu !
Et y'avait un deuxième soucis dans mon code, j'avais écris plusieurs fois Sheets("Feuil2") au lieu de Feuil2.
C'est pour cela qu'il ne trouvait pas.
Merci à toi de m'avoir aidé à trouver la subtilité. Maintenant, ça marche du feu de dieu.