Récupérer valeur remplie dans UserForm
Bonjour,
Je souhaite récupérer les données inscrites dans un textbox de UserForm sur la feuille "SORTIES" Excel pour simuler les valeurs rendement (Rdt), teneur en protéines des graines (TP) et quantité de N lessivé (Nless) en fonction des paramètres PMG et DF (valeurs que l'on met dans le textbox : pmgmin, pmgmax, paspmg, dfmin, dfmax, pasdf).
La simulation consiste à :
• faire varier la valeur du paramètre PMG entre sa valeur minimale pmgmin et sa valeur maximale pmgmax selon le pas paspmg et faire varier la valeur du paramètre DF
entre sa valeur minimale dfmin et sa valeur maximale dfmax selon le pas pasdf ;
• pour chaque nouvelle valeur du paramètre PMG et pour chaque nouvelle valeur du paramètre DF, calculer les valeurs de Rdt, TP et Nless.
Pour ce faire, on utilise les 5 cellules nommées suivantes de la feuille ENTREES :
o la cellule nommée PGR (D36) dans laquelle est copiée chaque nouvelle valeur du paramètre PMG ;
o la cellule nommée DF (D40) dans laquelle est copiée chaque nouvelle valeur du paramètre DF ;
o la cellule nommée TP (L24) qui contient la valeur de TP calculée à l’aide du modèle en fonction des valeurs des paramètres PMG et DF ;
o la cellule nommée Rdt (L25) qui contient la valeur de Rdt calculée à l’aide du modèle en fonction des valeurs des paramètres PMG et DF ;
o la cellule nommée NLess (L31) qui contient la valeur de Nless calculée à l’aide du modèle en fonction des valeurs des paramètres PMG et DF ;
• copier les résultats de la simulation dans la feuille SORTIES sous la forme d’un
tableau Excel.
Pour l'instant, voici le code :
Private Sub ToggleButtonOK_Click() 'Lorsqu'on clique sur OK, les donnes remplies sont recopiees sur l'excel
Worksheets("SORTIES").Range("A2:E1000").ClearContents 'Pour chaque nouvel remplissage, la fiche Excel est videe
'On définit les dimensions des variables
Dim pmgmin As Integer
Dim pmgmax As Integer
Dim paspmg As Integer
Dim dfmin As Date
Dim dfmax As Date
Dim pasdf As Integer
'On récupère les données entrées dans le User Form
pmgmin = Me.TextBoxpmgmin.Value
pmgmax = Me.TextBoxpmgmax.Value
paspmg = Me.TextBoxpaspmg.Value
dfmin = Me.ComboBoxdfmin.Value
dfmax = Me.ComboBoxdfmax.Value
pasdf = Me.TextBoxpasdf.Value
'Message d'erreur si dfmin>dfmax
If dfmax < dfmin Then 'On affiche un message d'erreur si dfmax est plus petit que dfmin
Call MsgBox("Erreur,la floraison ne peut pas avoir lieu avant d'avoir commencé")
Else
Dim i As Integer
i = 2
Dim datedf As Date
datedf = dfmin
Dim pmg As Integer
pmg = Me.TextBoxpmgmin.Value
'On remplit les colonnes pmg et df
Do Until pmg > pmgmax 'Première boucle, qui fait varier pmg
Do Until datedf > dfmax 'Deuxième boucle qui fait varier df
Sheets("SORTIES").Range("A" & i).Value = datedf
Sheets("SORTIES").Range("B" & i).Value = pmg
datedf = datedf + pasdf
i = i + 1
Loop
pmg = pmg + paspmg
i = i + 1
Loop
'On remplit les colonnes teneur en protéines, rendement et Nlessivé
Dim k As Integer
k = 2
Do Until IsEmpty(Worksheets("SORTIES").Range("A" & k))
Sheets("ENTREES").Range("D36").Value = Sheets("SORTIES").Range("B" & k).Value
Sheets("ENTREES").Range("D40").Value = Sheets("SORTIES").Range("A" & k).Value
Sheets("SORTIES").Range("C" & k).Value = Sheets("ENTREES").Range("L24").Value
Sheets("SORTIES").Range("D" & k).Value = Sheets("ENTREES").Range("L25").Value
Sheets("SORTIES").Range("E" & k).Value = Sheets("ENTREES").Range("L31").Value
k = k + 1
Loop
End If
Call Unload(Me) 'Quand on clique sur le bouton OK, la fenetre de dialogue se ferme
End SubLe problème, c'est que je n'ai que les valeurs pour le premier pmg entré (seule la première boucle marche).
Excusez-moi pour le très long message, pourriez-vous m'aider à débloquer ce point ?
Je vous remercie d'avance.
Bonjour,
1) Quelle version d'office utilises-tu, enregistrer le fichier au format "xlsm" te ferait gagner beaucoup de poids
2) que faut-il qui se produise exactement ?
@+