Compteur automatisé dans useform

moustic54

XLDnaute Occasionnel
Bonsoir

Je voudrais mettre un compteur automatique dans un useform sous la forme : 2015-XXXX
2015 étant l'année et les xxxx étant le chiffre qui s'incrément de 1 à chaque nouvel enregistrement.

Ex : 25eme enregistrement = 2015-0025
178eme enregistrement = 2015-0178

Si l'enregistrement se fait l'année suivante (soit en 2016) le compteur devra alors affiché 2016-XXXX

Quelqu'un pourrait il me dire comment faire ?
Mes connaissances en vba sont proches du degré zéro :(
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonsoir Moustic,

Voici un exemple dans le fichier ci-joint.

A+

Martial

PS : il faut enregistrer le fichier pour conserver les numéros.
 

Fichiers joints

Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonjour Martial

Merci pour ton aide. Ton compteur marche du tonnerre :D
Il y a enregistrement dans un tableau

Je me permets une nouvelle question sur l'utilisation d'1 Chechbox et le problème de date :eek:
si la valeur est true (case cochée) alors la textbox sera la date du jour
si la valeur est false (case non cochée) alors la textbox est inactive (enable)

D'ailleurs est il possible plutôt que reprendre la fonction caption d'1 checbox pour renseigner le tableau, avoir oui ou vide si la case n'est pas cochée ?
 

Fichiers joints

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonjour Moustic, le forum,

Voici ton fichier, il doit faire ce que tu demandes, même si je ne vois pas trop l'intérêt de mettre TextDate inactif.
Soit il est toujours inactif et seulement rempli lorsque tu coches TextDate, soit il est inactif lorsque tu coches TextDate et actif pour lorsque TextDate n'est pas coché permettant de rentrer une autre date, mais bon là n'est pas mon problème ;)

A+

Martial
 

Fichiers joints

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Martial, le forum,

C'est vrai que ton raisonnement est plus logique : TextDate toujours inactif et seulement rempli lorsque l'on coche TextDate.
Est ce pour çà que l'on peut saisir dans TextDate dans le fichier que tu as mis en retour ?
En revanche cela devient impossible après avoir coché et supprimer la date. :confused:


J'ai un message d'erreur avec le compteur lors de l'enregistrement pourtant j'ai bien repris ton code in extenso.
Je ne sais pas d'où vient le problème. J'ai donc essayé de te mettre un bout du code que j'ai sur mon fichier d'origine.

A moins que le problème ne vienne de la phase d'initialisation. J'ai plusieurs lignes à ce niveau en raison d'une date d'origine et de combobox. :eek:
 

Fichiers joints

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,


En revanche cela devient impossible après avoir coché et supprimer la date. :confused:
Oui, c'est pour ça, d'après ce que je comprend, tu souhaites bloquer quand TextDate est coché. Donc il faut plutôt faire l'inverse, c'est à dire rendre accessible lorsque TextDate n'est pas coché.

J'ai un message d'erreur avec le compteur lors de l'enregistrement pourtant j'ai bien repris ton code in extenso.
Je ne sais pas d'où vient le problème. J'ai donc essayé de te mettre un bout du code que j'ai sur mon fichier d'origine.

A moins que le problème ne vienne de la phase d'initialisation. J'ai plusieurs lignes à ce niveau en raison d'une date d'origine et de combobox. :eek:
Je pense que l'erreur vient du code que tu as mis, vois le fichier ci-dessous.

A+

Martial

PS : tu peux faire du pas à pas en utilisant F8, comme ça tu vois la ligne posant problème.
 

Fichiers joints

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Merci Martial

Ce que je voudrais c'est que le curseur de la souris ne puisse jamais aller dans la zone date comme c'est le cas ici sauf si la case est cochée.
Cela te parait-il logique ?
Il est important que je comprenne le déroulement car j'ai plusieurs autres zones de texte que je voudrais toujours inactives sauf si certaines cases boutons sont activées.

Je ne sais pas si je m'exprime bien et si mon raisonnement peut être aussi logique que le tien. Mes lacunes sont énormes :eek:

J'ai compris pour le mode de fonctionnement du compteur mais je n'ai pas encore tester sur mon fichier original.
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

C'est bien pour ça que je disais dans mon post #2
PS : il faut enregistrer le fichier pour conserver les numéros.
Si tu n'enregistres pas à chaque fois, il vaut mieux passer ton N° dans une cellule directement ou encore plus simple : reprendre la dernière cellule de la colonne A de la feuille TEST.

Je vois ça demain, je bosse demain et donc me lever tôt.

A+

Martial
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonne soirée Martial

Tu as été plus rapide que moi ..... J'ai compris le fonctionnement du compteur et du coup j'ai rectifié mon message mais tu avais déjà répondu.
J'ai vu que lorsque l'on enregistre le compteur s'incrémente automatiquement de + 1 mais il suffit que tu fermes le usf puis que tu l'ouvres à nouveau pour faire d'autres enregistrements pour repartir de 0.
Je fais faire les tests demain moi aussi

