Enid_the_ghost |
Le 16/03/2009 Ã 20:13 |
|
|
Bonjour à tous,
Nouvelle sur ce forum, je travaille sur la création d'une page sous VBA avec Excel (Version 2007, Windows). Je souhaite créer une page d'entrée de données (une page d'inscription avec nom, prénom et autres détails relatifs au sujet de mon travail). J'aimerais que cette page me permette d'entrer rapidement des données et qu'elle soit également consultables sur le net. Après avoir fait la mise en forme de cette page sous VBA, je dois à présent la programmer. Et là aïe, n'ayant guère de notions, ça se complique. J'aimerais tout simplement, dans un premier temps, savoir quel code je dois programmer si par exemple, je veux que les données de ma Textbox1 (il s'agit du nom de la personne) s'inscrive dans ma base de données EXcel et plus exactement dans la colonne B (colonne des noms) et que chaque nom s'y inscrivent les uns à la suite des autres dans cette colonne ?
J'espère m'être bien exprimée ?!
Merci à vous,
Clotilde |
Marculinos |
Le 16/03/2009 Ã 23:05 |
|
 Viconaute Modérateur |
Hello, Tu peux essayer ceci : Cells(2,1).select
Do until activecell.value =""
Selection.Offset(1, 0).Select
Loop
Activecell.value=Textbox1.value
Maintenant, il faut voir dans le contexte complet, ce petit bout de code ne suffisant pas à lui seul pour résoudre le problème. En effet, il faut gérer les décalages de colonnes en fonction de tous les champs de saisie. Petite astuce : As-tu pensé à l'ordre des tabulations au niveau de tes éléments de page de saisie?  @+ |
Wilder |
Le 18/03/2009 Ã 01:43 |
|
 Viconaute Modérateur |
Salut, Tu peux aussi faire:
Dim Ligne As Long
Ligne = (cells(Rows.Count,"B").End(xlUp).Row + 1)
Range("B" & Ligne) = TextBox1.text
 --

|
Enid_the_ghost |
Le 18/03/2009 Ã 18:18 |
|
|
Coucou à vous deux, Marculinos et Wilder,
Merci beaucoup pour vos réponses rapides. J'ai pris le temps d'avancer un peu dans mon travail avant de revenir poster un message ici. Finalement, j'ai trouvé un code qui marche :
---------------------------------------------------------------------- Private Sub CommandButton5_Click() With Sheets("Liste comédiens H-F") num = .Range("B65535").End(xlUp).Row + 1 .Range("B" & num).Value = TextBox1.Value End With Unload Me UsfNew.Show End Sub ----------------------------------------------------------------------- Ca semble fonctionner sans problème.
J'aimerais vous poser une autre question. Quand le formulaire est rempli et que je clique sur "enregistrer", la page ne se ferme pas. Elle enregistre les données et affiche un formulaire à nouveau vierge puisque dans mon code j'ai inscrit "UsfNew.show" J'aimerais donc, avec le bouton "quitter" que j'ai crée, fermer la page formulaire quand je n'en ai plus besoin.
Quelqu'un a une suggestion ? ;-)
Merci encore à vous de m'offrir un peu de votre temps !
Bonne journée ou bonne soirée ! |
Marculinos |
Le 18/03/2009 Ã 18:48 |
|
 Viconaute Modérateur |
La commande End conviendra. Wilder > Génial ton morceau de script. Je l'ai ré-utilisé au boulot, ça optimise le temps de traitement. Merci  |
Enid_the_ghost |
Le 18/03/2009 Ã 19:20 |
|
|
Merci Marculinos pour ton aide !
Concernant la commande "quitter", j'ai tout simplement mis "Unload Me" comme code du bouton. |
Wilder |
Le 18/03/2009 Ã 19:58 |
|
 Viconaute Modérateur |
 Marculinos, ce script, il est compatible avec office 2000,2003 et 2007. Parfois, d'une version à une autre, ça pose problèmes, mais pas avec ce script. --

|
Enid_the_ghost |
Le 18/03/2009 Ã 20:29 |
|
|
A nouveau moi !
Bon, ça avance ! Avec de la patiente et aussi votre aide, ça commence à prendre forme.
A présent, j'ai crée des ComboBox et j'aimerais pouvoir y intégrer mes listes. Dans ma base de données excel, j'ai crée des filtres pour certaines colonnes. Par exemple, pour la colonne "Yeux", j'ai une liste déroulante : Verts, bleus, noirs, bruns, pers ... J'aimerais pouvoir l'intégrer dans mon formulaire.
Comment donc faire ?
Merci encore ! |
Wilder |
Le 18/03/2009 Ã 20:50 |
|
 Viconaute Modérateur |
Pour un combobox, voici la façon de faire:
Private Sub UserForm_Initialize()
With Sheets("Nom de la feuille")
'si les choix sont dans la colonne A de la feuille
For i = 1 To .Range("A65000").End(xlUp).Row
If .Cells(i, 1) <> .Cells(i - 1, 1) Then
ComboBox1.AddItem .Cells(i, 1).Value
End If
Next
End With
End Sub
Et voilà
a+ --

|