Débutante en VBA
Hors ligneEnid_the_ghost Le 16/03/2009 à 20:13 Profil de Enid_the_ghost Configuration de Enid_the_ghost

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
Hors ligneMarculinos Le 16/03/2009 à 23:05 Profil de Marculinos Configuration de Marculinos

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?



@+
Hors ligneWilder Le 18/03/2009 à 01:43 Profil de Wilder Configuration de Wilder

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


--


Hors ligneEnid_the_ghost Le 18/03/2009 à 18:18 Profil de Enid_the_ghost Configuration de Enid_the_ghost

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 !
Hors ligneMarculinos Le 18/03/2009 à 18:48 Profil de Marculinos Configuration de Marculinos

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
Hors ligneEnid_the_ghost Le 18/03/2009 à 19:20 Profil de Enid_the_ghost Configuration de Enid_the_ghost

Merci Marculinos pour ton aide !

Concernant la commande "quitter", j'ai tout simplement mis "Unload Me" comme code du bouton.
Hors ligneWilder Le 18/03/2009 à 19:58 Profil de Wilder Configuration de Wilder

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.
--


Hors ligneEnid_the_ghost Le 18/03/2009 à 20:29 Profil de Enid_the_ghost Configuration de Enid_the_ghost

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 !
Hors ligneWilder Le 18/03/2009 à 20:50 Profil de Wilder Configuration de Wilder

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+
--


Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels