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 :(
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Martial,

Je vais voir cela tout de suite :)

J'aurai une autre question sur les accès.
Selon l'utilisateur, puisqu'ils vont être plusieurs à intervenir, il aurait accès qu'à certains boutons sur Feuil1.
Utilisateur 1 = totalité des boutons
Utilisateur 2 = tous les boutons SAUF CommandButton 21
Utilisateur 3 = CommandButton 22 à 24
Utilisateur 4 et 5 = Uniquement CommandButton 24

Comment doit-on procéder ?
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Tout dépends comment tu travailles :
- Si le fichier est sur un seul PC et que tous les utilisateurs y accèdent de ce PC, je pense qu'il faut une feuille de paramètres, avec le nom des utilisateurs et leur mot de passe. Soit mot de passe à l'ouverture du classeur et blocage plus ou moins des boutons, soit mot de passe à l'utilisation de chaque bouton (risque d'être un "gonflant" à l'usage).
- Si le fichier est partagé, cela peut être fait suivant le nom du PC.
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Martial

Je suis parti du principe que le fichier est sur un seul PC. Je pensais que c'était le plus simple à réaliser. :eek:
Tu as pu constater mon niveau.

J'ai essayé de mettre un usf mot de passe dans le fichier et j'ai tapé en dur dans le code les mots de passe des utilisateurs et invalidés les boutons.
Mais j'ai malgré tout un message d'erreur bien que je respecte la case lorsque je tape et ce, quelque soit le mot de passe saisi. :confused:

Peux tu m'apporter à nouveau ton aide ?
 

Pièces jointes

  • compteur-automatise-dans-useform-FEUIL1R.xlsm
    46.5 KB · Affichages: 42
  • compteur-automatise-dans-useform-FEUIL1R.xlsm
    46.5 KB · Affichages: 44
  • compteur-automatise-dans-useform-FEUIL1R.xlsm
    46.5 KB · Affichages: 47

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

Vois le fichier, j'y ai mis un UserForm MotDePasse.
Celui-ci permet de modifier le mot de passe dans la feuille PARAMETRES
Modification de cette feuille, en ajoutant un type d'utilisateurs en colonne C, Niveau 1, Niveau 2 etc... cela permet, par exemple, d'ajouter autant de Niveau 4 que tu le souhaites etc...
A l'ouverture de MotDePasse les boutons de 21, 22, 23 et 26 sont inactifs, ensuite ils sont rendus actif en fonction du degré du Niveau.
MotDePasse peut être ouvert directement à l'ouverture avec une macro Open()

A+
 

Pièces jointes

  • compteur-automatise-dans-useform-FEUIL1R.xlsm
    59.3 KB · Affichages: 43
  • compteur-automatise-dans-useform-FEUIL1R.xlsm
    59.3 KB · Affichages: 53
  • compteur-automatise-dans-useform-FEUIL1R.xlsm
    59.3 KB · Affichages: 53

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Martial,

Cela va bien au-delà du simple mot de passe
Je n'aurai jamais imaginé cela possible. :eek:
Tu es un pro du vba.
Merci beaucoup pour ton aide et ton temps, sans toi je n'y serais jamais parvenu.
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonjour Martial, le forum

Je reviens vers toi car j'ai des erreurs d'exécution de code et j'ignore d'où cela peut provenir

D'abord au niveau de mes boutons dans ma Feuil 1 au moment du clic pour ouvrir mon USF
j'ai une erreur d'exécution avec objet spécifié introuvable bien que mon USF (consult) se trouve bien dans le fichier et que le code associé au bouton placé en Feuil1 est
Private Sub CommandButton23_Click()
consult.Show
End Sub​

J'ai le même désagrément avec une image modifiée en bouton avec code associé toujours en feuil1 pour l'ouverture d'un autre USF

Enfin (j'ai repris le fichier sur lequel nous échangeons par simple facilité) Je ne parviens pas à associer mon bout7 au ComboBox 4 , Text4 et OptionButton 9 et 10.
A savoir : ceux-ci sont par définition invalide et ne doivent s'activer uniquement si le bout7 est validé mais si un autre bout est validé après saisie de ComboBox4, Text 4 et l'un des optionButton alors ceux-ci doivent être "vidés" et à nouveau rendus inactifs.

Mais là encore, j'ai de gros problèmes de faisabilité :(

Merci pour l'aide que vous pourrez m'apporter
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonjour Moustic, le forum,

Chez moi, le lancement des UserForm ou l'activation des feuilles fonctionnent correctement, je n'ai pas d'erreur d'exécution :eek:
Je regarde pour le second point. Il faut peut-être passer par un Change plutôt qu'un Click

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

Pour Bout7, voir avec la macro ci-dessous :
VB:
Private Sub OptionButton7_Change()
 If OptionButton7 Then
  ComboBox4.Enabled = True
  TextBox4.Enabled = True
  OptionButton9.Enabled = True
  OptionButton10.Enabled = True
  If OptionButton7 And Not ComboBox4.ListIndex = -1 Then TextBox4 = ComboBox4.Column(1)
 Else
  ComboBox4.Enabled = 0: ComboBox4.Clear: TextBox4 = ""
End If
End Sub
en remplacement de Private Sub OptionButton7_Click()

A+

Martial
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Re,

Moi non plus, Martial, je n'ai aucun problème sur le fichier que nous partageons.
C'est sur le fichier original que cela ne va plus.
Je joins ici un autre dans lequel j'ai essayé de reproduire le message d'erreur à partir de l'USF Password :( et d'un bouton image.

Pour le bout7, je teste mais il me semble qu'il y a une action qui ne se fait plus.


Test Bout7 effectué : il manquait un p'tit bout de code pour les optionsButton
mais cela j'ai compris :)
 

Pièces jointes

  • motdepasse.xlsm
    69.6 KB · Affichages: 50
  • motdepasse.xlsm
    69.6 KB · Affichages: 48
  • motdepasse.xlsm
    69.6 KB · Affichages: 46
Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Martial

Pour l'USF 2, je devrais passer également par un OptionButton5_Change() plutôt qu'un OptionButton5_Click() ? :(
Idem pour la checkBox 1 ? :(
 

Pièces jointes

  • compteur-automatise-dans-useform-PB BOUTONS.xlsm
    62.3 KB · Affichages: 32

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

C'est normal, en remplaçant tes boutons par des images, les objets ne commencent plus par "CommandButton" mais surement par "Picture" ou "Image".
Si tu lances ta macro en pas à pas (avec la touche F8) tu t'aperçois que ça bloque à la ligne Sheets(1).Shapes("CommandButton" & Bt(i)).Select, parce que tu n'as plus d'objet nommé CommandButton22 (pour le premier.

Si tes noms se nomment : Pomme, Poire, Cerise et Fraise, tu peux écrire directement
VB:
Bt = Array("Pomme", "Poire", "Cerise" et "Fraise")
For i = 0 To UBound(Bt)
  Sheets(1).Shapes(Bt(i)).Select
  Selection.Enabled = 0
Next
A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Martial

Pour l'USF 2, je devrais passer également par un OptionButton5_Change() plutôt qu'un OptionButton5_Click() ? :(
Idem pour la checkBox 1 ? :(

Oui mais attention à la façon de l'écrire
VB:
Private Sub CheckBox1_Change()
'Si CheckBox1 est vrai
If CheckBox1 = True Then
  'alors
  TextBox6.Enabled = True
 Else
  'sinon
  CheckBox1 = False: TextBox6 = "": TextBox6.Enabled = False
End If
End Sub

A+
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Re,

C'est normal, en remplaçant tes boutons par des images, les objets ne commencent plus par "CommandButton" mais surement par "Picture" ou "Image".
Si tu lances ta macro en pas à pas (avec la touche F8) tu t'aperçois que ça bloque à la ligne Sheets(1).Shapes("CommandButton" & Bt(i)).Select, parce que tu n'as plus d'objet nommé CommandButton22 (pour le premier.

Si tes noms se nomment : Pomme, Poire, Cerise et Fraise, tu peux écrire directement
VB:
Bt = Array("Pomme", "Poire", "Cerise" et "Fraise")
For i = 0 To UBound(Bt)
  Sheets(1).Shapes(Bt(i)).Select
  Selection.Enabled = 0
Next
A+

Martial

Martial,

J'avoue mon ignorance car malgré tes explications je ne comprends pas.
Certes il y aura qu' 1 seule image et en effet le code n'est plus CommandButton
Mais j'ai mis un commandButton en Feuil1 et le problème reste entier avec un message d'erreur pour un unique USF :confused: bien présent dans le fichier.
Il ne devrait donc plus y avoir d'erreur.
 

Pièces jointes

  • motdepasse.xlsm
    73.2 KB · Affichages: 45
  • motdepasse.xlsm
    73.2 KB · Affichages: 59
  • motdepasse.xlsm
    73.2 KB · Affichages: 57

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,
J'avoue mon ignorance car malgré tes explications je ne comprends pas.

C'est pas bien grave je vais essayé de t'expliquer autrement :eek:
Dans cette macro
VB:
Bt = Array(22, 23, 26, 21)
For i = 0 To UBound(Bt)
  Sheets(1).Shapes("CommandButton" & Bt(i)).Select
  Selection.Enabled = 0
Next
A l'origine, tu avais 5 boutons, l'un d'eux était toujours actif, mais avec l'initialisation de l'UserForm nous rendions inactif les 4 premiers. Ceux-ci étaient rendu actif en fonction de l'utilisateur via l'UserForm.
Pour les rendre inactif, nous définissons Bt avec 4 valeurs (qui correspondent à tes N° de CommandButton) donc 22, 23, 26 et 21.
Ensuite avec l'aide de ces 4 valeurs, nous sélectionnons le bouton en question et nous le rendons inactif.
Si tu supprimes ou modifies l'une des 4 valeurs (en modifiant ou supprimant les boutons) la macro Initialize cherche un bouton n'existant pas et donc renvoie une erreur.

Ai-je été assez clair :confused:
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

:) Oui Martial
Tu as été tout à fait clair même mieux, ton explication est limpide.

Une question toutefois, si je veux associer l'image au USF Password et mettre mes 4 autres boutons pour les autres USF ou accès au feuilles du classeur, il va falloir combiner les deux codes que tu m'as indiqué dans la macro Initialize
c'est-à-dire : à la fois

Sheets(1).Shapes("CommandButton" & Bt(i)).Select​

mais aussi

Sheets(1).Shapes(Bt(i)).Select​


C'est cela ? :confused: