Aide pour coder une userform VBA

geckotokai

XLDnaute Nouveau
EDITION : excusez-moi pour l'oubli, Excel 2003 et VB 6.3.
VOIR MESSAGE 3 POUR VOIR UN DESSIN.

Bonjour à tous, voilà je suis plutôt débutant en VB, j'ai réussi à réaliser une macro qui effectue les calculs que je souhaitais sur mes colonnes de données.

Mais là je bloque.
En fait je souhaiterais que lorsque je lance la macro, une boîte de dialogue s'ouvre avec :

EN HAUT - le titre de la fenêtre

DANS LA FENETRE
EN PREMIER
"sélectionner fichier 1" avec en dessous un menu déroulant qui permet d'aller chercher un fichier .txt dans le fichier C: toto

EN DESSOUS
"sélectionner fichier 2" avec en dessous un menu déroulant qui permet d'aller chercher un fichier .txt dans le fichier C: toto

EN DESSOUS A GAUCHE
"question A" avec en dessous un espace pour rentrer la valeur qui sera la variable a

AU MEME NIVEAU A DROITE
"question B" avec en dessous un espace pour rentrer la valeur qui sera la variable b

TOUT EN BAS A DROITE
un bouton OK

Merci d'avance et s'il manque des précisions demandez moi. J'ai essayé avec l'éditeur de fenêtre mais je n'arrive pas à trouver ce que je veux. Je pense que cela est assez simple pour une personne qui connaît bien.
Si une âme charitable pouvait me proposer un code, cela m'aiderait beaucoup.
 
Dernière édition:

geckotokai

XLDnaute Nouveau
Re : Aide pour coder une userform VBA

Bonjour Said, vous avez tout à fait raison, cela me semble clair parce que je suis dedans ^^. Je vous ai donc fait une image avec photoshop pour essayer de montrer ce que j'ai en tête. J'espère que cela vous aidera.
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Aide pour coder une userform VBA

