Questions userform | ||
---|---|---|
Inscription: 01/07/2008
Messages:
32
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 15-07-2008 18h40
Bonjour le forum!
Je suis en train de créer mon premier userform (et oui il y a un début à tout ) et de ce fait j'ai quelques questions! J'ai créé un userform contenant des textboxs et des comboboxs. Un bouton permet d'afficher le userform et de transférer les données rentrées dans une ligne d'une feuille excel. Ma première question est : quelle ligne de code dois-je rentrer pour que, lorsque je réaffiche la userformles fois d'après, les données précédemment rentrées ne s'affichent pas dans les textbox et combobox? En clair, quelle code permet de faire un "reset" de la userform sans effecer les données précedemment rentrée et transférées dans les lignes de lafeuille excel? Merci d'avance à vous! ++ Lannou |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 15-07-2008 22h10
Bonsoir lannou, le Forum,
Citation : lannou a écrit : Hum.... j'imagine donc qu'à un moment donné tu masques ton userform pour le réafficher ultérieurement... Et pour ce faire, j'imagine donc que tu utilises la méthode Hide de l'objet Userform comme ceci : UserForm1.Hide La méthode Hide ne fait que masquer le userform (comme si tu réduisais une fenêtre de l'exporateur sans la fermer réellement). Les données saisies par l'utilisateur sont donc conservées et réaffichées lorsque tu "ré-ouvres" le formulaire. Pour réinitialiser les TextBox et autres contrôles à leur état initial, il convient de fermer réellement le userform et non le masquer. Tu utiliseras l'instruction Unload pour cela : Unload UserForm1 Unload Me Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 01/07/2008
Messages:
32
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 16-07-2008 18h31
Bonsoir tout le monde!
Merciiiiiiiiiiiii!!!!!! C'était exactement ca! J'utilisais bel et bien la fonction Userform1.Hide ! Grâce à toi j'obtiens bien ce que je voulais! Non seulement ca marche mais en plus j'ai appris un truc !!! Ma deuxième question, toujours par rapport à ma userform est comment faire pour actualiser la liste des choix de ma ComboBox! Je m'explique : ma permière combobox demande à l'utilisateur de saisir le numéro de phase (chiffre entier) Après des recherches, je sais que j'ai deux méthodes pour le faire : 1) utiliser les propriétés de la combobox dans rowsource. Le problème c'est que dans la colonne où sont rentré les données j'ai plusieurs fois la même valeur et je ne veux pas que dans la liste il y ait des doublons. 2) Rentrer du code. J'ai donc rentré ce code ci que j'ai trouvé et qui me semble généralisable à mon fichier: ' On actualise la liste de choix des n° de phase avec ceux qui ont déjà été rentrés : Dim AllCells As Range, Cell As Range Dim NoDupes As New Collection On Error Resume Next For Each Cell In Range("A9:A2000") NoDupes.Add Cell.Value, CStr(Cell.Value) Next Cell On Error GoTo 0 ' On ajoute les éléments non dupliqués dans la zone de liste de ComboBox3 : For Each Item In NoDupes Création_tâche.ComboBox3.AddItem Item Next Item Je comprend pas grand chose au code et ca ne marche pas, sauriez vous pourquoi? Merci à vous! P.S : j'ai essayer de rentrer le code grâce à la petite icone d'excel qui le permet mais à chaque fois il me plaçais le code en haut sans que je puisse le déplacer. Savez vous comment faire pour l'intégrer à l'endroit souhaité? |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 16-07-2008 19h24
Bonsoir lannou, le Forum,
Tout d'abord, je te déconseille en effet l'utilisation de la propriété RowSource pour garnir ta ComboBox. J'ai, pour ma part, abandonné depuis longtemps le recours à cette propriété, trop restrictive et source de nombreux problèmes. L'utilisation de la méthode AddItem est bien plus souple. Le code que tu as trouvé est forcément bon puisqu'il s'agit d'une méthode fameuse de J.Walkenbach (adaptée d'une astuce de J.G. Hussey) permettant en effet de supprimer facilement les doublons d'une liste d'éléments. Que ton code ne fonctionne pas est limite un mystère, car je viens de le tester avec succès. J'y ai toutefois apporté une ou deux "petites" modifications comme suit : Option Explicit Pour peu que ton code est bien situé dans le module de code du Userform et que ta ComboBox se nomme bien ComboBox3, il n'y a pas de raison pour que ça ne fonctionne pas... Pour comprendre le fonctionnement de ce morceau de code, l'idéal serait que tu lises les commentaires originaux de son auteur JW (dans le lien que je mets plus haut). Si tu ne comprends toujours pas, alors j'essaierai de t'apporter le complément d'info. Pour insérer le code VBA dans tes posts :
Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 01/07/2008
Messages:
32
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 17-07-2008 10h20
Bonjour à tous!
Merci pour ta réponse Didier et pour m'avoir éclairé sur ce code! En ce qui concerne l'utilisation de la Rowsource, c'est bien ce que je pensais, je vais donc éviter de faire avec et passerai par le code. J'ai regardé de plus près du fait que tu m'ais dit que ca aurait du marcher. J'ai fait un pas à pas détaillé et effectivement tout le long de ma macro, la combobox se charge bien sans doublon des valeurs présentes dans ma colonne A. Par contre ces valeurs disparaissent à la toute fin de ma macro quand le pas à pas détaillé dépasse le "Unload Me", si bien que lorsque je réappuie sur le bouton commandant ma macro toutes les valeurs comprises dans ma combobox disparaissent. En fait soit je mets "unload me" et tout disparait lorsque l'utilisateur veut rentrer de nouvelles données soit je mets "userform1.hide" et là ma combobox est bien chargé mais j'ai également les valeurs précédemment rentré par l'utilisateur alors que je souhaite quelles soient vides! Comment faire pour que ma combobox se charge bien mais pour que mes textbox soient vides? Merci, Lannou |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 01/07/2008
Messages:
32
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 17-07-2008 14h55
Bonjour le forum!
Bon j'ai trouvé la réponse à ma question, à savoir, pourquoi ca ne marche pas! En fait j'avais placer le code pour charger la combobox dans la macro du bouton "valider" de ma userform et non dans la macro Userform_Initialize!!! C'est pour ca que ca ne marchait pas, je suis un boulet... Mais en même temps je ne pouvais pas le savoir mais à force de me poser des questions, je viens de comprendre... Merci pour ton aide Didier, c'est super sympa de ta part en tout cas de m'avoir aider! Petit à petit je progresse! N'empèche que c'est incroyable ce que l'on peut faire comme choses utiles avec Excel! Il y a encore quelques semaines j'ignorais tout ca et n'utilisais que le minimum! Encore merci,
Cordialement, |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 01/07/2008
Messages:
32
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 21-07-2008 13h30
Bonjour à tous!
Bon ba finalement je n'ai plus de question sur le sujet car j'ai résolu mon dernier problème par moi-même. Je met donc le sujet en "résolu" en vous remerciant pour votre aide et vos conseils Si, une petite question. Dans la programmation en vba, vaut il mieux faire plusieurs macros indépendantes que l'on fait intervenir par la fonction "call" ou vaut il mieux faire le minimum de macro? Merci à vous ++ |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 21-07-2008 21h04
Bonsoir lannou, le Forum,
Merci de ton retour pour le [résolu]. En ce qui concerne le nombre et la taille des procédures, ce n'est pas simple de te répondre comme ça. Tout dépend de l'ampleur du projet, et des traitements par macro à réaliser. En terme de clarté du code et en vue d'une maintenance à venir, il me paraît évident que plusieurs procédures ou fonctions bien définies et réservées chacune à une tâche bien déterminée seront toujours préférables à une seule grande procédure inextricable... Je pense qu'on peut imaginer un code idéal comme une procédure principale qui va représenter la trame du traitement et qui va appeler un ensemble de procédures externes pour chaque partie spécifique à réaliser. L'objectif n'est pas non plus d'éclater un code par goût de le voir éclaté, mais tout simplement de savoir repérer les parties de traitement redondant pour les réaffecter dans des procédures externes dédiées, lesquelles seront réutilisables à volonté. Ensuite, savoir rendre ces procédures ou fonctions externes réutilisables dans différents cas de figure reste, pour moi, la vraie difficulté du développeur... Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 01/07/2008
Messages:
32
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 24-07-2008 18h32
Bonjour le forum! Le problème c’est que aucune de mes solutions ne convient puisque soit quand ma userform se réaffiche, les données précedemment saisie restent, soit mes combobox ne se chargent plus. Avez-vous une idée ? |
|
|
Re: Questions userform | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 26-07-2008 12h25
Bonjour lannou, le Forum,
Citation : lannou a écrit : Citation : lannou a écrit : Sous Excel 2003, le code de ton bouton "Suivant" comme suit passe très bien : Private Sub CommandButton1_Click() Il devrait être suffisant pour décharger ton userform de la mémoire (et donc vider les données saisies par l'utilisateur) et le réafficher en rechargeant les ComboBox (dès lors où se chargement se situe bien dans l'évènement Initialize du Usf). Private Sub CommandButton1_Click() et rendre ainsi ton Usf prêt pour une nouvelle saisie... Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|