Bouton sur userform, liste déroulante et textbox

Bonjour, je viens vers vous car je suis complètement lorsqu'il s'agit de vba.

Je suis actuellement entrain de créer une application sur Excel 2007 pour mon taff. J'ai bien avancer sur certains point mais je bloque lorsque j'arrive a la partie VBA.

A cette heure, j'ai déjà créer mes userform avec mes textbox et mes liste déroulantes, mes boutons sur ma feuille excel et les différentes zones que je doit remplir.

Ici commence mes différents problèmes:

1/ Problème avec les Textbox/Bouton:

Lorsque je rentre une donnée dans une textbox, celle ci est directement transféré dans la cellule voulu sans que j'appui sur le bouton valider. Mais du coup les boutons "valider" et "annuler" ne servent à rien.

Je sais a quoi c'est du: J'ai fait une manip un peu bidon dans les propriétés de la textbox: "ControlSource=la cellule que je voulait"

Es ce que quelqu'un aurais une idée pour que les boutons marche et que les textbox n'enregistre pas les données sans avoir appuyer sur le bouton valider?

2/Problème avec les liste déroulante:

Lorsque que je clique sur ma liste déroulante, celle ci m'affiche bien la liste de choix que je veux mais elle ne valide pas mon choix quand je clique sur le choix que je veux.

De même qu'avant, j'ai fait une manip bidon dans les propriétés de ma liste déroulante: "ControlSource= la cellule que je veux" & "RowSource= la liste que je veux afficher"

Voila j'espère avoir était assez clair sur les problème que je rencontre.

C'est la première fois que je post sur un forum donc j'espère que vous pourrez m'aider

Merci de tout cœur

Et a bientôt

Guillaume

Bonjour Guillaume,

Effectivement, si tu lies un contrôle à une cellule, l'interaction est immédiate et te permet peu de vérifications...

Ceci dit,et puisque tu ne joins pas d'exemple, ne m'e,n veux pas d'avoir un peu de verbiage dans la réponse ci-dessous !

Ce qui est pratique, c'est d'établir une méthode de développement, à laquelle on se tient dans tous les classeurs, par exemple :

  • sur chaque feuille, une série de boutons : Ajouter, Modifier, Trier, Supprimer
  • pour rechercher, l'utilisateur dispose de fonctionnalités intégrées (CTRL+F), donc rien à faire de ce côté là...
  • pour modifier et supprimer, il doit se positionner sur la ligne souhaitée en premier lieu
  • pour trier, il se place dans le colonne souhaitée de son tableau

Ensuite, sur chaque action, et selon les cas :

  • initialisation du formulaire avec les données de la ligne courante (modifier) ou les valeurs par défaut contenues dans une feuille baptisée Paramètres, par exemple (ajouter)
  • contrôle avant suppression, pour éviter de supprimer une ligne à laquelle on ferait référence dans une ou plusieurs autres feuilles
  • contrôles des saisies sur les événements Change et/ou AfterUpdate des contrôles
  • contrôle de cohérence éventuel avant validation
  • sur validation (clic sur le bouton valider), écriture des contrôles dans la ligne (ajout ou modif)

Avec un peu d'expérience, on sait répartir les différentes instructions nécessaires à l'intérieur des procédures ou des modules, choisir les bonnes déclarations de variables (dim, public, etc.), et on adopte une charte de nommage des contrôles pour travailler plus vite et plus sûrement.

Je joins un exemple de développement qui illustre tout cela : il n'est sans doute pas parfait, mails il contient à peu près toutes ces recommandations... J'espère que ça pourra t'aider...

Cordialement, Daniel

https://forum.excel-pratique.com/applications/gestion-de-stock-t67486.html

Merci du coup de main DAN,

Je vais regarder sa plus en détail et essayer de m'en inspirer.

Dernière petite question,

Ya il besoin de fermer la conversation ? ou autre chose ? ou les sujet restent ils ouvert ?

J'imagine que tu vas avoir des questions peut-être plus précises et certainement différentes, donc je te conseille de clore ce fil, quitte à poster de nouveau plus tard...

Cordialement, Daniel