Bonjour,
Le répertoire par défaut étant défini ("C:\Toto\", d'après ce que je comprends) et le type de fichier (".txt", dito répertoire), on peut simplifier.
A+
kjin
 

Pièces jointes

  • Form_V1.zip
    8.1 KB · Affichages: 201

geckotokai

XLDnaute Nouveau
Re : Aide pour coder une userform VBA

Merci beaucoup, c'est exactement ça.
J'ai regardé le code et comment vous aviez fait dans l'explorateur de projet et je comprends mieux la logique de celui-ci.

J'ai juste une dernière petite question : comment faire pour que ce que je choisis dans chaque item soit enregistré dans ma macro comme une variable utilisable à certains endroits de ma macro.

Pour les fichiers .txt appelés, il y a un moment dans ma macro où je demande l'ouverture d'un fichier .txt et je voudrais que ça m'ouvre celui qui a été choisis au début dans le formulaire.

Pour les boîtes Question A et Question B, il s'agit en fait d'entrer un chiffre dans chaque qui va être appelé dans la macro pour les calculs.
Dim "Question A" as Byte, quelque chose comme ça ?
 

kjin

XLDnaute Barbatruc
Re : Aide pour coder une userform VBA

Re,
J'ai juste une dernière petite question...
Non en fait il y en a 3 :D
...comment faire pour que ce que je choisis dans chaque item soit enregistré dans ma macro comme une variable utilisable à certains endroits de ma macro
Je ne sais pas ce que tu appelles ta macro, parce que pour l'instant je n'ai rien vu et donc je ne sais pas...
Pour les fichiers .txt appelés, il y a un moment dans ma macro où je demande l'ouverture d'un fichier .txt et je voudrais que ça m'ouvre celui qui a été choisis au début dans le formulaire.
Il y a plusieurs manière d'ouvrir un fichier, mais sans ta macro...
Pour les boîtes Question A et Question B, il s'agit en fait d'entrer un chiffre dans chaque qui va être appelé dans la macro pour les calculs.
Dim "Question A" as Byte, quelque chose comme ça ?
Bin si le chiffre en question est inférieur à 255 (limite d'une variable byte), pourquoi pas, et auquel cas peut-être que QuestionA = TbxQuestionA
Sans plus d'infos et surtout sans ta macro difficile de répondre plus précisément
A+
kjin
 

geckotokai

XLDnaute Nouveau
Re : Aide pour coder une userform VBA

Ce que j'appelle ma macro, c'est les calculs qui se font sur le fichier .txt importé dans excel.
Comme elle est longue et compliquée à expliquer, je mets un exemple identique mais simplifié :

Voilà j'espère que c'est plus clair.
En tous cas merci beaucoup pour ton aide.
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Aide pour coder une userform VBA

Re,
Je voulais mettre un petit laïus au regard de ton message précédent, mais finalement...
Vois le fichier joint et reviens avec des explications un peu plus claires
Le fichier texte sélectionné dans CbxFichier1 (contenu dans le répertoire C:\Toto\, pour rappel) est importé dans la cellule A1 de la feuille active puis converti (il semble que tes données soient séparées par des points-virgules)
Les valeurs saisies dans TbxQuestionA et TbxQuestionB sont renvoyées respectivement en A1 et B1 et la somme des 2 en C1
A condition d'appuyer sur le bouton Ok évidemment et non pas de quitter Excel !! (Application.Quit :mad:)
A+
kjin
 

Pièces jointes

  • Form_V2.zip
    13.2 KB · Affichages: 104

geckotokai

XLDnaute Nouveau
Re : Aide pour coder une userform VBA

Voilà je vous ai mis en fichier joint le fichier Excel Toto et les fichiers 1 et 2 à ouvrir.
Dans la macro, il y a le module 1 qui correspond à :
Sub AffUSF()
UserForm1.Show
End Sub

Et le module 2 avec la partie calcul.
Je vous ai mis des explications dans le code.

Pour compléter et j'espère que cela sera plus clair qu'avant, je voudrais que quand je lance la macro, cela lance le module 1.
Si on appuie sur Annuler, cela ferme la userform et c'est tout.
Si on appuie sur OK, cela ferme la userform et fais le module 2.

Merci. N'hésitez pas pour d'autres détails.
Votre aide m'ai précieuse et j'essaie au mieux d'expliquer.
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Aide pour coder une userform VBA

Bonjour,
A priori, tu préféres travailler directement dans le fichier "Fichier1.text"
J'ai mis quelque contrôles de saisie dans le formulaire :
A l'initialisation du formulaire, la ComboBox Fichier2, n'est pas activée ; elle n'est activée que lorsqu'un fichier est sélectionné dans la ComboBox Fichier1.
Si un fichier est sélectionné dans la ComboBox Fichier1, il est automatiquement éliminé de la liste de la ComboBox Fichier2 pour éviter d'ouvrir 2 fois le même fichier.
On ne peut pas valider :
- si une Combobox ou une Textbox est vide (Message)
- si les Textbox ne contiennent pas une valeur numérique (Message)
Reste à définir :
- ce qui se passe si j'annule l'opération (bouton Annuler)
- idem si je ferme par la croix du formulaire (il est possible de l'interdire)
- comment et quand enregistrer le fichier "Fichier1.text"
- peut-on valider, enregistrer et quitter en utilisant le bouton "OK"
A+
kjin
 

Pièces jointes

  • Toto_V2.zip
    11.3 KB · Affichages: 80

geckotokai

XLDnaute Nouveau
Re : Aide pour coder une userform VBA

Bonjour,
Reste à définir :
1- ce qui se passe si j'annule l'opération (bouton Annuler)
2- idem si je ferme par la croix du formulaire (il est possible de l'interdire)
3- comment et quand enregistrer le fichier "Fichier1.text"
4- peut-on valider, enregistrer et quitter en utilisant le bouton "OK"

Pour 1 : si on annule, je souhaite que cela ferme la userform et ferme le fichier.
Pour 2 : idem que 1
Pour 3 : merci je n'y avais pas pensé, il faudrait que le fichier s'enregistre en .txt à la fin des calculs en écrasant l'ancien fichier1.
Pour 4 : en validant OK, on ne lance que la suite avec les calculs, à la fin enregistrement de fichier1 et à la rigueur fermeture du fichier Toto sans modification.

:) Merci
 

kjin

XLDnaute Barbatruc
Re : Aide pour coder une userform VBA

Re,
Un petit mot indiquant si la solution était juste eut été bienvenue :rolleyes:
Pour 1 : si on annule, je souhaite que cela ferme la userform et ferme le fichier
Oui, mais quel fichier ?
En outre, si j'annule alors que les fichiers .txt sont déjà ouverts et qu'une partie de la macro a été executée que fait-on
Pour 4 : en validant OK, on ne lance que la suite avec les calculs, à la fin enregistrement de Fichier1.txt et à la rigueur fermeture du fichier Toto sans modification.
C'est contradictoire, les calculs se faisant sur Fichier1.txt, on ne peut enregistrer qu'après, non ?
Je te propose
- interdiction de fermeture par la croix
- Bouton "Annule", ferme les fichier .txt ouverts sans modification
- Bouton "OK", importe les données dans Fichier1.txt et effectue les calculs
- Bouton "Quitter", enregistre et ferme Fichier1.txt, ferme le formulaire (et toto.xls, Oui ? Non ?)
Le fait de dissocier "OK" et "Quitter" permet de voir ce qui se passe dans Fichier1.txt avant d'enregistrer
A+
kjin
 

geckotokai

XLDnaute Nouveau
Re : Aide pour coder une userform VBA

Ah oui d'accord j'avais pas bien compris la demande.

Tout d'abord, en effet cela fonctionne comme je le souhaite, enfin presque, mais une fois de plus c'est de ma faute, oubliant de signaler certains éléments.

En fait j'aurais voulu ne pas voir les modifications qui se font au fur et à mesure.

1- j'appelle la userform
2- je remplis les 4 items demandés (2 fichiers et 2 valeurs)
3- soit j'annule et ça ferme la userform et le fichier toto.
4- soit je valide par OK une fois tout rempli
5- j'obtiens uniquement le fichier fichier1.txt ouvert sous excel, modifié par les calculs et enregistré.

Promis après je ne vous embête plus.
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 518
dernier inscrit
hbenaoun63