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

Re,

Mission accomplie mais Martial, je n'ai pas grand chose à te copier dans ce post.
Tu pourras voir par toi-même, je te joins le fichier sur lesquels figurent 3 test de macro :confused:
 

Pièces jointes

  • TEST MACRO.xlsm
    65.8 KB · Affichages: 47
  • TEST MACRO.xlsm
    65.8 KB · Affichages: 51

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Re,

Ce que je voulais, c'est voir lorsque tu sélectionnes l'image, ce qui est écrit dans la macro pour sélectionner l'image.

Un autre test avec le fichier ci-dessous

A+
 

Pièces jointes

  • TEST MACRO.xlsm
    70.1 KB · Affichages: 61
  • TEST MACRO.xlsm
    70.1 KB · Affichages: 59

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Re,

Il ne se passe pas grand chose justement lors de l'enregistrement de la macro nommée ici pour l'occasion : TEST_iMAGE :confused: :confused:
Au moment de l'enregistrement, je ne peux pas cliquer dessus, j'ai donc fait le test (après avoir sélectionné l'image)
suivant :
1 . sélection de l'image
2. clic droit puis affecter une macro.

Ci-dessous la retranscription de l'enregistreur de macro
Sub TEST_iMAGE()
'
' TEST_iMAGE Macro
'
Selection.OnAction = "Image1_Clic"
End Sub

Pour information, sache qu'à l'ouverture du fichier j'ai eu un nouveau message d'erreur (cf. image) :(
 

Pièces jointes

  • Ouverture fichier.PNG
    Ouverture fichier.PNG
    5.6 KB · Affichages: 50

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Pour enregistrer la macro :
- tu lances l'enregistreur
- puis pour sélectionner ton rectangle tu fais Ctrl + clic gauche, ton rectangle sera alors sélectionné, tu changes la couleur ou le texte du bouton
- tu postes la macro

A+
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Martial

Je t'assure, je sais le faire.
C'est la manip. que j'ai d'ailleurs employée mais il n'en demeure pas moins que depuis le fichier
il n'enregistre rien :( :(

Résultats de la macro pour l'image
Sub testimage()
'
' testimage Macro
'End Sub


Résultats de la macro pour le rectangle
Sub testrestangle()
' testrestangle Macro
' Range("I6").Select
End Sub

J'ai essayé sur 2 postes différents équipés d'Excel 2007 et le résultat est identique : pas plus de lignes de commandes dans la macro enregistrée :confused: :confused:
C'est à y perdre son latin.

Penses-tu qu'en renommant chaque rectangle ex: BOUT1, BOUT2, etc
il y aurait un moyen de contourner le problème ?

Ou puisque l'action depuis ces rectangles se fait par clic, n'est-il pas possible d'annuler cette possibilité (rendre inactif clic sur bouton) en fonction de l'utilisateur ?
Ces propositions vont te paraitre sans doute stupides :eek:
mais je ne m'explique pas le pourquoi de ses dysfonctionnements de boutons comme de lancement de l'USF.
 
Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Martial,

Voici le résultat de l'enregistrement de macro avec Excel 2010

Code:
Sub Macro2()
'
' Macro2 Macro
'


'
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle 14")).Select
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "Moi même"
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 8). _
        ParagraphFormat
        .BaselineAlignment = msoBaselineAlignAuto
        .SpaceWithin = 1
        .SpaceBefore = 0
        .SpaceAfter = 0
        .FirstLineIndent = 0
        .Alignment = msoAlignCenter
        .HangingPunctuation = msoTrue
    End With
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 3).Font
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
        .Fill.ForeColor.TintAndShade = 0
        .Fill.ForeColor.Brightness = 0
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(4, 5).Font
        .BaselineOffset = 0
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
        .Fill.ForeColor.TintAndShade = 0
        .Fill.ForeColor.Brightness = 0
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
    Range("F4").Select
End Sub

2. Voici le résultat de l'enregistrement de macro avec Excel 2010 pour l'image

Code:
  Sub Macro3()
'
' Macro3 Macro
'

'
    ActiveSheet.Shapes.Range(Array("Picture 1")).Select
    Range("L9").Select
End Sub
 
Dernière édition:

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Martial

Pour répondre à ta question : non
J'ai toujours les mêmes messages d'erreur que ceux postés en #104 :(
Mais je continue à chercher et je pense que je vais finir par trouver les bonnes formules.
En revanche cela risque de ne pas être très académique aussi, si cela ne te dérange pas, je viendrais te demander comment mettre le tout à la sauce Excel :eek:
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Martial

Pourrais tu m'expliquer, s'il te plait, la partie du code placé dans USF mot de passe ?

Comment peux-tu savoir quel sera le bouton actif pour le niveau donné ou plus exactement comment savons-nous que
le niveau 1 active tous les commandButtons,
le niveau 2 permet d'activer tous les commandbuttons sauf le commandButton 21
le niveau 3 active les commandbutton 22 à 24 .....


Code:
Private Sub CommandButton1_Click() 'Valider
Dim Ws As Worksheet, Utilisateur$, j&
Application.ScreenUpdating = 0
If TextBox2 = ComboBox1.Column(1) Then
    
  If ComboBox1.Column(2) = "Niveau 1" Then
      j = 3
  
      'Call Affiche_tt_Feuilles
    ElseIf ComboBox1.Column(2) = "Niveau 2" Then j = 2
    ElseIf ComboBox1.Column(2) = "Niveau 3" Then j = 1
    ElseIf ComboBox1.Column(2) = "Niveau 4" Then GoTo Suite
  End If
 Else
  MsgBox "Le mot de passe n'est pas correcte"
  TextBox2.SetFocus
  Exit Sub
End If
For i = 0 To j
  Sheets(1).Shapes("CommandButton" & Bt(i)).Select
  Selection.Enabled = -1
Next
Suite:
[A1].Activate
Unload Me
Application.ScreenUpdating = -1
End Sub
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Salut Moustic, le forum,

Tu as remarqué que tu n'utilisais pas le dernier fichier que j'ai fourni au post #107 !!!!
Je te répond sur la macro dans ton dernier post

VB:
Private Sub CommandButton1_Click() 'Valider
'Déclaration des variables
 Dim Ws As Worksheet, Utilisateur$, j&
'Mise à jour de l'écran non validée
 Application.ScreenUpdating = 0
'Si le TextBox2 = la Colonne 2 du ComboBox1 (puisque nous avons un ComboBox1 multi colonne)
 If TextBox2 = ComboBox1.Column(1) Then
   'Si la 3ème colonne du ComboBox1 correspond à "Niveau 1", alors ...
   If ComboBox1.Column(2) = "Niveau 1" Then
       'j = 3 correspond à la totalité des actions
       j = 3
       'Lorsque ce n'est pas mis en commentaire comme tu l'as fais, ça affiche toutes les feuilles
       'Call Affiche_tt_Feuilles
     'Si la 3ème colonne du ComboBox1 correspond à "Niveau 2", alors ... j = 2
     ElseIf ComboBox1.Column(2) = "Niveau 2" Then j = 2
     'Idem ci-dessus
     ElseIf ComboBox1.Column(2) = "Niveau 3" Then j = 1
     ElseIf ComboBox1.Column(2) = "Niveau 4" Then GoTo Suite
   End If
  Else 'Sinon mot de passe incorrecte
   MsgBox "Le mot de passe n'est pas correcte"
   TextBox2.SetFocus
   Exit Sub
 End If
'Lorsque nous avons définit le j, nous pouvons afficher les boutons
 For i = 0 To j 'De 0 à j (soit 1, 2, 3 ou 4)
   'Bt est un tableau ou array définit au lancement du fichier et déclaré en variable Public (donc accessible à tout moment)
   'Nous sélectionnons le bouton en question
   Sheets(1).Shapes("CommandButton" & Bt(i)).Select
   'Puis nous lui donnons la valeur Vrai 
   Selection.Enabled = -1
 Next
 Suite:
 [A1].Activate
 Unload Me
 Application.ScreenUpdating = -1
 End Sub

Dans la dernière version celle du post #107 il y a 2 array : 1 pour les boutons et 1 pour les Rectangles arrondis

A+

Martial
 

moustic54

XLDnaute Occasionnel
Re : Compteur automatisé dans useform

Bonsoir Martial

Merci pour ces explications.
En effet, je n'ai pas repris le code de ton post #107 parce que n'ayant trouvé l'origine des nombreux messages d'erreur.

J'ai fait de nouvelles tentatives :

A l'ouverture du fichier j'ai réussi à obtenir : depuis Private Sub Workbook_Open()

- Affichage de l'onglet "EDITO" (feuille protégée pour éviter de se promener de cellules en cellules)
- CommandButtons affichés mais non actifs
- Tous les rectangles arrondis masqués
- Affichage de l'USF Mot de passe
- Et le placement dans la cellule N13

J'ai ajouté également 2 images sur le feuille : l'une pour que tout utilisateur puisse verrouiller et obtenir l'affichage initial d'ouverture de fichier sans être obligé de fermer puis d'ouvrir à nouveau (exemple de l'utilisateur 4 qui voudrait passer en utilisateur 1)
L'autre pour afficher à nouveau l'USF Mot de passe.

Et le tout sans le moindre message d'erreur :)

Mais maintenant je vais devoir revoir les codes de l'USF Mot de passe en conséquence et là c'est de nouveau la catastrophe :confused: :confused:

Rendre actifs certains comandbuttons et afficher les rectangles masqués selon le niveau de l'utilisateur

Je ne sais pas par quel bout prendre mon problème. :confused:

Si tu as une idée je veux bien :eek:
 

Yaloo

XLDnaute Barbatruc
Re : Compteur automatisé dans useform

Bonsoir Moustic, le forum,

Tu peux mettre ton fichier, comme ça on va voir l'avancé de tes travaux :)
Quand tu dis que ta feuille EDITO est protégée, elle l'était aussi lorsque tu faisais les tests avec mon fichier ? Car si oui, cela vient peut-être de là.

A+
 

Statistiques des forums

Discussions
311 720
Messages
2 081 917
Membres
101 839
dernier inscrit
laurentEstrées