Prcédure VBA d'un formulaire
Bonjour à toutes et à tous.
débutant au plus bas dans les macros et la programmation VBA, j'ai créer un classeur avec un formulaire de saisie,
malheureusement je patine dans la semoule depuis quelque jours.
Voici donc mon problème:
J'ai réussi à écrire cette procédure pour un bouton de validation du formulaire:
Private Sub CommandButton2_Click()
Sheets("BD").Cells(2, "A").Value = UserForm1.TextBoxnuméro.Value
Sheets("BD").Cells(2, "B").Value = UserForm1.TextBoxdate.Value
Sheets("BD").Cells(2, "C").Value = UserForm1.ComboBoxdemandeur.Value
Sheets("BD").Cells(2, "D").Value = UserForm1.ComboBoxzone.Value
Sheets("BD").Cells(2, "E").Value = UserForm1.TextBoxlocalisation.Value
Sheets("BD").Cells(2, "F").Value = UserForm1.ComboBoxdomaine.Value
Sheets("BD").Cells(2, "G").Value = UserForm1.TextBoxdéfaut.Value
Sheets("BD").Cells(2, "h").Value = UserForm1.TextBoxmesureprises.Value
Sheets("BD").Cells(2, "i").Value = UserForm1.TextBoxdatetraitement.Value
Sheets("BD").Cells(2, "j").Value = UserForm1.ComboBoxréflog.Value
Sheets("BD").Cells(2, "k").Value = UserForm1.TextBoxactionréalisée.Value
Sheets("BD").Cells(2, "l").Value = UserForm1.ComboBoxavancé.Value
Sheets("BD").Cells(2, "m").Value = UserForm1.TextBoxremarques.Value
End Sub
le problème, c'est que le formulaire ne ce vide pas après avoir cliquer sur le bouton, de plus lorsque je rentre de nouvelles données elles écrase les précédentes ???? et là je sèche.
j'aimerais également que lors de chaque enregistrement de données, un numéro s'insert automatiquement dans la colonne "A", est-ce possible.
Merci pour votre aide et au plaisir de vous lire.
Cordialement, Gilles
Bonjour gilles,
N'ayant pas de fichier, voici un code fait à l'aveuglette :
Private Sub CommandButton2_Click()
Dim derlign As Long
With Sheets("BD")
derlign = .Range("a65000").End(xlUp).Row + 1
.Cells(derlign, "A").Value = .Cells(derlign - 1, "A").Value + 1
.Cells(derlign, "A").Value = UserForm1.TextBoxnuméro.Value
.Cells(derlign, "B").Value = UserForm1.TextBoxdate.Value
.Cells(derlign, "C").Value = UserForm1.ComboBoxdemandeur.Value
.Cells(derlign, "D").Value = UserForm1.ComboBoxzone.Value
.Cells(derlign, "E").Value = UserForm1.TextBoxlocalisation.Value
.Cells(derlign, "F").Value = UserForm1.ComboBoxdomaine.Value
.Cells(derlign, "G").Value = UserForm1.TextBoxdéfaut.Value
.Cells(derlign, "h").Value = UserForm1.TextBoxmesureprises.Value
.Cells(derlign, "i").Value = UserForm1.TextBoxdatetraitement.Value
.Cells(derlign, "j").Value = UserForm1.ComboBoxréflog.Value
.Cells(derlign, "k").Value = UserForm1.TextBoxactionréalisée.Value
.Cells(derlign, "l").Value = UserForm1.ComboBoxavancé.Value
.Cells(derlign, "m").Value = UserForm1.TextBoxremarques.Value
End With
Unload UserForm1
UserForm1.Show
End SubIl doit y avoir 2-3 trucs à fignoler, à toi de me dire.
Bonsoir VBA news,
j'ai copier coller la procédure, désolé ça plante, c'est vrai que avec le fichier c'est plus simple.
voici donc le classeur, en espérant que vous arriverez à m'aider
dans l'attente de vous lire, cordialement, Gilles.
Re,
Pour le point 1
Dans le code du ThisWorkbook, remplace le code suivant :gillesss a écrit :j'aimerais que lorsque j'ouvre la BD ce soit obligatoirement sur la feuille "accueil"
Private Sub Workbook_Open()
LogUserAction "Opened"
End Subpar celui-ci :
Private Sub Workbook_Open()
Sheets("BD").Select
LogUserAction "Opened"
End SubPoint 2 :
Dans le code du bouton CommandButton2, tu mets :gillesss a écrit :lier les boites de dialogues à la BD
Il n'y a pas de feuille appelée "Feuil1".gillesss a écrit :' Comprenez pour la première ligne : La valeur de la case A8 de la Feuil1 est égale à la valeur contenue dans le TextBox1 du Userform1
' Même processus pour les autres cases...
Si c'est bien ça et si j'ai bien compris, pour le code du CommandButton2, mets ce code :
Private Sub CommandButton2_Click()
Dim derlign As Long, valeur As Long
With Sheets("BD")
.Select
derlign = .Range("a65000").End(xlUp).Row + 1
If Not IsNumeric(.Cells(derlign - 1, "A").Value) Then
valeur = 0
Else
valeur = .Cells(derlign - 1, "A").Value
End If
.Cells(derlign, "A").Value = valeur + 1
'.Cells(derlign, "A").Value = UserForm1.TextBoxnuméro.Value
.Cells(derlign, "B").Value = UserForm1.TextBoxdate.Value
.Cells(derlign, "C").Value = UserForm1.ComboBoxdemandeur.Value
.Cells(derlign, "D").Value = UserForm1.ComboBoxzone.Value
.Cells(derlign, "E").Value = UserForm1.TextBoxlocalisation.Value
.Cells(derlign, "F").Value = UserForm1.ComboBoxdomaine.Value
.Cells(derlign, "G").Value = UserForm1.TextBoxdéfaut.Value
.Cells(derlign, "h").Value = UserForm1.TextBoxmesureprises.Value
.Cells(derlign, "i").Value = UserForm1.TextBoxdatetraitement.Value
.Cells(derlign, "j").Value = UserForm1.ComboBoxréflog.Value
.Cells(derlign, "k").Value = UserForm1.TextBoxactionréalisée.Value
.Cells(derlign, "l").Value = UserForm1.ComboBoxavancé.Value
.Cells(derlign, "m").Value = UserForm1.TextBoxremarques.Value
End With
Unload UserForm1
UserForm1.Show
End SubEtant donné que la colonne A est remplie automatiquement, le textbox appelé "TextBoxnuméro" n'a plus lieu d'être ?
Pour les points suivants, je crains de manquer de temps pour regarder tout ça
Bonjour VBA News,
Un GRAND MERCI, pour ton aide, je te suis très reconnaissant.
1°) le code suivant ne fonctionnait pas :
Private Sub Workbook_Open()
Sheets("BD").Select
LogUserAction "Opened"
End Sub
J'ai donc retiré un élément pour obtenir ceci:
Private Sub Workbook_Open()
Sheets("BD").Select
End Sub
et maintenant lorsque j'ouvre le classeur je suis bien sur la feuille "accueil" c'est tout simplemant génial.
Ensuite pour le code de prcédure lorsque je clique sur le bouton "valider" de l'USF également parfait, ça s'intègre parfaitement avec un numéro d'attribution automatique.
Je suis comblé !!!!!!!!!!
Etant donné que cette base est encore en construction, je poursuivrais sur le même fil de discution afin que cette base serve d'exemple aux bras cassé d'Excel comme moi qui ont besoin d'aide pour progresser.
Encore une fois MERCI !!!
Cordialement Gilles.
-- 20 Fév 2010, 15:30 --
OUPS,
c'est quand même mieux si je laisse le classeur afin de regarder le fonctionnement !!!!
Donc, à l'ouverture du fichier, tu te places sur la feuille "accueil" et pas "BD"
Bonjour, VBA news,
C'est exact, comme cela chaque utilisateur gère l'ensemble du classeur sur la même feuille, ça devrais dans le futur une fois finalisé limiter les erreurs de saisie, mais je recherche une solution pour que lorsque j'ouvre le formulaire et que j'entre des données il reste sur la page accueil, dans le fichier joint ce n'est pas la cas une fois les données entrées ça bascule sur la feuille "BD".
Maintenant il me reste à créer, ou alors à réutiliser le même USF de saisie pour effectué une recherche multi-critères,
Exemple:
Trouver les enregistrements qui répondent au critères:
Zone
Domaine
État de la demande
en fonction de la liste de choix (je ne sait pas si je suis bien claire dans mes explications??)
je recherche sur le forum et auquel cas si je n'ai pas de réponses je poursuit sur ce fil, je vous tiens informé.
Si tu as les solutions, j'en serais comblé.
@@++++ Gilles.
Bonjour gilless
j'avais pensé a un truc du genre
il n'est pas fini
pour modifier,il faut faire un double clic sur le tableau de l'userform
je n'ai pas encore fais la recherche
a te relire
Bob
Bonjour à tous,
Juste en passant, sacré travail que tu as fait là Bob !
Bonjour le forum
merci vba-new mais le travail n'est pas encore fini
Pour un peu plus d'explication
le champ date est verrouillé et oblige l'utilisateur a saisir la date avec le calendar
un double clic sur le listview (tableau de user) pour avoir la possibilité de modifier l'enregistrement selectionné
un clic sur les titres du listview pour trier en décroissant ou en croissant
est ce que cela fonctionne chez vous gilless
cordialement
Bob
Bonjour le forum,
Bonjour BOB, VBA,
Que dire, j'en suit baba
pour vous répondre BOB oui ça fonctionne pas de problèmes particuliers rencontrés vous avez parfaitement cerné l'utilisation et l'esprit du classeur, étant donné que ce classeur est utilisé par plusieurs personnes et que autant de données sont entrées chaque jour, est-ce possible de retrouvé des enregistrements répondant à un seul critère, ou selon le choix à deux ou trois critères spécifiques.
Je m'explique, une recherche est faite pour retrouver dans le bâtiment de la "Zone 2" tous les défauts concernant le "Domaine" "Bâtiment - électricité" qui sont encore "en cours" afin de les traiter dans la journée.
Où alors;
tout les enregistrements qui correspondent aux critères "domaine" "véhicules - EPA"
Est-ce possible ??? auquel cas autant pouvoir les consulter sur l'Userform2
J'espère ne pas trop vous en demander BOB, VBA.
Dans l'attente de vous lire et avec tous mes remerciements, cordialement.
Gilles.
Bonsoir gillesss
si la strucure de la bd ne change pas je vais m'occuper de la recherche des différents critères
cela va me prendre quelques jours pour vous proposer quelque chose de correct et exploitable
petite question
a quelle fréquence la base de données va-t-elle être renseignée?
les données très anciennes peuvent elles être supprimée?
cordialement
Bob
Bonsoir BOB,
Tous d'abord un grand merci pour l'intérêt que vous porter à mon projet, et comme la patience est mère de toute les vertus, pas de problème prenez le temps qu'il vous faut
Pour répondre à votre question, oui le fréquence est élevée, la base de données est ouverte tous les jours (365 fois), et compte en moyenne un quinzaine d'enregistrements par jours, je pense que les enregistrements de l'année suffisent largement, en fin d'année nous ferons une sauvegarde sur CD au cas où, l'important étant qu'au cours de l'année la base nous permettent de faire un suivi des demandes (via document papier appelé fiche défaut); des statistiques mensuelle et annuelle sur les postes qui demande beaucoup d'attention. Et au 31 décembre on fait un copier collé de la base, pour ensuite suffit juste d'effacer les enregistrements de la feuille "BD" pour repartir avec un classeur vierge, sauf pour la feuille "paramètres" qui elle est évolutive.
J'ai trouvé un fichier qui me semble à peu de choses près équivalent à l'utilisation, surtout, enfin je pense, dans la façon de rechercher des types d'enregistrements, une approche qui peut peut-être t'inspirer.
Bon courage à vous, j'espère que ce fil va pouvoir en intéresser plus d'un.
Impatient de pouvoir découvrir vos astuces, merci par avance.
Au plaisir de vous lire
-- 22 Fév 2010, 21:40 --
Re bonsoir BOB,
je n'avais pas remarquer le lien pour le fichier dans votre réponse, excuser moi, j'ai regarder, c'est très bien comme ça, simple et pas trop de complexité, les boutons: impression, recherche, et effacer sont vraiment sympa
Par contre il y a un petit bug, lorsque j'entre un enregistrement une boite de dialogue VBA s'affiche avec l'alerte suivante:
"erreur d'exécution 13"
"incompatibilité de type"
puis-je me permettre une requête, afin de faciliter un peu plus l'entrée des données, est-ce possible de rajouter le même "Calendar" dans le "textebox" date de traitement LOG ???
Au plaisir, bien cordialement.
Gilles
Bonsoir gillesss
l'erreur est réparée
c pas grave
encore quelques renseignements
1 les données doivent d'être imprimées sous quelle forme? une page par problème ou liste comme listview
si une page sous quelle forme(poster un exemple)
2 je voudrais connaitre la définition de l'écran,pouvez vous faire une impression d'ecran quand l'user est affiché afin de voir la place disponible en largeur et hauteur
3 que fais t'on, gardez les boutons option ou le combobox pour la prise en compte
4 le fichier doit-il être verrouillé pour les autres utilisateur (acces base de données par mot de pass)
5 est ce que je continu dans le même esprit pour les boutons
6 voulez-vous un enregistrement automatique du classeur avec fermeture sur le bouton fermé
7 voulez-vous un bouton archivage avec suppression des données en cours
8 quels genre de stats voulez-vous faire
cordialement
Bob
Bonjour BOB,
en réponse à vos questions:
1 les données doivent d'être imprimées sous quelle forme? une page par problème ou liste comme listview
si une page sous quelle forme(poster un exemple)
pour la mise en forme un tableau simple suffit.
2 je voudrais connaitre la définition de l'écran,pouvez vous faire une impression d'ecran quand l'user est affiché afin de voir la place disponible en largeur et hauteur
3 que fais t'on, gardez les boutons option ou le combobox pour la prise en compte
4 le fichier doit-il être verrouillé pour les autres utilisateur (acces base de données par mot de pass)
5 est ce que je continu dans le même esprit pour les boutons
6 voulez-vous un enregistrement automatique du classeur avec fermeture sur le bouton fermé
7 voulez-vous un bouton archivage avec suppression des données en cours
8 quels genre de stats voulez-vous faire
Dernier point et pas des moindre, j'ai essayer de tester la base à mon bureau (travail), malheureusement il m'est impossible de l'ouvrir, l'édideur VBA m'indique un problème sur le "calendar", je pense que l'option n'est pas installée et je ne suis pas l'administrateur, donc impossible de faire des complément d'installation (pour info "Office 2003"), par contre à la maison pas de souci.
J'espère ne pas être un peu trop exigeant (comme les femmes), et avoir répondu au questions.
Bon courage à vous, cordialement.
Gilles
Bonsoir gillesss
est-il possible de voir l'administrateur pour résoudre le problème ou non
même en allant dans outils complémentaire de l'éditeur vba vous ne pouvez pas installer le calendar
même en faisant un clic droit dans la boite a outil vba vous ne pouvez pas installer le calendar
si ce n'est pas possible je ferais différemment mais ce sera plus long
en ce qui concerne les modifs
un clic sur la ligne du tableau que vous voulez imprimer puis impression pour voir
clic sur bouton archivage pour archiver et supprimer tous les enregistrements résolus
j'espère que l'on avance et pas le contraire
cordialement
Bob
Bonjour BOB,
j'ai regarder le dernier classeur, excellent c'est vraiment un super travail.
Je me suis permis de le faire tester par mon épouse qui ne connais vraiment rien à Excel, je lui ai demander d'entrer des données, pas de soucis particuliers, sauf lorsque elle à fait une recherche,
Au sujet du bouton "archivage données", les connaissances en informatique de certains de mes collègues ce situent à l'age de pierre et pour d'autres à la console ATARI
A ce stade tout les objectifs sont atteint et ce grace à votre gentillesse , Je vous rassure BOB, vous avez fait un travail super et ont avance à grand pas.
Bien cordialement.
-- 25 Fév 2010, 14:03 --
OUPS, j'oubliais en ce qui concerne les "CALENDAR" ont reste sur cette configuration, dans le cas ou l'administrateur refuse de compléter ces options et bien nous verrons à ce moment là, en espérant que ce soit possible ???
Bonsoir gillesss
pour ré afficher tous les enregistrements il suffit de faire une recherche sans critère un coup de gomme et un coup de jumelle
en ce qui concerne le calendar je me demandais si cela venait du calendar ou de la date
je vous prépare un classeur pour essayer au boulot avec un calendar et un date and picker pour test
cordialement
Bob
-- 25 Fév 2010, 18:22 --
Re
voici le fichier test
Bonsoir BOB,
C'est parfait, pour ré afficher tous les enregistrements et bien
ça tombe bien je bosse demain, merci pour la proposition, j'en profiterais pour le faire essayer aux collègues
Cordialement.
rere
pour l'impression ca va comme ca?