Excel VBA

Fermé
Ofeu Messages postés 26 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 11 septembre 2018 - Modifié le 21 août 2018 à 20:33
Ofeu Messages postés 26 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 11 septembre 2018 - 23 août 2018 à 13:44
Bonjour,

Je suis bloqué sur une langage VBA pour mettre des conditions sur des textbox, je vous explique :

J'ai fait un formulaire avec des combobox et textbox.
Lorsque je saisie mes deux combobox, j'ai textbox18 (égale à la concaténation de mes deux combobox)

Sur une textbox, je veux que soit accepté la saisie entre une certaine plage (min et max) que se trouve sur la feuil "Ranges_1" et entre les cellules "A3:M34". Ma colonne A correspond au textbox18, et donc cela change lorsque je modifie mes 2 combobox.

Sur Excel, ça marche bien quand je mets une condition entre min et max dans "validation de donnée"
=RECHERCHEV($D$6;Ranges_1!$A$3:$M$34;3;FAUX), ici la valeur min est situé dans la colonne 3
=RECHERCHEV($D$6;Ranges_1!$A$3:$M$34;4;FAUX), ici la valeur max est situé dans la colonne 4
Sur la feuil Excel, ça marche super bien, mais je voudrais cela sur un formulaire Useform.


Voici mon codage auquel je doit procéder pour 4 textbox (ici je vous présente pour 2) :
Textbox6, le minimum acceptable est situé dans la colonne 3 et le maximum dans la colonne 4 (en fonction du textBox18 préalablement choisis)

Textbox7, le minimum acceptable est situé dans la colonne 6 et le maximum dans la colonne 7 (en fonction du textBox18 préalablement choisis)

Quand j'ai appliqué la formule ci-dessous, ça marche bien la plage acceptable (min - max) pour TextBox6, cependant pour TextBox7, je ne peux mettre aucune valeur qu'il montre ma message "See ranges for this fatty acids".


Ci-dessous mon code VBA :

Private Sub TextBox6_Change()
    Sheets("Model_FA").Range("D15").Value = TextBox6.Value
    Sheets("Model").Range("E16").Value = TextBox6.Value

Dim myRange3 As Range
Set myRange3 = Worksheets("Ranges_1").Range("A3:M34")
    If Not IsNumeric(TextBox6.Value) And TextBox6 <> "" Then
          MsgBox "Entry a number"
          TextBox6 = ""
    ElseIf TextBox6.Text < WorksheetFunction.VLookup(TextBox18.Text, myRange3, 3, False) Or TextBox6.Text > WorksheetFunction.VLookup(TextBox18.Text, myRange3, 4, False) And TextBox6 <> "" Then
          MsgBox "See ranges for this fatty acids"
          TextBox6 = ""
    End If
    
    End Sub
    

Private Sub TextBox7_Change()
    Sheets("Model_FA").Range("D16").Value = TextBox7.Value
    Sheets("Model").Range("E17").Value = TextBox7.Value

Dim myRange4 As Range
Set myRange4 = Worksheets("Ranges_1").Range("A3:M34")
    If Not IsNumeric(TextBox7.Value) And TextBox7 <> "" Then
            MsgBox "Entry a number"
            TextBox7 = ""
    
    ElseIf TextBox7.Text < WorksheetFunction.VLookup(TextBox18.Text, myRange4, 6, False) Or TextBox7.Text > WorksheetFunction.VLookup(TextBox18.Text, myRange4, 7, False) And TextBox7 <> "" Then
            MsgBox "See ranges for this fatty acids"
            TextBox7 = ""
    End If
    
End Sub


Merci beaucou de votre aide
Lucas

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 août 2018 à 16:35
Bonjour,

A première vue sans creuser, je me demande si ce n'est pas

TextBox7.Value à la place de TextBox7.Text

De mémoire je crois qu'il y a un problème de focus sur le formulaire
0
Bonjour,

Merci pour la disponibilité Pilas31. Effectivement j’avais essayé de changer Text pour Value, mais le problème est toujours là.
J’ai essayé de regarder sur d’autres forums, mais je n’arrive pas trouver une solution.

Cdlt
Lucas
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
22 août 2018 à 11:29
Bonjour,

En y regardant de plus prés, je pense que le problème vient sans doute des fonctions "Change" :
Il faut essayer en les remplaçant respectivement par
TextBox6_AfterUpdate() et TextBox7_AfterUpdate()

A tester
0
Ofeu Messages postés 26 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 11 septembre 2018
23 août 2018 à 13:44
Bonjour Pilas31,

Merci de la disponibilité, j'ai changé Change pour AfterUpdate mais cela n'a pas résolu... j'ai expliqué plus en détaille les problèmes que j'ai avec mon fichier-joint dans cet page :

https://forums.commentcamarche.net/forum/affich-35541397-langage-vba-vlookup-et-conditions?1-IAxHp-8yrkYzTvxJ_ZOMt9LQ6JsPwt--yyp0QmFHw

Merci !!!
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié le 22 août 2018 à 11:46
Bonjour,

comme son nom l'indique un textbox contient du texte.

Si tu saisis "123", tu vas envoyer le texte "123" et non le nombre 123 sur ta feuille.
Le plus souvent excel le traduira en nombre si besoin lors de l'utilisation.
Mais rechercher "123" n'est pas pareil que de rechercher 123

Ceci étant posé essaie avec :
Sheets("Model_FA").Range("D15").Value = cdbl(TextBox6.Value)

partout où c'est nécessaire.
eric

PS : si il te reste des erreurs il faudra déposer un fichier.
Et sur ta feuille supprime tout alignement.
Un texte s'aligne à gauche, un numérique à droite. Tu verras si tu as des vrais nombres ou des textes.

0
Ofeu Messages postés 26 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 11 septembre 2018
23 août 2018 à 13:42
Bonjour Eric,

J'ai essayé, mais il y toujours des erreurs. J'ai changé également textbox6.Text pour TextBox.Value (et vice-versa), mais il accepte seulement quand j'ai un textbox.text (alors que ce sont des valeurs)...

Voici le fichier
https://www.cjoint.com/c/HHxlHYoNbAg

Merci bcp de vos disponibilités !

J'ai posé une nouvelle question sur le forum en expliquant en détaille toutes mes problèmes de débutants ;-)
https://forums.commentcamarche.net/forum/affich-35541397-langage-vba-vlookup-et-conditions?1-IAxHp-8yrkYzTvxJ_ZOMt9LQ6JsPwt--yyp0QmFHw


Lucas
0