Formulaire encore et toujours...

budboy

XLDnaute Nouveau
Bonjour à tous,

Encore un nouveau!!
Et oui, je découvre l'univers de VBA sous excel et bien que fasciné de mes maigres progrès je bute finalement sur la question suivante.

J'ai réaliser un formulaire très simple permettant d'enregistrer sur bdd les noms de concurrents devant s'inscrire à une manifestation sportive.

Parmis ces concurrents environ 60 % sont déjà connus car présents annuellement!
Pour ne pas me retaper toute la saisie du nom prénom adresse (...) car il faut aller vite, je souhaiterai, si le nom est connu (soit déja présent sur une BDD type années antérieurs) que le reste des infos soit proposé dans mon formulaire.

De cette manière, je devrais toujours pouvoir modifier ce qui mérite une mise à jour et enregistrer à la suite de ma feuille de saisie le concurrent.

Mais suis-je bien claire (?) et est-ce possible (?), par avance je m'excuse si ce sujet a déjà été traité, je suis d'ailleurs preneur de tout info.

Ci-joint mon modèle de formulaire inachevé faute de connaissance...

à tous merci,
 
Dernière édition:

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

Salut Jean Marie,

Je te remercie à nouveau de ton aide.

J'ai intégré très fierement les élément que tu m'as donné et ca marche parfaitement.

En revanche du coup la mise à zéro de mon formulaire ne se fait plus :
'Mise à jour du formulaire
txtNom = ""
txtPrenom = ""
txtSexe = "M"
txtNaissance = "1985"
txtLicence = ""
txtClub = ""
txtCodeclub = ""
txtAdresse = ""
txtCodepostal = ""
txtVille = ""
txtDossard = ""
lblDossard.Caption = 1 + Range("A65536").End(xlUp).Offset(0, 0).Value
Me.txtDossardsuiv = 1 + Range("A65536").End(xlUp).Offset(0, 0).Value

Je pense que c'est à cause des 2 dernières ligne que ca cloche !!

à plus, bonne journée,

BudBoy
 

ChTi160

XLDnaute Barbatruc
Re : Formulaire encore et toujours...

re
Eh bien tant mieux Lol
Ce passage pour saluer Romain ;)
je me pose la question de savoir pourquoi tu as

txtSexe = "M"
txtNaissance = "1985"
cela signifie pour moi que tu mets "M" et "1985" en dur dans l'affichage des texbox Sexe et Naissance estce normal ????
pourquoi pas
txtSexe = ""
txtNaissance = ""
Ne pourrais tu mettres (pièce jointe)la partie de ton fichier ainsi modifiée
Bonne journée
 
Dernière édition:

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

Salut le Forum,
Merci de ta visite Porcinet82,
Re-Salut Ch'ti 160,

Je joins mon formulaire qui prend bonne tournure à mon goût...

Mes 2 dernier soucis je te les expose :

- Quand mon fichier est vide de donnée, le formulaire ne trouve pas de valeur de référence et VBA me trouve une erreure à l'initialisation. J'ai donc inventé une réplique (pas trés pro) en insérant une ligne de référence 0 dans ma feuille mais je sais que tu auras une bien meilleure solution à me proposer (??)

