Programmation VBA EXCEL

Résolu/Fermé
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015 - 17 janv. 2015 à 19:36
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015 - 19 janv. 2015 à 08:20
Bonjour,

Je suis débutant en VBA EXCEL et je souhaite trouver une solution à mon serieux problème qui est le suivant:

j'ai créé un USERFORM ("PLACEMENT") avec des TEXTBOX intitulé (Montant, période, Taux). je voulais intégrer une grille de taux au sein de mon commandbutton ("valider").

par exemple: si le 50< Montant<100 et 10< période <90 le taux ne doit pas dépasser 1.20%, si ca dépasse le textbox "Taux" s'efface automatiquement et un message box se déclenche " depassement de la grille de taux".

La grille de taux se situe au niveau d'un tableau ("Feuil1") et j'ai plusieurs conditions à mettre en place au même temps. je voulais utiliser le code suivant mais ça fonctionne pas.

Dim TheRow As ListRow

For Each TheRow In Feuil1.ListObjects("Feuil1").ListRows
'On recherche la ligne qui correspond à critère Montant et Nbr de jour
If (TextBox7 >= TheRow.Range(2, 1).Value) And (TextBox7 < TheRow.Range(2, 2).Value) And (TextBox3 >= TheRow.Range(1, 3).Value) And (TextBox3 < TheRow.Range(2, 4).Value) Then
'On controle le taux
If TextBox11 > TheRow.Range(2, 5).Value Then
'Traitement
'On quitte la boucle
Exit For
End If
End If
Next

ci joint mon fichier :https://www.cjoint.com/?0ArtQWqwmyD

Merci pour votre précieuse aide.
A voir également:

11 réponses

MegaTruite Messages postés 27 Date d'inscription mardi 30 septembre 2014 Statut Membre Dernière intervention 7 septembre 2016 2
17 janv. 2015 à 19:41
Bonjour
Je n'ai pas essayé votre code, mais peut-être pourriez-vous tenter de mettre les Exit For et End If dans le bon ordre.
Il ne me SEMBLE pas que cela soit correct.
0
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015
17 janv. 2015 à 20:19
Encore Ca marche pas . Peux-tu tester ma macro si ca te derange pas ?
Merci.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
Modifié par Le Pingou le 17/01/2015 à 22:38
Bonjour LANGAZOU,
Je regarde votre fichier et vous donne réponse, patience.
Comment se déclenche votre code... !

Salutations.
Le Pingou
0
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015
17 janv. 2015 à 22:52
Salut Pingou,

Ce code je l'ai trouvé quelque part et je veux l'intégrer au sein de mon commandbutton. je le trouve très adéquat et correspond mieux que mettre plusieurs fonctions SELECT ou IF.juste pour info les conditions à respecter sous la Feuil1 ne sont q'un petit exemple parmi plusieurs conditions que je vais encore les rajouter.

Merci pour votre réponse
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
17 janv. 2015 à 23:06
Bonjour,
Merci pour l'information.
J'ai la réponse à ma question : le code se déclenche dès l'ouverture du classeur.
En marge les procédures dans les 2 modules (Module1 et Module2) n'ont strictement rien à voir avec votre formulaire.
Le code du formulaire n'est pas correct et en plus il manque l'initialisation du formulaire, il est vide..... pas de choix pour [Nom] et [Devise].... Étrange.
Pouvez-vous expliquer ce que vous voulez réaliser et le résultat à obtenir (ou insérer les données validées... ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015
17 janv. 2015 à 23:14
le module 1 et 2 n'ont rien à voir avec le formulaire c'est juste des test. cette macro c'est juste un petit exemple. si j'aurais la réponse sur cette miniature je vais recopier le code sur ma macro d'origine (qui est plus clair et plus compliquée).
je veux seulement savoir utiliser et intégrer le code que je t'avais cité (for Each..) dans ma commandbutton. je veux la création d'une alerte à chaque dépassement de la grille sous la Feuil1.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
17 janv. 2015 à 23:24
Bonjour,
Merci, pour ce soir c'est tout pour moi.
Bon dimanche.
0
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015
17 janv. 2015 à 23:26
Bonjour,

à tré bientot Le Pingou .

Merci et bon dimanche
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
18 janv. 2015 à 22:23
Bonjour,
Première chose, votre code ne marche pas car vous faites référence à [ListObjects("Tab_Taux")] qui n'existe pas .... Et par analogie l'instruction [TheRow.Range(1, 1).Value)] est aussi erronée....

Alors je vous décris ce que je pense que vous voulez réaliser : entrer des données dans le formulaire [UserForm1] (Montant, Nb Jours et Taux) et contrôler que ceux-ci soient dans la fourchette des valeurs de la ligne correspondante du tableau nommée [Tab_Taux] de la feuille [Feuil1] et en cas de non concordance un message d'alerte vous demande de modifier la/es valeur/s.

Si tout en ordre on écrit les valeurs à la suite dans la feuille [Historique].

Note : Le taux est imposé selon les valeurs NBj et Montant donc il devrait être entré automatiquement dans le formulaire....Oui / Non
J'attends votre réponse pour poursuivre

0
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015
18 janv. 2015 à 23:02
Bonjour ,

J'ai bien tourné ma macro avec la création du tableau sous la Feuil1. mais le problème c'est que le message d'erreur qui s'affiche ne contient pas la borne sup dépassé par exple "dépassement de la grille de taux :1.60" comment procéder svp à rajouter la borne sup dans le message box en conservant le code initial ci -dessous:

Dim TheRow As ListRow


For Each TheRow In Feuil3.ListObjects("Tab_Taux").ListRows

'On recherche la ligne qui correspond à critère Montant et Nbr de jour
If TextBox3 <> "" And TextBox7 <> "" And TextBox11 <> "" And ComboBox1 <> "" And ComboBox2 <> "" Then

If (CDbl(TextBox7.Text) >= TheRow.Range(1, 1).Value) And (CDbl(TextBox7.Text) < TheRow.Range(1, 2).Value) And (CDbl(TextBox3.Text) >= TheRow.Range(1, 3).Value) And (CDbl(TextBox3.Text) < TheRow.Range(1, 4).Value) Then
'On controle le taux
If CDbl(TextBox11.Text) > TheRow.Range(1, 5).Value And CheckBox1.Value = False Then
TextBox11.Value = ""
MsgBox " dépassement de la grille "
CheckBox1.Visible = True
'On quitte la boucle
Exit For
End If
End If

End If
Next

j'ai crée un checkbox1 ("Accord sup") qui devient visible lorsque je tape un taux supérieur à la grille de taux et il me faut que je le coche afin de valider mon placement avec un taux supérieur à la grille.

https://www.cjoint.com/?0AsxhnW6WsO

Merci pour votre réponse.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
18 janv. 2015 à 23:59
Bonjour,
Pour ce soir je vous remercie pour les réponses à mon message... pas trouvées....

En plus le code en question n'est pas le même que celui du fichier précédent qui lui bloc sur l'erreur de mon message...

Sur le fichier actuel si j'entre comme montant le nombre 1000 il se transforme en 36 526 comme par miracle ... difficile de comprendre...

Et ensuite la procédure m'indique une autre erreur et va se positionné sur une fonction du module 1.
0
LANGAZOU Messages postés 95 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 8 novembre 2015
19 janv. 2015 à 08:20
bonjour,

Désolé J'ai abouti à mon résultat souhaité ,je vous remercie Mr le Pingou pour votre suivi et votre aide préciseuse.

bonne journée et à très bientot :)
0