[RESOLU] Création formulaire de saisie / base de données automatisée Excel 2003

cruiser57

XLDnaute Nouveau
Bonsoir à toutes et à tous!

Après près d'une semaine à écumer le net à la recherche d'une solution, et ayant vu qu'ici il y avait pas mal de personnes bien plus "calées" que moi, je me permets l'ouverture d'un nouveau sujet. Certes, le titre va vous sembler "déjà vu", j'avoue avoir lu de nombreuses discussions sur le même thème, mais malgré mes multiples essais en suivant les exemples, je n'arrive à rien... donc je tente ma chance et vous demande un (gros) coup de pouce!

Assez parlé, place au problème!

Je souhaite créer un masque de saisie par un Userform afin d'alimenter une base de données. Jusqu'à maintenant, la base de données existante doit être complétée manuellement ce qui rend le travail très fastidieux (et il faut avouer, assez rébarbatif vu l'attrait des grilles Excel :D)

Je vous mets en pièce jointe le fichier de base que j'ai préparé (DEMANDES) :
- 1ère feuille : accès au formulaire (bouton + macro)
- 2ème feuille : base de données

La création du formulaire n'a pas trop posée de soucis, c'est au moment de l'automatisation que je bloque...

J'ai trouvé plusieurs exemples en ligne, malheureusement trop personnalisés (et mes connaissances en VBA étant plus que sommaires, je suis incapable de les adapter à mon besoin) - j'ai également mis l'exemple le plus proche de ce que je souhaite en pièce jointe (EXEMPLE).

> Mon objectif 1 : saisir l'ensemble des données dans le formulaire, cliquer sur "Enregistrer la demande" pour que les données soient transposées dans la feuille "Demandes".

> Mon objectif 2 : permettre de retrouver une demande soit par le champ "NOM" ou "IDENTIFIANT" (pour retrouver une demande en particulier), soit par le champ "FORMATION" (pour lister l'ensemble des demandes pour une formation), en cliquant sur "Lancer la recherche".

> Mon objectif 3 : comme pour l'objectif 1, je souhaite pouvoir compléter la feuille de données en renseignant les champs de la zone "Cadre réservé aux référents" après avoir cliqué sur OK.

Dans le formulaire, la saisie est soit en texte libre, soit par liste déroulante. Je sais qu'Excel permet de définir les propriétés de chaque champ, mais je n'arrive pas à le faire dans l'Userform (par exemple limiter la saisie à 7 caractères dans une zone de texte ou n'autoriser que la saisie numérique, etc.)

Chaque champ du formulaire correspond à une colonne de la base de données.

Voilà, je pense avoir fait le tour de mon projet...

Je sais que j'en demande beaucoup, et j'espère que certain(e)s d'entre vous trouveront du temps pour m'aider à le concrétiser! :)

Merci beaucoup et à très bientôt!

Bonne soirée à toutes et à tous.

Thomas
 

Pièces jointes

  • DEMANDES.xls
    33 KB · Affichages: 487
  • EXEMPLE.xls
    69.5 KB · Affichages: 517
  • DEMANDES.xls
    33 KB · Affichages: 525
  • EXEMPLE.xls
    69.5 KB · Affichages: 582
  • DEMANDES.xls
    33 KB · Affichages: 531
  • EXEMPLE.xls
    69.5 KB · Affichages: 583
C

Compte Supprimé 979

Guest
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Bonjour Cruiser57 et bienvenue sur ce forum

Je sais que j'en demande beaucoup
Effectivement ...:rolleyes:
Nous avons tous commencé un jour, mais nous avons évolué petit à petit

Il faut déjà commencer par comprendre la programmation objet,
savoir que tu peux changer le nom d'un control,
et mettre du code dans celui-ci.

Si tu veux des réponses, prends chaque problème un par un
De plus des recherches sur le forum te permettrons d'obtenir des réponses

A+
 

cruiser57

XLDnaute Nouveau
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Bonsoir BrunoM45,

Merci pour ta réponse. J'avoue que mes essais, aboutissant toujours sur des erreurs de code et autres échecs, m'avaient plutôt découragé... J'ai repris les choses en main, j'ai fouillé, j'ai lu pas mal de choses ici et là, et pour le moment mon projet avance plutôt bien (enfin... pour moi qui suis novice ;))

Je me permets une question à toi et au forum (je prends les problèmes un par un et voici le premier :D) : je souhaiterais forcer le format de plusieurs TextBox :

- une au format date (jj/mm/aaaa) pour que les "/" soient placés automatiquement quelque soit la saisie de l'utilisateur dans la TxtBox de l'UF (exemple : la saisie est 180112 ou 18/01/12 ou encore 18/01/2012, la cellule affichera dans tous les cas 18/01/2012).

J'ai trouvé deux exemples de code :
n°1) Range("A1").Value = Format(TextBox1, "mm/dd/yy")
n°2)
If IsDate(Me.TextBox1) Then
Range("B1").NumberFormat = "dd/mmm/yyyy"
Range("B1").Value = CDate(Me.TextBox1)
Else
MsgBox "Date Invalide"
End If

Je pensais avoir compris comment les adapter à mon "cas", mais il faut croire que les débutants sont un peu présomptueux ;)

- l'autre au format "0000000X", soit 7 chiffres et une lettre. Et là, aucun indice trouvé sur la toile :(

Je remets le fichier à jour en PJ histoire que ce soit un peu plus parlant.

J'espère que tu trouveras un peu de temps/curiosité/pitié(?) pour me donner un coup de main...? :D

Bonne fin de soirée à toi et à tous!
 

Pièces jointes

  • DEMANDES.xls
    51 KB · Affichages: 297
  • DEMANDES.xls
    51 KB · Affichages: 298
  • DEMANDES.xls
    51 KB · Affichages: 271
C

Compte Supprimé 979

Guest
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Salut Cruiser57

Si joint ton fichier avec les modifications

Pour les dates, perso, j'utilise un control "Calendar" dans un USF
qui permet de sélectionner directement une date plutôt que de la saisir

Pour te 7chiffres + 1lettre je suppose que c'est l'identifiant,
j'ai mis du code pour tester la validité

J'ai ajouté une feuille "Params"
qui te permets de modifier tes listes de Combobox à volonté plutôt qu'en dur dans le code

A+
 

Pièces jointes

  • Cruiser57_Demande1.xls
    77 KB · Affichages: 680

cruiser57

XLDnaute Nouveau
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Bonsoir Bruno,

Tout d'abord : un grand merci pour tes retours et pour le fichier modifié!

C'est clair que le code est déjà beaucoup plus lisible comme ça ;) Par contre, à l'ouverture du fichier j'ai le message d'erreur "Impossible de charger le objet car il n'est pas disponible sur cette machine." Si j'essaye de lancer l'UF par le bouton "Accès au formulaire" Excel plante. Il faut que je supprime la partie du code ci-dessous pour pouvoir le lancer :

Option Explicit
Public ObjDate As Object

J'ai la même erreur quand je souhaite accéder à une TextBox Date, suivi de l'erreur "Erreur de compilation : Variable non définie" et en cliquant sur ok j'ai le code ci-dessous qui s'affiche :

Private Sub UserForm_Initialize()
On Error Resume Next
If ObjDate = "" Or ObjDate Is Nothing Then
Me.Calendar1.Value = Now
Else
Me.Calendar1.Value = ObjDate.Value
End If
On Error GoTo 0
End Sub

Saurais-tu m'expliquer ce qui "coince" et comment régler le problème? Dois-je installer un module complémentaire sur Excel?

Merci encore, ton coup de main est vraiment très appréciable (autant pour l'avancement de mon projet que pour mes connaissances personnelles)
 
C

Compte Supprimé 979

Guest
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Re,

Désolé, j'ai oublié un truc important, j'ai Access sur mon poste et j'utilise MSCAL.OCX
pour le calendrier

2 possibilités :
1) tu télécharges le fichier joint et les fichiers du dossier OFFICE11 tu les mets dans le dossier correspondant
pour enregistrer l'OCX si tu es sous Seven 64bits tu lances le fichier ".bat" telquel
sinon il faut virer " (x86)" avec l'espace devant

2) On change de méthode et on utilise l'APi windows, mais ce ne sera pas compréhensible pour un non initié :eek:

A+
 

Pièces jointes

  • _MsCal.zip
    93 KB · Affichages: 244

cruiser57

XLDnaute Nouveau
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Merci de la réponse rapide, ta première phrase m'a donné un espoir de solution simple et rapide : j'ai retrouvé mon CD d'Office, j'ai installé Access, et tout fonctionne! :)

Avant de me plonger dans la seconde partie de mon UF (la recherche d'une demande), je me permets une question "esthétique"... Est-ce possible à l'ouverture de l'UF de définir le champ sur lequel le curseur doit être positionné et l'ordre de saisie par la touche TAB?
Actuellement, le curseur est positionné sur la Combobox9 à l'ouverture ; et quand on démarre la saisie d'une demande, si on utilise TAB pour naviguer, l'ordre des champs est plutôt "chaotique"... Est-ce du à l'ordre dans lequel j'ai insérer les éléments? Suffit-il de changer un paramètre ou faut-il refaire l'UF entier?

J'espère ne pas trop abuser de ton aide :) Merci beaucoup!
 
C

Compte Supprimé 979

Guest
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Re,

Pour l'ordre de tabulation, il suffit :
1) de sélectionner le frame que tu souhaites mettre en ordre
2) Menu -> Affichage -> Ordre de tabulation
Dans la fenètre tu organises tes controles comme tu le souhaites