Chère Dan,

J'ai regarder ton application qu'il est de loin bien plus compliquer que la mienne, et malgré quelque bride de code que j'ai réussi à comprendre et à intégrer au mien, je n'arrive toujours pas à corriger mes erreurs.

Pour mon application, tous ce passe sur une seule feuille Excel qui se nome "DEVIS"

Sur cette feuille il y a une zone comprenant plusieurs boutons qui sont lier à des userforms pour que les utilisateurs de l'application n'ai pas à rentrer dans l'application mais puissent se contenter de saisir des données depuis des textbox/combobox sur des userforms.

Il y a aussi toutes les informations nécessaires pour les calculs. Toutes les données que les utilisateurs entrent (input data) doivent être bien dissocier.

Le problème que j'ai avec les combobox, c'est que je n'arrive pas à conserver le choix que je fait pour le mettre dans ma feuille Excel.

Elle m'affiche bien les différentes possibilité mais je n'arrive pas à stocker mon choix dans la cellule "Q17". Le code que j'ai mis pour récupérer les différents choix qui s'offre à l'utilisateurs est ci dessous. Mais je n'arrive pas a garder la valeur.

"

Private Sub UserForm_Initialize()

Dim I As Long

With Sheets("DEVIS")

For I = 7 To 16

ComboBox1.AddItem .Cells(I, 16)

Next I

ComboBox1.ListIndex = 0

End With

End Sub

"

Et comment code on les boutons "annuler" et "enregistrer" ? Car à l'heure actuelle, je ne fait que cacher mes userform sans pour autant pouvoir annuler ma sélection.

Code bouton annuler:

"

Private Sub CommandButton2_Click()

INCOTERM.Hide

OK = False

End Sub

"

Code bouton valider:

"

Private Sub CommandButton1_Click()

INCOTERM.Hide

OK = True

End Sub

"

Avez-vous une solution à me proposer?

Merci par avance

Guillaume

On ne pourra vraiment pas t'aider si tu ne joins pas ne serait-ce qu'un extrait de ton fichier.... Anonymise les données au besoin...

Voilà mon fichier

Il y donc bien plusieurs parties distincte.

Je vous l'accordent le boutons sont plus là pour faire beau qu'autre chose mais bon j'aimerais bien intégrer une partie VBA à mon stage même si je suis loin de maitriser et que mon entreprise ne me le demande pas explicitement.

Dites moi ce que vous en penser

et n'hésitez pas à me pauser des questions si des parties vous échappent.

Cordialement

Guillaume

228modele-devis.xlsm (95.86 Ko)

Oula !

C'est un travail quasiment abouti que tu nous envoies là ! Les premières questions qui me viennent, c'est : à quel bouton correspond le code à examiner ? Pourquoi organiser les données de cette façon et pas en mode tableau ? Où faut-il écrire le contenu du UserForm ?

J'arrête là pour l'instant, mais j'en aurai peut-être d'autres (par exemple : ce classeur sert-il pour un seul devis ? Que fais-tu des données des devis antérieurs ?, etc...)

Cordialement, Daniel

Bonjour,

Tout d'abord merci d'avoir jeter un œil à mon projet.

Alors, le problème que j'ai c'est que je ne sais pas comment coder les différents boutons "valider" et "annuler" présent sur chaque userform. Je me doute qu'il doit bien exister un code qui permet de sauvegarder mes données (du style "DEVIS.save") et de fermer l'userform (du style "userform.close") mais mes recherches sur le net on était infructueuse.

Pour l'organisation: j'ai préférer tout mettre sur une seul page car cella me simplifier la vie pour les calculs au vu du nombre de données à traiter. Et comme je ne suis pas une flèche en Excel je préférais centraliser les données sur une seule feuille de calcul.

Pour la partie logistique de la chose: le données des userforms doivent aller dans la partie "input data" au milieux du classeur. Chaque userform implémente les données de "input data". Pour te donner un exemple, le bouton "incoterm" ouvre l'userform 'INCOTERM" composer d'une combobox qui récupère les données présentes en P7:P16 l'utilisateur en choisi un qui devrais s'ajouter en Q17 puis écrire un lieux dans la textbox qui devrais s'ajouter en Q18. Pour l'instant, j'ai forcer les données des différentes textbox à écrire les données dans les cases voulu mais je préfèrerais que les casse se renplisent lors de l'appuie sur le bouton "valider". chaque userform et indépendant pour l'instant.