C'est sur les zones actives ou non que le bas blesse .... Surtout que j'en ai un certain nombre :(

A +
 
Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Martial

Merci pour le fichier mais étant plusieurs à travailler dessus il y a des risques au niveau de la récupération du n° de compteur depuis la feuille Test.
1. Comment peut-on faire pour avoir le compteur directement dans 1 Textbox ?

2. J'ai mis 2 boutons dans l'USF :
- si bouton 1 est oui, je voudrais que seule zone puisse être modifiée ainsi que échéance. Mais mon code n'est pas complet
- si bouton 2 est oui, je voudrais que seule la "3ème" textbox puisse être modifiée

J'ai modifié le fichier en ce sens mais il manque des bouts de code :(

Peux-tu m'aider Martial ?
 

Fichiers joints

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

Pour le point N° 1 , il faut bien stocker la valeur à un endroit. Lorsque je la stockais dans le tag du label, si l'on quittait l'UserForm alors on perdait cette donnée puisqu'au nouveau démarrage de l'UserForm, l'initialisation remettait tout à zéro. Si l'on stocke dans un TextBox, ce sera la même chose.
Plusieurs solutions sont quand même envisageables :
- On ne ferme pas l'UserForm, on le cache.
- On enregistre le fichier à chaque validation.
- On enregistre à la fermeture de l'UserForm.
- On stocke cette valeur dans un Nom (gestionnaire de nom)
- On stocke dans une cellule d'un onglet (caché ou non)

Pour le point N° 2 , quand tu dis vouloir seulement zone et échéance modifiable pour bouton1, c'est seulement les contrôles que tu as rajouté ou tous ceux de l'UserForm ?

A te relire

Martial
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

De retour

Pour le point 1 : je pense que le mieux serait sans doute d'enregistrer à la fermeture de l'UserForm.
Mais question de néophyte, ne peut-on pas faire avec ce fameux compteur dans la TextBox "compteur" comme pour la date c'est-à-dire que la donnée se place bien dans la feuille Test à chaque click sur CommandButton1 mais s'incrémente également de +1 malgré la phase d'initialisation sans pour autant aller chercher dans la feuille Test ou passer par la fermeture + enregistrement du fichier ?

Pour le point 2 : lorsque je dis vouloir seulement zone et échéance modifiable pour bouton1, c'est seulement les contrôles que j'ai rajouté. (frame + 2 boutons et 3 textbox)
Le bouton 1 (bout1) actionne uniquement zone et échéance (sachant que zone et échéance sont des listes en cascades)
Le bouton 2 (bout2) actionne uniquement le textbox dont le label est "Actif si bout2 is Ok"

Je n'utilise pas un langage très excelien pour un pro tel que toi :(
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

En fait, pour le point 1, qu'est-ce qui te gêne avec la version actuelle ? Repiquage du N° dans la feuille TEST ?

Pour le 2, vois le fichier ci-dessous, j'ai mis un petit plus en cachant carrément les contrôles, comme ça tu as les 2 solutions.

A demain

Martial
 

Fichiers joints

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

En effet ce qui me gêne c'est qu'on aille chercher dans la feuille Test (je trouve cela plus risqué)
Pourquoi mes listes en cascade ne fonctionnent pas, quel code dois-rajouter ?

Bonne soirée Martial
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonsoir Moustic, le forum,

Je ne vois pas le problème de récupérer des données dans une feuille, et ce n'est pas risqué. Que veux-tu qu'il arrive ? Il y a plus de risque en écrivant la donnée dans cette feuille si ta ligne de code est erronée ;).

Pour tes listes, je ne vois pas ce que tu souhaites faire. Quand tu mets dans TextBox1_Change : If TextBox1.ListIndex = -1 Then Exit Sub là il y a un risque :) (que ça ne fonctionne pas :p

Explique ton souhait, on verra pour te trouver une solution.

A+

Martial
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Martial, Bonsoir à tous

J'ai un message d'erreur au niveau de mes deux "listes" en cascades
Si mon combobox zone va bien cherché les données (colonne G) dans le feuille Doc en revanche impossible d'y lier échéance qui devrait rapatrier les données correspondantes (colonne H) de ma feuille Doc.

Je ne sais pas comment faire.
 

Fichiers joints

Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

Pour avoir 2 listes en cascade, il faut déjà avoir 2 listes !!! Tu as un Combobox et un TextBox, tu ne peux pas ajouter plusieurs valeurs à un textbox.

En plus, tu mets
Set Rng = .Range("G2:G" & .Range("A65536").End(xlUp).Row)
Il faut plutôt mettre ...."G65536"... car en colonne A tu n'as rien
puis
For Each Cel In Rng
je ne vois pas ce que tu souhaites faire.

A+
 
Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Oui mais avec une combobox le principe est d'obtenir une liste modifiable
or là selon le choix dans ZONE une seule valeur est possible pour ECHEANCE

Un exemple : si zone 241 alors Échéance ne pourra être que 12/05/2015

C'est pour cette raison que j'ai mis 1 combobox et 1 textbox :confused:
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Ok, le mieux (à mon avis), dans ce cas là, est de mettre 2 colonnes à ton ComboBox. La deuxième colonne peut être cachée (dans le fichier j'ai mis 60pts;0pts pour cacher la seconde colonne).
Dans Initialize, tu modifies la List de ton ComboBox, de G à H.
Ensuite, lorsque tu changes la valeur de ton ComboBox, la colonne 2 va se loger dans ton TextBox.

Vois le fichier
 

Fichiers joints

Discussions similaires


Haut Bas