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 Sub

Il 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

gillesss a écrit :

j'aimerais que lorsque j'ouvre la BD ce soit obligatoirement sur la feuille "accueil"

Dans le code du ThisWorkbook, remplace le code suivant :
Private Sub Workbook_Open()
    LogUserAction "Opened"
End Sub

par celui-ci :

Private Sub Workbook_Open()
    Sheets("BD").Select
    LogUserAction "Opened"
End Sub

Point 2 :

gillesss a écrit :

lier les boites de dialogues à la BD

Dans le code du bouton CommandButton2, tu mets :
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...

Il n'y a pas de feuille appelée "Feuil1". Tu parles de la feuille "BD" ?

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 Sub

Etant 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" Ça semble en effet plus logique !

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

6validationauto.xlsm (227.31 Ko)

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 , quel travail !!, c'est vraiment bluffant, je ne l'avais pas imaginé avec une telle configuration cette BD, en tous cas félicitation, et merci pour cette proposition cela me conviens parfaitement.

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)

en fonction du choix de l'utilisateur, je m'explique, si un enregistrement n'est pas encore résolu il faudrait pouvoir imprimer une fiche ayant la même présentation que le formulaire de saisie et auquel cas si plusieur enregistrement non résolu en fonction du "domaine" une liste comme listview.

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

1680 x 1050

3 que fais t'on, gardez les boutons option ou le combobox pour la prise en compte

garder les boutons option et supprimer le combobox

4 le fichier doit-il être verrouillé pour les autres utilisateur (acces base de données par mot de pass)

pas besoin de verrouiller le fichier nous travaillons en réseau, le dossier contenant le classeur est protéger en écriture pour les autres utilisateurs, seul les noms présents dans la colonne "nom référent" de la feuille "paramètres" sont habilités à modifier et enregistrer le classeur, à ce sujet il me semble que lors de la fermeture du classeur chaque enregistrements ou modifications permettent de connaitre le nom de celui qui les à fait. si c'est possible je suis preneur.

5 est ce que je continu dans le même esprit pour les boutons

tout à fait c'est simple, ludique, et apporte une belle finition au formulaire.

6 voulez-vous un enregistrement automatique du classeur avec fermeture sur le bouton fermé

Oui c'est l'idéal.

7 voulez-vous un bouton archivage avec suppression des données en cours

je ne comprend pas la question ???

8 quels genre de stats voulez-vous faire

les statistiques les plus importantes sont en premier lieu le nombre d'enregistrement par domaine (feuille "paramètres" B2:B50) et d'autre part le pourcentage ou proportion de "en cours" et ""résolu classé"

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, tout à fonctionner, mais il lui était impossible de ré afficher tout les enregistrements, y à t'il un moyen de supprimer les effet du filtre de recherche au lieu de fermer le formulaire ???

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 , il me semble donc plus judicieux de ne pas transferer une sauvegarde vers un autre classeur, par exemple lors de la fermeture du classeur tous les enregistrements "résolu classé" sont automatiquement basculés sur la feuille résultat, ce qui nous permet de faire ces fameuses statistiques par domaine au sein du même classeur

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

56essai-calendar.zip (7.98 Ko)

Bonsoir BOB,

C'est parfait, pour ré afficher tous les enregistrements et bien j'avais pas deviner, ça fonctionne !!!!!!!!!!

ça tombe bien je bosse demain, merci pour la proposition, j'en profiterais pour le faire essayer aux collègues et j'espère ne pas trop essuyer de critiques , je vous répondrais dans la matinée, pour vous tenir informer.

Cordialement.

rere

pour l'impression ca va comme ca?

Rechercher des sujets similaires à "prcedure vba formulaire"