Userform pour remplir un tableau
Bonjour à tout(e)s,
Je viens de débuter en VBA, et pour ma première j'aurais bien aimé faire un Userform qui remplisse certaine cellules dans une feuille,
j'ai donc créé mon Userform et intégré ce code:
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
MsgBox "Veuillez renseigner les champs "
Else
Dim ligne As Integer
Worksheets("Information Absence").Select
Cells(A5) = TextBox1.Value
Cells(B5) = TextBox2.Value
Cells(C5) = TextBox3.Value
Cells(D5) = TextBox4.Value
Cells(E5) = TextBox5.Value
Cells(F5) = TextBox6.Value
Cells(E8) = TextBox7.Value
Cells(E9) = TextBox8.Value
Cells(E10) = TextBox9.Value
Cells(E7) = TextBox10.Value
Cells(F15) = TextBox11.Value
Cells(F16) = TextBox12.Value
Cells(F17) = TextBox13.Value
Cells(F18) = TextBox14.Value
Cells(F19) = TextBox15.Value
Unload UserForm1
UserForm1.Show
Sheets("Tableau comparatif").Visible = True
Sheets("Tableau IJSS").Visible = True
End If
End Sub
Le MsgBox fonctionne bien, cependant le tableau ne se rempli pas
De plus j'aurais bien aimé que lorsque j'ouvre mon fichier uniquement l'userform apparaisse, j'ai donc insérer ce code dans ThisWorkbook:
Option Explicit
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Application.Visible = False
UserForm1.Show 0
End Sub
Je vous remercie de votre aide précieuse
Bonjour,
Curieux qu'il n'y ait pas un message d'erreur ?
Revoir la syntaxe d'utilisation de Cells (et Range) dans l'aide Excel
A+
Même en changeant Cells par Range rien ne change
Je suis vraiment désolé mais je débute
Je suis vraiment désolé mais je débute
c'est pour ça que je préconisais de consulter l'aide pour l'utilisation de Cells ( et par la même occasion de consulter l'aide de Range)
Bonjour
il me semble que l'utilisation de cells pour renseigner une cellule ce fait avec les chiffres de ligne et colonne.
non pas avec les références de la Cellule (A16)
Dans ton exemple Pour une utilisation avec Cells j'écrirai :
Worksheets("Information Absence").Cells(5, 1).value = TextBox1.Value
Pour (A5) ligne 5 colonne 1 --> Cells(5, 1).value
Bonjour,
Pour ce genre de question et pour un débutant, il est fortement recommander de joindre un classeur comportant au moins la feuille concernée et au moins un enregistrement.
....ainsi que la feuille qui a lancé la macro.
Ça permettrait ainsi de te conseiller utilement et de t'éviter de coder "avec le pied"
Nota : Pour utiliser Range c'est également possible mais il faut utiliser des guillemets.
Ex :
Range("A16").Select
A+
J'ai un peu re-travaillé dessus mais je dois louper quelque chose
Je vous joint le fichier
Puisque tu n'as pas pensé a rendre l'application visible à la fermeture du userform ;
Tu pourrais nous mettre ton exemple sans le lancement du userform à l'ouverture du fichier ….
là c'est gonflant excel est toujours ouvert et je ne vois plus.
Après ouverture on ne comprend Rien Les informations dans les Textbox ne correspondent pas du tout à ce qui est renseigné dans le Tableau.
Userform textbox1 = jours textbox 2 = mois textbox 3 = année
et toi tu valides textbox1 dans la première colonne du tableau qui contient janvier. ?
Quand à l'année textbox3 dans la colonne C du tableau ?
le userform ne va pas du tout avec le tableau.
Commence déjà par tout rendre visible pour faire tes codes ..... la déco c'est après quand tout fonctionne.
Désolé pour la gêne
En faites c'est good ca fonctionne avec ce code
Private Sub CommandButton1_Click()
Sheets("Tableau comparatif").Visible = True
Sheets("Tableau comparatif").Activate
If TextBox1.Value = "" Then
MsgBox "Veuillez renseigner les champs "
Else
Dim ligne As Integer
Worksheets("Information Absence").Cells(5, 1) = TextBox1.Value
Worksheets("Information Absence").Cells(5, 2) = TextBox2.Value
Worksheets("Information Absence").Cells(5, 3) = TextBox3.Value
Worksheets("Information Absence").Cells(5, 4) = TextBox4.Value
Worksheets("Information Absence").Cells(5, 5) = TextBox5.Value
Worksheets("Information Absence").Cells(5, 6) = TextBox6.Value
Worksheets("Information Absence").Cells(8, 5) = TextBox7.Value
Worksheets("Information Absence").Cells(9, 5) = TextBox8.Value
Worksheets("Information Absence").Cells(10, 5) = TextBox9.Value
Worksheets("Information Absence").Cells(11, 5) = TextBox10.Value
Worksheets("Information Absence").Cells(15, 6) = TextBox11.Value
Worksheets("Information Absence").Cells(16, 6) = TextBox12.Value
Worksheets("Information Absence").Cells(17, 6) = TextBox13.Value
Worksheets("Information Absence").Cells(18, 6) = TextBox14.Value
Worksheets("Information Absence").Cells(19, 6) = TextBox15.Value
Unload UserForm1
End If
End Sub
Private Sub CommandButton2_Click()
Sheets("Tableau comparatif").Visible = False
End Sub
Avec l'onglet correspondant c'est un peut mieux
Dans ton code tu utilises : Sheets("Tableau comparatif").Activate
alors que va rentrer les données dans l'onglet "information abscence"
Private Sub CommandButton1_Click()
Sheets("Tableau comparatif").Visible = True
If TextBox1.Value = "" Then
MsgBox "Veuillez renseigner les champs "
Else
Dim ligne As Integer ' variable inutile puisque tu indiques toi même le numéro de ligne
With Sheets("Information Absence")
.Activate
Worksheets("Information Absence").Cells(5, 1).Value = TextBox1
Worksheets("Information Absence").Cells(5, 2).value = TextBox2.Value
Worksheets("Information Absence").Cells(5, 3).value = TextBox3.Value
Worksheets("Information Absence").Cells(5, 4).value = TextBox4.Value
Worksheets("Information Absence").Cells(5, 5).value = TextBox5.Value
Worksheets("Information Absence").Cells(5, 6).value = TextBox6.Value
Worksheets("Information Absence").Cells(8, 5).value= TextBox7.Value
Worksheets("Information Absence").Cells(9, 5).value= TextBox8.Value
Worksheets("Information Absence").Cells(10, 5).value = TextBox9.Value
Worksheets("Information Absence").Cells(11, 5).value= TextBox10.Value
Worksheets("Information Absence").Cells(15, 6).value = TextBox11.Value
Worksheets("Information Absence").Cells(16, 6).value= TextBox12.Value
Worksheets("Information Absence").Cells(17, 6).value= TextBox13.Value
Worksheets("Information Absence").Cells(18, 6).value = TextBox14.Value
Worksheets("Information Absence").Cells(19, 6).value= TextBox15.Value
End with
Unload UserForm1
End If
End Sub
Comprend toujours pas pourquoi rendre visible
Sheets("Tableau comparatif").Visible = True
pour après le rendre invisible
çà sert à quoi ?
Bonjour
voila une modife a toi de voir
Private Sub CommandButton1_Click()
'Sheets("Tableau comparatif").Visible = True
'Sheets("Tableau comparatif").Activate
If TextBox1.Value = "" Then
MsgBox "Veuillez renseigner les champs "
Exit Sub
End If
'Dim ligne As Integer
With Feuil1
.Cells(5, 1).Value = TextBox1
.Cells(5, 2) = TextBox2.Value
.Cells(5, 3) = TextBox3.Value
.Cells(5, 4) = TextBox4.Value
.Cells(5, 5) = TextBox5.Value
.Cells(5, 6) = TextBox6.Value
.Cells(8, 5) = TextBox7.Value
.Cells(9, 5) = TextBox8.Value
.Cells(10, 5) = TextBox9.Value
.Cells(11, 5) = TextBox10.Value
.Cells(15, 6) = TextBox11.Value
.Cells(16, 6) = TextBox12.Value
.Cells(17, 6) = TextBox13.Value
.Cells(18, 6) = TextBox14.Value
.Cells(19, 6) = TextBox15.Value
End With
Unload Me
'
End Sub
A+
Maurice
Car en faites je souhaite pas que le tableau comparatif soit visible avant que le "formulaire" soit rempli.
Donc la il s'affiche bien quand on clique sur valider et se "cache" quand on quitte.
j'ai trouver un début de code pour que excel se cache et voir uniquement le formulaire:
Dans le ThisWorkbook:
Option Explicit
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Application.Visible = False
UserForm1.Show 0
End Sub
Mais si je met ce code:
Option Explicit
Private Sub Workbook_Open()
Application.WindowState = xlMaximized
Application.Visible = True
UserForm1.Show 0
End Sub sur Private Sub CommandButton2_Click()
Ca va fonctionner?
Comprend toujours pas pourquoi rendre visible
Sheets("Tableau comparatif").Visible = True
pour après le rendre invisible
çà sert à quoi ?
Bonjour,
A rien ! bien sur. De même que le Application ....Minimized et Maximized ce ne sont que des gamineries de débutants et surtout des sources d'emm... ultérieurement ! Mébon... Faut bien que jeunesse se passe...
A+
Comprend toujours pas pourquoi rendre visible
Sheets("Tableau comparatif").Visible = True
pour après le rendre invisible
çà sert à quoi ?
Bonjour,
A rien ! bien sur. De même que le Application ....Minimized et Maximized et c'est des gamineries de débutants et surtout des sources d'emm... ultérieurement ! Mébon... Faut bien que jeunesse se passe...
Bon en l'absence du fichier de toute façon...
A+
Il y est le fichier mais tu n'as pas du revenir à la page précédente lol
Exact ! mais on ne sait rien des conditions réelle d'environnement.
Là notre ami nous a brodé un petit Workbook_Open, mais compte tenu du nombre de feuilles du classeur , il doit surement y avoir un environnement plus complexe, UserForm ou Feuille d'Acceuil... Bon moi j'suis pas devin je ne m'attarderai donc pas plus. Ce qui est certain c'est que un simple With Sheets("blabla") serait bien suffisant avec une feuille masquée. Pas besoin de se compliquer la vie.
Après faut voir l'expertise des opérateurs : Si tout le classeur à été fait de briques et de brocs, c'est un peu différent si l'ensemble constitue un projet cohérent...
Mais on ne sait pas si notre ami est l'auteur du projet ou s'il reprend un truc qui le dépasse un peu, bon...
A+
Comprend toujours pas pourquoi rendre visible
Sheets("Tableau comparatif").Visible = True
pour après le rendre invisible
çà sert à quoi ?
Bonjour,
A rien ! bien sur. De même que le Application ....Minimized et Maximized ce ne sont que des gamineries de débutants et surtout des sources d'emm... ultérieurement ! Mébon... Faut bien que jeunesse se passe...
A+
J'ai actuellement peut être 5h de lecture et d'essai sur VBA, donc oui c'est des gamineries de débutant, Excuse moi de débuter on a pas tous la chance de naître avec le langage VBA
Exact ! mais on ne sait rien des conditions réelle d'environnement.
Là notre ami nous a brodé un petit Workbook_Open, mais compte tenu du nombre de feuilles du classeur , il doit surement y avoir un environnement plus complexe, UserForm ou Feuille d'Acceuil... Bon moi j'suis pas devin je ne m'attarderai donc pas plus. Ce qui est certain c'est que un simple With Sheets("blabla") serait bien suffisant avec une feuille masquée. Pas besoin de se compliquer la vie.
Après faut voir l'expertise des opérateurs : Si tout le classeur à été fait de briques et de brocs, c'est un peu différent si l'ensemble constitue un projet cohérent...
Mais on ne sait pas si notre ami est l'auteur du projet ou s'il reprend un truc qui le dépasse un peu, bon...
A+
Et oui je suis bien l'auteur du projet... je suis gestionnaire de paie et je souhaite créer un mini formulaire qui calcul automatiquement les différents maintien de salaire, alors oui peut être que même mes feuilles de calcul comportent des erreurs,
Mais je m'en fout le résultat est là et je suis fier de moi car il a peut être tous les défauts possible pour un vrai programmateur mais en fouillant et en se démerdant comme j'ai pu j'ai obtenu le résultat escompté.
Oui, oui, je ne voulait pas être blessant : Etre débutant n'est pas une tare, mais il faut être conscient que l'à peu près et les expédients piochés à droite ou à gauche ne font jamais bon ménage très longtemps...
On a donc intérêt à chercher le meilleur... de ce que l'on est capable de comprendre.
Il y a des choses qui demandent des années de pratiques pour les digérer. Et d'autres qu'on peut mettre en place rapidement...
Bon je ne donne qu'une opinion. C'est pas un jugement !
Libre à toi d'en tenir compte ou non.
A+