Correction de Codes d'un formulaire de saisie Uerform

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour,
Je débute dans le VBA, Codes, Formulaire de saisie dans une base de données.
J'en appelle à la pédagogie et la précision de spécialistes dans ce domaine pour m'aider à corriger et mettre en place les codes selon la liste ci-jiointe.

En page 1 : mon formulaire de saisies, ses fenêtres, les relations de codes dans VBa, leurs positionnements souhaités dans la base BD.

En page 2 : le résultat de mon fastidieux travail de mise en place de la codification. Deux mois de recherche, d'erreurs cumulées et à chaque fois des messages d'erreurs...

En plus, mes six déroulants de formulaire ne me donnent même pas le contenu préparé dans la base, en feuille 'paramètres' ! le codification m'est encore totalement inconnue.

Merci de m'aider à mettre tout cela "en ordre". Pour l'ordre j'a fait de mon mieux.
Mon but : y voir plus clair, repartir sur de nouvelles bases pour mieux comprendre ce langage VBA qui ne m'est pas commun encore dans Excel.
Webperegrino
 

Pièces jointes

  • Liste codes VBA Formulaire-Transfert dans Base 'BD'.xls
    49 KB · Affichages: 140

jeanpierre

Nous a quitté
Repose en paix
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonjour Webperegrino,

Tu parles de VBA et ton fichier en est vide, je suppose même qu'il doit y avoir un USF...

Si ton fichier est trop lourd avec ces éléments, prends la bonne habitude de zipper tes fichiers et dans tous les cas il passeront sur le forum.

Bon AM.

Jean-Pierre
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Correction de Codes d'un formulaire de saisie Uerform

Excuse-moi Jean-Pierre,
Je te remercie toutefois pour ta rapide réponse.

Désolé donc pour ce manque de connaissance, aussi, dans l'usage du vocabulaire spécial de Excel (VBA, USF...).
Je suis en formation autodidacte grâce à ce Forum où je trouve des idées lumineuses pour progresser.
C'est tout en votre honneur, toi et les autres spécialistes du Forum, que de nous aider, nous, les 'gueux' de Excel.

Mon fichier faisant 1463 ko, zippé à 243 ko, avec données confidentielles, et m'obligeant à partir sur des heures de travail pour le réduire pour 'passer' sur le forum, même zippé, j'avais préféré :
- faire Alt + F11,
- cliquer sur la fenêtre Date de l'Userform1 dont une image était jointe,
- pour accéder à la page entière de codification... que j'ai copiée...
- et collée en feuille n° 2 dans le fichier excel simple annexé à mon message, les critères de liaisons étant indiqués en feuill 1 avec son image du formulaire.

Je continue donc à fureter dans le Forum et arriverai, j'espère, dans quelques semaines (ou mois) à mieux comprendre mes erreurs dans cette codification de liaison formulaire-base de données.

Il paraît qu'un Breton est têtu, et arrive finalement à ses fins...
Je repars donc dans mes recherches, ma progression dans excel m'a aussi permis d'aider quelques personnes dans mon entourage : effet acquis du Forum - souci du partage de connaissances -.

Merci pour tes encouragements et tes nombreuses interventions toujours nourrissantes sur ce Forum.
Bien amicalement
Webperegrino
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonjour le fil, bonjour le forum,

Webperegrino, essaie de construire un fichier exemple basé sur ton original, sans données confidentielles mais contenant juste l'éssentiel avec la même structure. Les onglets, l'UserForm etc... Cela permettrait de t'aider bien plus vite sans avoir à tout refaire. Tes explications sont claires, seul manque l'Userform...
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Correction de Codes d'un formulaire de saisie Uerform

Jean-Pierre, Robert, Le Forum,
Bonsoir,

J'ai tenté de limiter le contenu de mon fichier.
J'espère qu'il passera.

Pour le rangment j'ai découvert une solution peut-être plus compacte que ce que j'ai fait, quelque chose du genre :
Private Sub UserForm_Initialize()
i= Range("A300").End'xlUp).Row + 1
Jour.SetFous
EndSub
Private Sub CmdValider_Click()
Cells(i,1).Value=Jour.Value
Cells(i,2).Value=xxx.Value
Cells(i,3).Value=Jyyy.Value
'... / ... jusqu'à mes dix données à positionner dans la base
Unload nom de mon Userform


Autre subtilité dans mes saisies jusqu'ici :
- En saisie directe dans la base, par exemple en J14 j'ai saisi = 45.6+48.69+55.26 au clavier numérique : l'affichage se fait en numérique AVEC une virgule, à droite de la cellule car ça doit être pris comme un nombre
- En K14 j'ai mis du déroulant le trosième choix (trois valers dans la cellule précédente, là aussi un nombre à virgule à droite de la cellule