Pour tes autre question, oui ce logiciel sert pour un seul devis à la fois d'où le bouton RAZ qui permettra à l'utilisateur de supprimer les données de ce devis pour en recommencer un autre a l'occasion. Mon entreprise à uniquement besoin de la valeur finale. La page de devis n'est uniquement utile pour mon rapport de stage.

Chaque devis et indépendant. Plusieurs logiciel sont déjà existant et comme je l'ai dit, mon entreprise à uniquement besoin de la valeur final des coûts de transport. Du coup je n'ai pas besoin de me préoccuper des coûts précèdent. Je vais juste créer des zones de calculs permettant de réaliser des moyennes sur des tâches déjà effectuer pour obtenir une valeur plus ou moins exact.

Voila j'espère que mes explications sont assez claire.

N'hésite pas à me poser d'autre question.

Cordialement,

Guillaume


Petite précision,

Ne tenez pas compte de la deuxième feuille du classeur dans ma précédente pièce jointe.

Cordialement,

Guillaume

144modele-devis.xlsm (78.24 Ko)

Une proposition dans laquelle le UserForm CLI a été traité :

  • suppression de la propriété ControlSource pour les TextBox du formulaire
  • rédaction du code du bouton Enregistrer

Les TextBox et les boutons ont été renommés : idée de charte de nommage, pour simplifier le travail, à étendre le cas échéant à tous les objets (exemple : UF_Clients pour le formulaire)...

Il resterait à effectuer des contrôles (code postal, téléphone, mail), et à alimenter les ComboBox avec des listes nommées du classeur (propriété RowSource)...

Cordialement, Daniel

278guillaume6381.xlsm (96.78 Ko)

Super taff Dan,

Je te remercie pour ton aide car j'était vraiment perdu.

C'est exactement la façon dont je voulait que ça marche.

Je vais copier ton code partout partout !!!!!!

Merci énormément pour ton aide tu ma rendu un énorme service.

Bonjour a tous,

J'ai bien avancer sur mon projet grâce à Dan qui m'a énormément aidé mais j'ai toujours un problème avec des combobox qui ne veulent pas enregistrer mes données dans ma feuille Excel. J'ai trouver une formule qui aurais du faire son taff mais non.

Auriez vous la solution à mon problème ?

Code que j'ai utiliser pour une combobox :

"

Private Sub UserForm_Initialize()

'Initialiser ma combobox depuis les données de ma feuille excel

Dim I As Long

With Worksheets("Devis")

For I = 7 To 16

ComboBox_incoterm.AddItem .Cells(I, 16)

Next I

'mettre mon choix dans la cellule Q17 c'est la que sa plante

.Range("Q17" & I).Value = ComboBox_incoterm.Value

End With

End Sub

"

Merci par avance et à très vite.

Cordialement,

Guillaume

Pour ce que ça intéresse, le code que j'ai utiliser avec une combobox et une textbox:

"

Private Sub UserForm_Initialize()

Dim ZS As Long

With Worksheets("Devis")

For ZS = 7 To 16

ComboBox1.AddItem .Cells(ZS, 16)

Next ZS

.Range("Q17" & ZS).Value = ComboBox1.Value

End With

End Sub

Private Sub Bouton_Enregistrer_Click()

With Worksheets("Devis")

.Range("Q17").Value = Me.ComboBox1.Value

.Range("R17").Value = Me.TB_Lieux.Value

End With

test.Hide

OK = True

End Sub

Private Sub Bouton_Annuler_Click()

test.Hide

OK = False

End Sub

"

Voili voilou

Merci à vous et à bientôt pour de prochaine questions même si je pense que je devrais arrivé à me débrouiller !!!!!!

Cordialement,

Guillaume

Rechercher des sujets similaires à "bouton userform liste deroulante textbox"