Comment récupérer la valeur d'une TextBox à partir d'une fonction d'un autre Classeur

Ratos

XLDnaute Nouveau
Bonjour à tous,
Mon problème est le suivant :

J'ai un fichier Excel ayant comme nom "SaisiePrix.xls". A l'ouverture de ce fichier Excel il y a un UserForm "UserFormSaisie" qui s'ouvre automatiquement avec plusieurs champs de saisie.
Dans cet UserForm j'ai un bouton qui m'execute une fonction public (Public Function fctCalcul()) qui se trouve dans un deuxième fichier Excel "Traitement.xls". La commande pour executer la fonction fctCalcul :
application.run("Traitement.xls!calcul")
Cette fonction doit me traiter toutes les saisies en fonction de critères.

Mon problème c'est que je n'arrive pas à récupérer les valeures saisies dans les TextBox du UserForm "UserFormSaisie" du fichier excel "SaisiePrix.xls"

Je signale que les deux fichier restent ouvert en même temps tout au long de l'opération.

Quelqu'un a-t-il une idée ou une direction à me donner ?

Merci de votre aide.

Ratos
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Comment récupérer la valeur d'une TextBox à partir d'une fonction d'un autre Cla

Bonsoir Ratos,

Un essai dans les deux fichiers joints, fichiers qui eussent été les bienvenus s'ils avaient accompagné votre question :)

Le fichier Ratos-Saisie-v1.xls comporte un bouton qui affiche une fenêtre de saisie. Cette fenêtre comporte un bouton 'Faire Somme' qui utilise une fonction 'Fairesomme' qui fait la somme des nombres compris dans Textbox et TextBox2 situés sur la feuille de saisie.

La fonction 'Fairesomme' est dans un module du classeur Ratos-Traitement-v1.xls

Le code du bouton 'Faire Somme' de la feuille de saisie dans le classeur Ratos-Saisie-v1.xls est:
VB:
Private Sub CommandButton1_Click()
  TextBox3 = Application.Run("'Ratos-Traitement-v1.xls'!fairesomme", TextBox1, TextBox2)
End Sub

Le code de la fonction FaireSomme dans le classeur Ratos-Traitement-v1.xls est:
VB:
Public Function FaireSomme(x1, X2)
  FaireSomme = CDbl(x1) + CDbl(X2)
End Function
 

Pièces jointes

  • Ratos-Saisie-v1.xls
    45.5 KB · Affichages: 79
  • Ratos-Traitement-v1.xls
    29.5 KB · Affichages: 62
Dernière édition:

Ratos

XLDnaute Nouveau
Re : Comment récupérer la valeur d'une TextBox à partir d'une fonction d'un autre Cla

Bonjour mapomme,
déjà un grand merci pour avoir pris du temps pour solutionner mon problème.

Les fichiers que vous m'avez transmsis fonctionnent bien mais ce n'est pas tout à fait ce que je voulais
faire.

Dans votre exemple vous passez les 3 paramètres "TextBox1" et "TextBox2" dans la fonction fairesomme(TextBox1, TextBox2).

Et moi dans mon développement je ne veux passer aucun paramètre dans la fonction (j'ai plus de 40 textBox)
Ce que je désire c'est de lire, les valeures saisies, directement à l'intérieur de la fonction.

Ma question c'est de savoir quelle est la syntaxe pour lire les valeures saisies dans chaque texBox depuis la fonction fairesomme()
sans avoir recours à des paramètres.

Je pense qu'il n'est pas nécessaire de vous transmettre mes deux fichiers excel car les deux fichiers que vous m'avez envoyé sont
presque bon (sauf les deux paramètres qui sont à éliminer du code)

Merci encore de votre aide.

Ratos
 

Gelinotte

XLDnaute Accro
Re : Comment récupérer la valeur d'une TextBox à partir d'une fonction d'un autre Cla

Bonjour,

Je ne comprends pas bien, il faut m'expliquer longtemps 8- //

Dans "SaisiePrix.xls", il y a le "UserFormSaisie" et les données des textbox sont traitées par la function fctCalcul du classeur "Traitement.xls".

Ces données une fois moulinées dans la function, dans quel classeur veux-tu les utiliser ? "SaisiePrix.xls" ? ou "Tratement.xlx" ?

Cette énigme résolue, les données seront utilisées dans des cellules ou dans d'autres userforms ?

G
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Comment récupérer la valeur d'une TextBox à partir d'une fonction d'un autre Cla

Bonjour Ratos, Gelinotte,

Un essai (bien tordu ma foi - il y a forcément plus simple) qui utilise une feuille auxilliaire cachée "Aux" dans le classeur "traitement" pour le passage des valeurs.

Pour utiliser les valeurs des TextBox du userForm (ou tout contrôle ayant une propriété "VALUE") dans le classeur 'traitement', on utilise : sh.Range("aux_NomControle")

avec sh=ThisWorkbook.Sheets("Aux") et avec NomControle qui est le nom du contrôle sur le userform auquel on veut faire référence.

Pour afficher les résultats des calculs de "Fairesomme", on utilise la syntaxe suivante (dans le userform):
Me.NomControle= sh.Range("aux_NomControle")

avec sh= Workbooks("Ratos-Traitement-v2.xls").Sheets("Aux") et avec NomControle qui est le nom du contrôle sur le userform auquel on veut faire référence.

Exemple: il ya un contrôle Heure (textbox) sur le userform.

Dans le classeur 'traitement', pour accéder à la valeur de Heure on écrit : msgbox sh.range("aux_heure")
Pour récupérer la valeur de heure, après calcul dans le classeur 'traitement' on écrit: me.heure = sh.range("aux_heure")
 

Pièces jointes

  • Ratos-Saisie-v2.xls
    63 KB · Affichages: 77
  • Ratos-Traitement-v2.xls
    40 KB · Affichages: 70
Dernière édition:

Discussions similaires

Réponses
7
Affichages
694
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN