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

VB:
Dim Ws As Worksheet
For Each Ws In Worksheets
  With ActiveWindow
    .DisplayHorizontalScrollBar = 0
    .DisplayVerticalScrollBar = 0
    .DisplayWorkbookTabs = 0
    .DisplayHeadings = 0
    .DisplayGridlines = 0
  End With
  If Ws.Index <> 1 Then Ws.Visible = 2
Next
Application.DisplayFormulaBar = 0
If Application.CommandBars.Item("Ribbon").Height > 100 Then
  Application.SendKeys "^{F1}"
End If

Pour cacher le ruban, il faut lancer la macro par un bouton ou à l'ouverture du fichier avec Open dans ThisWorkbook
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Merci beaucoup Yaloo
J'ai toujours du mal à comprendre et mettre tes deux derniers codes bout à bout :eek:
Je vois bien la boucle mais je ne vois pas les lignes qui permettent de l'activer que sur certaines feuilles du classeur.
Idem pour l'ouverture du fichier sur la feui1 ou Edito :eek:


Je crois que je vais tester demain, le cerveau moins embrumé, et revenir car je crains d'avoir des problèmes pour la mise en œuvre. :eek: :eek:
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonjour Yaloo

Merci pour ton fichier Test. :D

J'ai des questions :
N'est-il pas possible d'invalider dans le menu l'onglet "affichage" car grâce à lui, malgré le code, il reste possible à l'utilisateur de remettre ou d'activer les barres de formules, les titres ....?

Je me suis aperçu que le lancement du code (masquer de nombreuses options) laissait Excel dans cette configuration.
Un autre souci qui n'est pas évident, est de remettre tout en ordre une fois que le fichier contenant ce code soit fermé sans avoir recours au lancement via 1 bouton de la procédure :confused:

Je ne sais pas si je me fais bien comprendre
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonjour Moustic, le forum,

Voir en protégeant l'onglet et le classeur. Ou alors il faudra réduire définitivement le ruban.

C'est pour ça que je t'ai mis la macro liée au bouton te permettant de faire l'effet inverse.
Si tu veux que tout soit remis en place à la fermeture du fichier, il suffit de créer une macro BeforeClose dans ThisWorkbook avec les options à remettre en place.

A+
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Yaloo

Qu'est-ce que cela veut dire ? Je ne comprends pas la manip :confused: :confused:


Bonjour Moustic, le forum,

Voir en protégeant l'onglet et le classeur. ...
A+

Pour le reste, je vais suivre tes conseils en adaptant le code BeforeClose dans ThisWorkbook pour remettre les options en place :eek:
Si je fais quelques bourdes, je lancerais un SOS.

Bonne soirée
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonsoir Moustic,

Pour "bloquer" les affichages et modifications, tu peux mettre une protection à tes feuilles et au classeur.
Pour se faire, dans le menu "Révision" (sous 2010 et 2013, mais 2007 ça doit le faire aussi :)) tu as la possibilité de protéger tes onglets (en cliquant sur Protéger la feuille) et le classeur (en cliquant sur Protéger le Classeur).
Pour la protection des feuilles, tu peux mettre ou non un mot de passe (il m'arrive de protéger sans mettre de mot de passe, c'est juste pour éviter d'effacer des formules ou autres) il est aussi possible de sélectionner ce que tu veux protéger. Je te laisse découvrir les différentes possibilités.

Pour le SOS, ne le fais pas en morse, j'ai un peu de mal avec ce langage, un petit message sera suffisant :p.

A+
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Yaloo

Protection de feuille ou de cellules, je pratique déjà mais là ce serait différent.

Lorsque je parle de "bloquer l'affichage", c'est surtout de cet onglet dont je parle (cf. image) que je souhaiterais invalider pour la totalité du fichier. :confused:

J'ai aussi un petit souci, dans le fichier test Edito, car même après avoir lancé la macro "Affichage" le ruban bien qu'actif reste réduit :eek:.
 
Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Yaloo,

Non c'est sympa de ta part :D mais cacher complètement le ruban risque de poser des problèmes à certains.

En revanche comme je l'ai écrit : J'ai aussi un petit souci, dans le fichier test Edito, car même après avoir lancé la macro "Affichage" le ruban bien qu'actif reste réduit :confused:
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Ok Yaloo

Mais de la sorte, il n'est plus réduit à l'ouverture du fichier or j'aurai voulu que le ruban soit réduit à l'ouverture mais qu'à la fermeture du fichier il soit à nouveau apparent :confused:
Mais il semble que l'on ne puisse pas avoir les 2 :confused:
A moins qu'il ne faille utiliser un autre morceau de code

Bonne soirée Yaloo
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonjour Yaloo

Cette histoire de ruban m'ennuie :(

Ton code permet de réduire le ruban

If Application.CommandBars.Item("Ribbon").Height > 100 Then
Application.SendKeys "^{F1}"
End If

Mais n'existe t-il aucun code possible pour annuler cette action ou plus exactement restaurer intégralement l'affichage du ruban à la fermeture du fichier ?

Merci de ton aide
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    41.6 KB · Affichages: 93
  • Sans titre.jpg
    Sans titre.jpg
    41.6 KB · Affichages: 95
  • Sans titre.jpg
    Sans titre.jpg
    41.6 KB · Affichages: 96

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonsoir Moustic,

Peut-être avec cette macro :confused: , pas testé
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Ws As Worksheet
For Each Ws In Worksheets
  With ActiveWindow
    .DisplayHorizontalScrollBar = -1
    .DisplayVerticalScrollBar = -1
    .DisplayWorkbookTabs = -1
    .DisplayHeadings = -1
    .DisplayGridlines = -1
  End With
  If Ws.Index <> 1 Then Ws.Visible = 1
Next
If Application.CommandBars.Item("Ribbon").Height < 100 Then
  Application.SendKeys "^{F1}"
End If
Application.DisplayFormulaBar = -1
End Sub

A+

Martial
 

Statistiques des forums

Discussions
311 716
Messages
2 081 828
Membres
101 823
dernier inscrit
mohamed3s