Une UserForm à la place de deux InputBox
Bonjour,
J'ai un fichier qui fonctionnait très bien grâce à l'aide de Dan. A l'usage, je me rends cependant compte qu'il est peu heureux d'avoir deux InputBox qui se suivent afin de fixer les valeurs des variables i et j. J'ai alors essayé de remplacer tout ça par une seule UserForm.
Malheureusement, mes premiers essais, dont je vous donne un partie du code ci-dessous, ne passent bien évidemment pas (en vert, les anciens codes) :
UserForm1.Show
i = TextBox1.Value 'InputBox("Montant reçu en quelle année ?")
Range("A1") = "Zinsberechnung - Eingang Freizügigkeitsleistung im Jahr " & i
Do
j = TextBox2.Value 'InputBox("Taux d'intérêt")
If Not IsNumeric(j) Then MsgBox "format incorrect !"
Loop Until IsNumeric(j)
Range("C20") = j / 100Pouvez-vous m'aider à corriger mon travail ?
Bonnes salutations.
Bonjour.
Ton problème vient de ton bouton qui doit juste faire apparaitre ta userform (userform1.show)
Ensuite, tout le code que tu as marqué (en enlevant la ligne "userform1.show) doit être placée dans le bouton "OK" de ta USF
Le bouton de la feuille:
Sub Nouvelle_annee()
UserForm1.Show
End SubLe bouton "OK" de la userform1
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j
Dim NomFichier As String, Chemin As String
Application.ScreenUpdating = False
ActiveSheet.Unprotect ("738305")
Range("C8:C14").ClearContents
i = TextBox1.Value 'InputBox("Montant reçu en quelle année ?")
Range("A1") = "Zinsberechnung - Eingang Freizügigkeitsleistung im Jahr " & i
Do
j = TextBox2.Value 'InputBox("Taux d'intérêt")
If Not IsNumeric(j) Then MsgBox "format incorrect !"
Loop Until IsNumeric(j)
Range("C20") = j / 100
Range("C20").NumberFormat = "0.00%"
Range("C8").Select
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Zinsberechnung Eingang Freizügigkeitsleistung im Jahr " & i & "-" & i + 1 & ".xls"
With ActiveSheet
.DrawingObjects.Delete
.Protect ("738305")
End With
ActiveWorkbook.Save
Chemin = ThisWorkbook.Path
NomFichier = ThisWorkbook.Name
MsgBox "Diese neue Tabelle ist unter dem Namen " & vbNewLine & "" & vbNewLine & NomFichier & _
vbNewLine & "" & vbNewLine & "unter dem Pfad " & vbNewLine & "" & vbNewLine & Chemin & _
vbNewLine & "" & vbNewLine & "gespeichert"
End SubLe bouton Fermer:
Unload MeCordialement
Salut Pass-Pass,
Merci beaucoup pour ton aide.
J'ai placé les codes proposés dans mon fichier et ça a l'air d'aller assez bien. Il y a jusque quelques problèmes :
- Pourquoi le premier champ de texte de la UserForm n'est pas active lorsque celle-ci s'ouvre ?
- Est-il possible que le bouton "OK" de la UserForm soit actif ?
- Ensuite, avec mon ancien code, le fichier de base était automatiquement refermé à la fin du code et le nouveau fichier - nouvellement créé - restait affiché à l'écran. Est-ce possible qu'il en soit encor ainsi ?
Voici mon travail en l'état :
A te relire.
Bonjour,
Dans l'Userform, mets ce code
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End SubAmicalement
Salut Dan,
Merci bien pour ton aide. Grace à ton code, le premier champ est activé à l'ouverture du formulaire. J'ai encore découvert que l'on pouvait modifier l'ordre des fonctions "TabIndex" afin que le bouton OK soit activé avant le bouton "Fermer" lorsque les champs de textes sont remplis.
En ce qui concerne le problème évoqué ci-dessous :
j'ai depuis hier trouvé une solution en plaçant une ligne de code unload me (voir le fichier actuel ci-joint).Yvouille a écrit :- Ensuite, avec mon ancien code, le fichier de base était automatiquement refermé à la fin du code et le nouveau fichier - nouvellement créé - restait affiché à l'écran.
J'ai par contre découvert un nouveau problème : Si le deuxième champ est complété avec une valeur incorrecte (avec le signe %) une fenêtre s'ouvre et indique le message "Format incorrect". Il faudrait alors cliquer sur OK et pouvoir saisir à nouveau un chiffre au bon format. Mais alors ça bloque complètement et il faut absolument forcer la fermeture d'Excel afin de pouvoir refaire un nouvel essai. As-tu une idée à ce sujet ?
A te relire.
re,
Si le deuxième champ est complété avec une valeur incorrecte (avec le signe %)....
Dans l'USF, remplace cette partir de code
Do
j = TextBox2.Value
If Not IsNumeric(j) Then MsgBox "Format incorrect !"
Loop Until IsNumeric(j)par ceci :
j = TextBox2.Value
If Not IsNumeric(j) Then MsgBox "Format incorrect !": TextBox2.SetFocus: Exit SubAmicalement
Merci pour ta réponse, Dan. Elle permet de faire avancer le schmilblick !
Maintenant, lorsqu'un chiffre au format incorrect est inscrit, il est possible d'aller le corriger après avoir cliqué sur OK dans la boîte de dialogue indiquant "Format incorrect !".
Mais cette boîte de dialogue reste ouverte, ce qui peut prêter à confusion. Elle reste encore ouverte lorsqu'apparaît la prochaine boîte de dialogue, avec le texte très long "Diese neue Tabelle ist unter dem Namen ...........". Est-ce possible de corriger encore cela ?
Bizarrement, si j'exécute la macro pas-à-pas, cette boîte de dialogue "Format incorrect" se referme juste après que j'ai cliqué sur OK.
Au plaisir de te relire.
EDIT : Tous problèmes résolus ! Je donne quelques indications complémentaires tout à l'heure. Désolé !
EDIT BIS : En fait je suis au travail et je présume que des sécurités placées en arrière plan nous jouent des drôles de tours. Lorsque le problème décrit ci-dessus se passait, j'avais un premier fichier Excel bloqué sur une autre session (je ne pouvais plus ni avancer, ni le fermer) et j'attendais que notre informaticien force la fermeture de ce premier fichier tout en faisant des essais sur une deuxième session. Mais maintenant que la première session est fermée, tous mes problèmes ont disparus. En est-ce bien la raison, je l'ignore !!
Donc encore un tout grand merci à toi, Dan, ainsi qu'à Pass-Pass.