Petit conseil, tu devrais renommer chaque controle pour plus de faciliter par la suite
(Name) TextBox1 => Tb_Nom
(Name] ComboBox8 => Cb_Agence
Etc ...

A+
 

cruiser57

XLDnaute Nouveau
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Bonsoir Bruno, bonsoir le forum,

Encore merci pour ton aide dans mon projet. Semaine un peu chargée, quelques soirées passées sur le fichier et je coince à nouveau... du coup je me permets de vous ennuyer encore une fois le forum et toi ;)

J'ai retravaillé un peu mon fichier, l'Usf et le code. La première fonction "enregistrer une nouvelle demande" fonctionne à merveille, et je suis vraiment fan du control Calendar (un rien impressionne un novice je sais).

Ce que je cherche à faire cette fois :

Faire en sorte de pouvoir rechercher et/ou modifier une demande déjà enregistrée. Une demande enregistrée par une personne pourrait être complétée par une autre ensuite.

1ère saisie : la validation de l'Usf remplit les colonnes A à L (jusque là aucun soucis)
2ème saisie : la validation de l'Usf créé une nouvelle ligne pour remplir les colonnes M à R

Le problème est que je voudrais pouvoir "revenir" sur la demande déjà enregistrée (A à L) pour la compléter (M à R).

Mon idée était de faire une recherche par le champ "Identifiant" (doublon impossible, chaque identifiant est unique) dès l'entrée dans l'Usf, si une demande a déjà été saisie les infos sont rappatriées et il est possible de compléter les champs vides (M à R), si aucune demande alors c'est un premier enregistrement "classique" (les controles positionnés sur l'Usf seront sûrement plus parlant)

J'ai fouillé les forums et lu pas mal de "cours en ligne", mais mes essais sont restés vains.

Puis-je (encore) espérer un coup de main?

Et sinon, j'ai suivi ton conseil en renommant l'ensemble des controles. Je mets la "dernière" version du fichier en pièce jointe.

Merci beaucoup!
 

Pièces jointes

  • DEMANDES.xls
    71 KB · Affichages: 404
  • DEMANDES.xls
    71 KB · Affichages: 482
  • DEMANDES.xls
    71 KB · Affichages: 479
C

Compte Supprimé 979

Guest
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Salut Cruiser57,

C'es bien pour le renommage des controles, plus simple pour s'y retrouver non ?
Sinon, tu trouveras ci-joint ton fichier modifié avec en plus 1 enregistrement pour test

A+
 

Pièces jointes

  • Cruiser57_DemandeV2.1.xls
    100 KB · Affichages: 759
Dernière modification par un modérateur:

cruiser57

XLDnaute Nouveau
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Bnojour Bruno,

A peine 2h pour une réponse avec un boulot qui me prendrait 2 semaines ;) Merci beaucoup.

Juste 2 choses : j'ai testé le fichier, et le problème c'est que le code récupère bien les données par contre il ne complète pas la ligne déjà enregistrée dans la feuille DEMANDES, il en ajoute une nouvelle (du coup il y a un doublon). Deuxième chose, est-il possible de faire sauter la partie de ton code qui empêche la modification des données déjà saisies? (quand un identifiant est entrée, il est impossible de modifier les contrôles correspondant aux colonnes A à L).

Merci à toi et bon début de journée!
 
C

Compte Supprimé 979

Guest
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Re,

J'ai mis dans mon post précédent, le fichier avec le code modifié

Deuxième chose, est-il possible de faire sauter la partie de ton code qui empêche la modification des données déjà saisies? (quand un identifiant est entrée, il est impossible de modifier les contrôles correspondant aux colonnes A à L).
En revanche, je m'inquiète ... si tu ne vois pas dans mon code ou se trouve la procédure de bloquage des controles !?

A+
 

cruiser57

XLDnaute Nouveau
Re : Création formulaire de saisie / base de données automatisée Excel 2003

Un seul mot : MERCI !

J'ai regardé ton fichier en fin de journée et ça y est : je pense que tout y est, tout fonctionne, tout est exactement comme je l'avais imaginé! J'ai simplement retravaillé l'esthétique en ajoutant quelques explications sur l'onglet d'accueil et 2-3 labels dans l'Usf pour aider à l'utiliser.

En revanche, je m'inquiète ... si tu ne vois pas dans mon code ou se trouve la procédure de bloquage des controles !?
A+

J'avais effectivement trouvé ton code de blocage mais tout avait l'air si parfait que je n'osais rien toucher de peur de faire planter le code ;) Merci beaucoup à toi pour ton aide dans la création de cet outil qui va grandement faciliter le quotidien de mes collègues (et du mien pour le coup ^^)

Je te tiendrai au courant de leur réaction une fois le fichier diffusé :)

Bonne soirée et merci encore.

A bientôt!

Tom
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko