Créer un compteur automatique dans un userform

maronnette

XLDnaute Nouveau
Bonjour à tous,
Voila je dois faire un projet excel dans le cadre de mes études, basé sur la gestion d'un competition sportive (triathlon).
Aussi j'ai crée un userform me permetant d'inscrire un nouveau participant à la course (Nom, prénom, age, club, sexe). J'aimerais ajouter directement sur le userform un compteur attribuant directement et automatiquement un numero de dossard (visible sur le userform) et qui sera ensuite directement associé au joueur dans ma page archivage (aprés avoir cliqué sur mon bouton "valider" dans mon userform).
Merci d'avance pour votre aide.
 

Pierrot93

XLDnaute Barbatruc
Re : Créer un compteur automatique dans un userform

Bonjour Maronnette

tu devrais peut être mettre ton fichier en pièce jointe, sans données confidentielles, ce serait plus facile pour t'aider. Sinon regarde peut être le code ci dessous, en supposant que tes numéros de dossards sont dans la colonne A de la feuille active :

Code:
Private Sub CommandButton1_Click()
    'pour renvoyer dans textbox
    TextBox1.Value = Range("A65536").End(xlUp).Value + 1
    ' ou inversement
    Range("A65536").End(xlUp).Offset(1, 0).Value = TextBox1.Value
End Sub

bonne journée
@+

Edition : bonjour Ya ve ka, je n'avais pas raffraichi.
 

maronnette

XLDnaute Nouveau
Re : Créer un compteur automatique dans un userform


C'est un user form trouvé sur le site et c'est ce que je veux faire dans mon projet. J'arrive à tout faire sauf la numerotation automatique des dossards. Ici le compteur génére automatiquement un nouveau numero à chaque nouvel inscrit sans que l'utilisateur doive le rentrer.
Merci.
 

Kotov

XLDnaute Impliqué
Re : Créer un compteur automatique dans un userform

Bonjour Maronnette, salut Pierrot (permets moi d'intervenir dans la discussion),

A mon avis, tu as tout simplement besoin des 2 lignes que te propose le toujours excellent Pierrot :

En supposant que la textbox verte de ton projet se nomme TextBox1 :
TextBox1.Value = Range("A65536").End(xlUp).Value + 1
Cette ligne affiche dans ta textbox, la dernière valeur déjà enregistrée et lui rajoute 1 (donc ton dossard suivant).

Le dossard étant automatiquement affiché, tu complètes ton formulaire avec les données de ton nouvel engagé, puis, lorsque tu cliques sur OK, le transfert s'effectue.
Là, tu as besoin de la seconde ligne de Pierrot
Range("A65536").End(xlUp).Offset(1, 0).Value = TextBox1.Value
Cette ligne transfère la valeur de la Textbox1 (donc ton N° de dossard) sur la première ligne non utilisée.
Il ne te reste qu'à transférer les autres valeurs via
Range("A65536").End(xlUp).Offset(1, 0).Value = ..
En incrémentant le chiffre en rouge, tu te déplaces dans les colonnes.

Ai-je apporté un peu de clarté, ou au contraire, compliqué le problème ?

Bonne journée
Kotov
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Créer un compteur automatique dans un userform

Re, Bonjour Kotov

juste pour saluer l'ami Kotov, toujours un plaisir de te croiser, aucun problème à ce que tu interviennes, bien au contraire. Je te souhaite de très bonnes fêtes de fin d'année.

@+
 

maronnette

XLDnaute Nouveau
Re : Créer un compteur automatique dans un userform

C'est top ça marche! Merci beaucoup à tout les 2! Le seul probleme c'est que j'aimerais que ma numerotation commence en B7 avec le nombre 1 (donc en B6 vu que la numerotation part de 0). Cependant lorsque que je change en mettant B à la place de A mon logiciel lance automatiquement le debogage. Avez vous une solution?
 

Pierrot93

XLDnaute Barbatruc
Re : Créer un compteur automatique dans un userform

Re

si j'ai bien compris, pas sur, il faut tester si B6 contient 0, essaye comme ceci :

Code:
If Not IsEmpty(Range("B6").Value) Then
    TextBox1.Value = Range("B65536").End(xlUp).Value + 1
Else
    TextBox1.Value = 0
End If

bonne soirée
@+
 

Kotov

XLDnaute Impliqué
Re : Créer un compteur automatique dans un userform

Bonjour Maronnette, Pierrot,

Pierrot: ravi de te croiser, et je te souhaite également une excellente année

Maronnette :
Pour avoir déjà réalisé des macros utilisées pour des listes d'engagés en cyclisme, et athlétisme, j'imagine que ton projet est composé de la manière suivante :

Ligne 1 à 5 : des données textes : lieu, nom et date de la compétition..
En ligne 6, si j'ai bien compris, tu dois avoir tes entêtes de tableau (dossard, nom, prénom...)
et à partir de la ligne 7, la liste des concurrents.

Est ce bien celà ?

Il me semble logique d'obtenir un bug en changeant la colonne "A" en "B" :
je suppose que ta colonne "A" est vide
de ce fait : TextBox1.Value = Range("A65536").End(xlUp).Value + 1 donne 1

En "B6", je suppose que tu as l'entête de colonne "Dossard"
donc TextBox1.Value = Range("A65536").End(xlUp).Value + 1 donne logiquement une erreur puisqu'on ne peut ajouter 1 à du texte

donc je propose de vérifier si la dernière cellule utilisée de la colonne B est numérique ou pas
- si elle est numérique, il y a donc déjà un dossard saisi, il suffit de rajouter 1
- si elle n'est pas numérique, on part avec 0 (c'est bizarre une compétition qui débute avec le dossard "zéro" ?!. Perso j'ai toujours démarré à 1)

Code:
    If IsNumeric(Range("B65536").End(xlUp).Value) Then
        TextBox1.Value = Range("B65536").End(xlUp).Value + 1
    Else
         TextBox1.Value = 0
    End If

Si je me plante dans mes suppositions, (la forme de ton tableau), l'idéal serait de le joindre à ton prochain message.

Comme c'est un projet dans le cadre de tes études, bien entendu, on ne va pas le faire à ta place, mais dans une optique pédagogique, on pourrait te guider vers la solution.

Bonne journée
Kotov
 
Dernière édition:

maronnette

XLDnaute Nouveau
Re : Créer un compteur automatique dans un userform

ImageShack - Hosting :: captureecranarchivageqb8.png
ImageShack - Hosting :: vabexcelzg1.pngImageShack - Hosting :: captureecranarchivagehre9.png

J'ai essayé ce code mais ça ne fonctionne pas ça reste à 0 tout le temps sur ma colone B quelque soit le nombre de joueur que j'inscris...
Les suppositions sont exactes sauf que je veux effectivement demarrer mes dossards à 1et non 0 et en B7 (avec le nombre 1). Je joins des captures écran car mon pc refuse et bloque les piéces jointes... Je ne peux que l'envoyer par mail.

En tout cas je vous remercie du temps que vous prenez pour me repondre ça m'aide beaucoup et je vous souhaite à tous une bonne année (un peu en avance).
 

jeanpierre

Nous a quitté
Repose en paix
Re : Créer un compteur automatique dans un userform

Bonsoir le fil,

maronnette, déjà, si tu Zippes les pièces en question (car tes photos de vacances, on ne peut rien en faire, je plaisante évidemment), et qu'ensuite tu vérifies les options d'envois sur ton navigateur... Quelques minutes à passer...

Cela, on ne peut le faire à ta place...

Un bonsoir à Pierrot et à Kotov, et de bonnes fêtes à tous.

Jean-Pierre
 

Kotov

XLDnaute Impliqué
Re : Créer un compteur automatique dans un userform

Re Pierrot,

Tout à fait d'accord avec toi, la fonction "IsNumeric" renvoie "Vrai" si la cellule est vide.
Pour ce que je crois comprendre du projet de Maronnette, cela ne doit pas générer de bug :
- si la cellule B6 est un nombre, B7 = nombre + 1
- si la cellule B6 est vide, B7=1
- si la cellule B6 comprend du texte, B7 = 0

Selon que Maronnette attribue au premier engagé le dossard 0 ou le dossard 1, voici 2 propositions :

Dossard 0
Code:
    If IsEmpty(Range("B65536").End(xlUp).Value) Then
        TextBox1.Value = 0
    Else
         If IsNumeric(Range("B65536").End(xlUp).Value) Then
                TextBox1.Value = Range("B65536").End(xlUp).Value + 1
         Else
                TextBox1.Value = 0
         End  If
End If
Dossard 1
La solution que je préfère (par tradition, on a tendance à octroyer le dossard 1 au dernier vainqueur de l'épreuve, ou à défaut à un concurrent du club local, ou au 1er engagé)
Code:
    If IsNumeric(Range("B65536").End(xlUp).Value) Then
        TextBox1.Value = Range("B65536").End(xlUp).Value + 1
    Else
         TextBox1.Value = 1
    End If


Bonne soirée
Kotov
 

Kotov

XLDnaute Impliqué
Re : Créer un compteur automatique dans un userform

Re,

Maronnette, vu que tu as des difficultés pour envoyer ton fichier, je t'envoie un fichier basique qui fonctionne comme tu le souhaites.

Je te laisse le soin de poursuivre son élaboration.

Avec les éléments dont tu disposes maintenant, tu devrais parvenir à finaliser ton projet.

Bonne soirée
Kotov
 

Pièces jointes

  • ListeEngage.xls
    28 KB · Affichages: 378

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 644
dernier inscrit
MOLOKO67