- Ensuite je voudrais selon le N° de dossard que me soit renvoyé dans un champs Distance la valeur figurant en "Nom de parcours"
(Exemple içi :

If txtDparc1 <= Dossaurdsuiv <= txtFparc1 Then Distance = txtDist1
If txtDparc2 <= Dossaurdsuiv <= txtFparc2 Then Distance = txtDist2
If txtDparc3 <= Dossaurdsuiv <= txtFparc3 Then Distance = txtDist3
If txtDparc4 <= Dossaurdsuiv <= txtFparc4 Then Distance = txtDist4

Dans l'attente d'être habilement corrigé, je te remercie de ta patience..
Budboy
 
Dernière édition:

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

Ha oui et puis j'oubliais, au sujet de
txtSexe = "M"
txtNaissance = "1985"

C'est par soucis de gain de temps uniquement 75% des coureurs seront Masculins,
quant à "txtNaissance" - n'étant pas le seul à utiliser le formulaire la valeur par défaut sert de modèle pour ceux qui hésiteraient à rentrer uniquement "85", ou encore "12/12/85", "12/12/1985" (...)

Voilà tu sais tout,
 

porcinet82

XLDnaute Barbatruc
Re : Formulaire encore et toujours...

Re,

Pour ta première question, tu peux modifier le code comme ceci et enlever ta ligne 0 :
Code:
Private Sub UserForm_Initialize()
If IsNumeric(Range("A65536").End(xlUp).Value) = True Then
    lblDossard.Caption = 1 + Range("A65536").End(xlUp).Value
Else
    lblDossard.Caption = 1
End If
If IsNumeric(Range("A65536").End(xlUp).Value) = True Then
    lblDossard.Caption = 1 + Range("A65536").End(xlUp).Value
Else
    lblDossard.Caption = 1
End If
End Sub

Par contre, je n'ai pas tres bien saisie la 2eme question, je dois etre un peu moins perspicace que JeanMarie :rolleyes:

@+
 

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

Merci de cette solution quasi instantannée,

Mon 2° soucis c'est d'attribuer à Distance :

la valeur "txtDist1" si txtDparc1 <= Dossaurdsuiv <= txtFparc1
la valeur "txtDist2" si txtDparc2 <= Dossaurdsuiv <= txtFparc2
la valeur "txtDist3" si txtDparc3 <= Dossaurdsuiv <= txtFparc3
la valeur "txtDist4" si txtDparc4 <= Dossaurdsuiv <= txtFparc4

Probablement, un mixte entre variable et valeur que je suis encore loin de maîtriser..

Merci à vous 2 et au forum.
Bonn journée
 

porcinet82

XLDnaute Barbatruc
Re : Formulaire encore et toujours...

re,

Bon, je dirai quelque chose de ce genre :
Code:
If Str(txtDparc1) <= Str(Dossaurdsuiv) <= Str(txtFparc1) Then Distance = txtDist1

Ce qui me pose problème, c'est que je ne saisie pas c'est que lorsque tu as plusieurs parcours de rempli, il faut tenir compte du premier, du dernier, de tous ?
Avec cette info, je devrais pouvoir finaliser le code...

@+
 

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

If Str(txtDparc1) <= Str(Dossardsuiv) <= Str(txtFparc1) Then Distance = txtDist1
If Str(txtDparc2) <= Str(Dossardsuiv) <= Str(txtFparc2) Then Distance = txtDist2

Non non, encore une fois tu as parfaitement mis le doigt dessus, CHAPEAU Porcinet82...

C'était aussi simple que ca!
Merci donc et à plus tard... je pens e qu'il y aura une suite prochaine,
 

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

De retour déjà,

En réalité cette formule
If Str(txtDparc1) <= Str(Dossardsuiv) <= Str(txtFparc1) Then Distance = txtDist1
If Str(txtDparc2) <= Str(Dossardsuiv) <= Str(txtFparc2) Then Distance = txtDist2

me renvoit toujours la veleur txtDist2 sans que je ne comprenne pourquoi?

J'ai inclu cette formule dans "Private Sub cmdOK_Click()"
Est ce une bonne idée?

L'élément Str, est ce une manière de déclarer une variable string?

Merci,
 

porcinet82

XLDnaute Barbatruc
Re : Formulaire encore et toujours...

re,

La fonction Str renvoie du texte a partir d'une variable numerique. Donc, il faut utiliser plutot CSng, CInt...
Ensuite,
Code:
If CSng(txtDparc1) <= CSng(Dossardsuiv) <= CSng(txtFparc1) Then Distance = txtDist1
If CSng(txtDparc2) <= CSng(Dossardsuiv) <= CSng(txtFparc2) Then Distance = txtDist2
te renvoi toujours txtDist2 car la deuxième condition doit etre vrai, du coup, meme si la première etait egalement vrai, la valeur de Distance prend la valeur de txtDist2. Et ainsi de suite si les 4 conditions sont vraies.
C'est pour ca que je disais dans mon précédent post que je ne saisissai pas trop la finalité...

@+

Edition : Modif d'erreurs : voir post du 18/02/2008 à 15h47
 
Dernière édition:

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

Désolé de revenir à la pêche aux infos, mais mon problème persiste...

Je te laisse regarder ca si tu en as la possibilité.

Il s'avère que quelque soit la valeur de txtDossardsuiv la valeur renvoyée est txtDist2 condition vrai ou fausse.

J'ai du râter quelque chose.

Merci du coup de pouce, ci-joint le formulaire
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : Formulaire encore et toujours...

re,

Modifie ton code comme ceci :
Code:
 If CSng(txtDparc1) <= CSng(txtDossardsuiv) And CSng(txtDossardsuiv) <= CSng(txtFparc1) Then Distance = txtDist1
 If CSng(txtDparc2) <= CSng(txtDossardsuiv) And CSng(txtDossardsuiv) <= CSng(txtFparc2) Then Distance = txtDist2

En fait, je me suis planté, Str fait passer du numérique en string !!! Quel boulet !!!! :mad:

@+
 

budboy

XLDnaute Nouveau
Re : Formulaire encore et toujours...

Bonjour à tous,
Porcinet82 et Chti 160,

Oui merci beaucoup à vous deux vous me permettez d'arriver à mes fins et je suis vraiement trés satisfait des formulaires que vous m'avez aidé à accomplir.

Je cale encore un coup et pour cela aurais bien besoin de votre aide à nouveau...

Voilà tout j'ai prévu d'afficher sur mon formulaire un n° de dossard selon le choix de parcours du concurrent (87 ou 146), et l'année de naissance de ce même concurrent.

La magie a opéré, mais le tout n'est pas au point :

Quand j'utilise la fonction de rappel d'un concurrent figurant dans la BDD (feuille 2) le N° de dossard ne m'est pas proposé (pourquoi?)

Par ailleurs, je souhaite que VBA recherche le dernier Dossard selon les arguments txtCatégorie et txtDistance, et hélas je n'obtiens le numéro du dernier + 1, mais le plus souvent le numéro du dernier seulement...


J'avoue que je m'y perd un peu... ce doit être un problème de synthaxe mais mes connaissances ne me permettent pas de résoudre.

Merci de votre aide,

Budboy
 
Dernière édition:

Discussions similaires

H
Réponses
3
Affichages
904
HugoB99
H

Statistiques des forums

Discussions
312 216
Messages
2 086 348
Membres
103 194
dernier inscrit
rtison