Dans le formulaie, pourra-t-on faire de même pour la première saisie (=45,6+48,69+55,26, la donnée total étant un nombre à classer à droite avec virgule et non un point

Aurais-je l'espoir dans la fenêtre de droite du formulaire voir une proposition directe du déroulant en son 3ème élément (car la fenêtre voisine atrois éléments ? ... Tout en gardant le choix du déroulant bien sûr.
Je ne sais pas si c'est vraiment réalisable.

Meric pour votre aide

Webperegrino
 

Pièces jointes

  • Approche PESÉE.zip
    171.2 KB · Affichages: 81
  • Approche PESÉE.zip
    171.2 KB · Affichages: 81
  • Approche PESÉE.zip
    171.2 KB · Affichages: 80

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonsoir le fil, bonsoir le forum,

Une proposition en pièce jointe. Je t'avoue que je suis un peu perdu... J'espère que ça pourra t'aider.
 

Pièces jointes

  • Webperegrino_v01.zip
    167.1 KB · Affichages: 96

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonsoir Robert,
La date s'affiche bien avec le déroulant, les déroulants de droite aussi.
Cela s'inscrit bien dans la base

Pour le transfert des poids mesurés ça buggue encore au niveau de :
.Cells(Derli, 6) = CDbl(Me.TB1.Value)
mais il y a une avancée.

Merci pour ta contribution : je vais étudier la codification (Alt + F11).
Encore merci
Webperegrino
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonsoir le fil, bonsoir le forum,

Oui j'ai vu que ça buggait si le champ n'était pas rempli. tu peux peut-être corriger avec le code suivant :
Code:
If Me.TB1.Value <> "" Then .Cells(Derli, 6) = CDbl(Me.TB1.Value)
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Correction de Codes d'un formulaire de saisie Uerform

La première partie de la programmation fonctionne bien (Date, LIEU).

Pour ce qui est de l'affichage dans les comboboxes 3 à 6 où figurent maintenant les déroulant :
- comment faire pour que dans ces comboboxes le contenu s'affiche à gauche (comme pour le 2ème déroulant LIEU d'ailleurs) pour une meilleure lisibilité du formulaire,
- tout en continuant comme jusqu'ici à afficher dans la base le résultat des comboBox 3 à 6 sur la droite, pour un maintien de nombres à traités ailleurs dans la base tels quels dans des formules avec arrondi et somme ?
Meric
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Correction de Codes d'un formulaire de saisie Uerform

OU !
Ta dernière proposition accepte des valeurs du type 45,23 pour TB1, TB3, TB5 et TB7 et se mettent bien dans la base, à la bonne place et à droite dans la cellule.
Toutefois, j'ai essayé une entrée du type =45,23+56,52+45,56 et prendre la troisième valeur dans le déroulant du ComboBox voisin (car 3 valeurs à entrer dans la même cellule), et là ça buggue !
Ça fonctionnerait à 100 % si ce type d'entrée pouvait être accepté...
Merci
Webperegrino
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonjour le fil, bonjour le forum,

En pièce jointe une version 2. Il n'y a que l'alignement des combobxes qui change. Pour modifier l'alignement regarde la propriété TextAlign dans la feneêtre des propriétés. La possibilité de rentrer une donné de type : =45,23+56,52+45,56 est certainement faisable mais très complexe et je ne pense pas savaoir le faire.
 

Pièces jointes

  • Webperegrino_v02.zip
    166.3 KB · Affichages: 82

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonsoir Robert, Bonsoir Le Forum,
J'ai appris du nouveau avec l'alignement à gauche dans la fenêtre propriété : ça fonctionne bien. Merci j'ai acquis cette connaissance.

Je me suis permis de faire un essai dans la codification :
.Cells(Derli, 1) = ComboBox1.Value
.Cells(Derli, 1) = Format(.Cells(Derli, 1), "dddd dd mmmm")
.Cells(Derli, 3) = Me.ComboBox2.Value
.Cells(Derli, 6) = CDbl(TB1.Value)
.Cells(Derli, 7) = CDbl(Me.ComboBox3.Value)
.Cells(Derli, 8) = CDbl(TB3.Value)
.Cells(Derli, 9) = CDbl(Me.ComboBox4.Value)
.Cells(Derli, 10) = CDbl(TB5.Value)
.Cells(Derli, 11) = CDbl(Me.ComboBox5.Value)
.Cells(Derli, 12) = CDbl(TB7.Value)
.Cells(Derli, 13) = CDbl(Me.ComboBox6.Value)

Les Me. sont supprimés et ça fonctionne aussi, même un peu plus rapidement j'ai l'impression. Je vas aussi essayer de constater la différence entre Me.ComboBox2.Value et ComboBox2.Value : on ne siat jamais, ça ira peut-être plus vite.

Deux recherches à finaliser toutefois. Si ces deux derniers points pouvaient être résolus ce serait PARFAIT !
1 - faire le transfert plus rapidement (je trouve que la mise en place des valeurs dans la base (à l'appui sur Validation) met un peu trop de temps...
2 - Le problème de "Bug" continue si dans le formulaire, volontairment un "TB" et son ComboBox voisin ne soient pas remplis (dans la pratique, en effet, je dois envisager ces possibilités : un TB et son ComboBox voisin - ou plusieurs -restent vide) : le transfert de "vides" doit aussi se faire vers la base. Pour le moment cela bloque.

Mais le formulaire fonctionne déjà mieux.

Bonne soirée à vous tous.
Webperegrino
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Correction de Codes d'un formulaire de saisie Uerform

Bonjour le fil, bonjour le forum,

Alors juste une précision... Le Me en fait n'est absolument pas nécéssaire mais si on le tape suivi du point (Me.) apparaît alors la liste des composants de l'UserForm. Donc c'est juste pratique car ça a l'avantage d'éviter les fautes de frappe en choisissant le bon composant et en le validant au lieu de le taper... Mais je ne pense pas que ça rende le code plus rapide pour autant de le supprimer.
Pour le bug je t'avais proposé (voir plus haut) une condition que tu dois adapter à tous les textboxes et comboboxes. Je pense que ça devrait fonctionner.
Code:
If TB1.Value <> "" Then .Cells(Derli, 6) = CDbl(Me.TB1.Value)
If ComboBox3.Value <> "" Then .Cells(Derli, 7) = CDbl(ComboBox3.Value)
'idem pour les autres...
 

Discussions similaires

Réponses
17
Affichages
657

Statistiques des forums

Discussions
312 241
Messages
2 086 522
Membres
103 241
dernier inscrit
Peyo33