Numéro suivant automatqiue (Incrémenter) dans une textbox
Bonjour,
J'ai créé un formulaire de saisie afin que celui ci puisse générer à chaque fois un numéro chronologique.
Mon userform:
1 combobox de recherche, puis des textbox 8 au total où sont les informations. Mon userform me sert à consulter ma saisie et aussi à insérer des nouvelles saisies.
J'ai un bouton ajouter et c'est par celui ci que je souhaiterai que dans ma TEXTBOX 7, lorsque je clique sur "ajouter un nouvel enregistrement", et que je réponds OUI, un numéro de chrono vient exemple: 2019-001, à la prochaine saisie où j'active le bouton AJOUTER, je réponds à nouveau OUI, le numéro de chrono dans la Textbox suit : 2019-002
J'ai travaillé avec un code comme celui ci:
Private Sub CommandButton1_Click()
Dim L As Integer
'pour avoir num chronon automatique
Me.TextBox7.Value = Format(Application.WorksheetFunction.Max(Worksheets("OS").Columns(7)) + 1, "2019-000")
If MsgBox("Enregistrer un nouvel O.S avec numéro de chrono SET ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
L = Sheets("OS").Range("a65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
Range("A" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
Range("B" & L).Value = TextBox2
Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = TextBox6
Range("G" & L).Value = TextBox7
Range("H" & L).Value = TextBox8
Range("I" & L).Value = TextBox9
Range("J" & L).Value = TextBox10
End If
End Sub
Malheureusement j'obtiens bien le numéro 2019-001, mais à chaque fois que je clique sur mon bouton ajouter, j'ai toujours le 2019-001, je n'ai pas de numéro suivant chronologique.
J'ai bien essayé toutes les solutions en surfant sur le net, rien à faire.
A vous qui êtes plus experts en la matière, auriez vous une solution??
D'avance merci,
Bonjour,
Si, tel qu'il est présenté, le code ne propose pas le N° suivant, c'est que l'ancien n'est pas écrit ou est écrit dans la mauvaise feuille.
Apparemment , tout se joue sur la feuille OS, or dans les écritures du contenu de l'userform , la feuille n'est pas précisée.
essayer:
With WorkSheets("OS")
.../...
.Range("A" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
.Range("A" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
.Range("B" & L).Value = TextBox2
.../...
End With
A+
EDIT: Après la première écriture, en colonne G on trouve: 2019-001, donc du texte .Le Max de la colonne G est donc 0. 0+1=1 avec le format spécifié on aura 2019-001.
La modification proposée ci dessus est inutile dans ce cas précis mais c'est une bonne habitude à prendre.
Une solution possible :
mettre le format personnalisé 2019-000 colonne G
enregistrer dans la feuille avec:
Range("G" & L).Value = Right(TextBox7, 3)
Merci pour votre réactivité, Malheureusement le code d'Agglo Plus, même en mettant with, ça ne fonctionne pas, j'ai toujours 2019-001 à chaque enregistrement.
Pour la proposition de i20100, je place où ce morceau de code??
D'avance merci,
re,
Pour la proposition de i20100, je place où ce morceau de code??
c'est pour remplacer la ligne
Me.TextBox7.Value = Format(Application.WorksheetFunction.Max(Worksheets("OS").Columns(7)) + 1, "2019-000")
Voir la solution proposée dans l'Edit de mon message
Merci encore pour vos conseils, alors voici le code adapter selon vos propositions:
Private Sub CommandButton1_Click()
Dim L As Integer
With Worksheets("OS")
Me.TextBox6.Value = Format(Application.WorksheetFunction.Max(Worksheets("OS").Columns(6)) + 1, "2019-000")
End With
If MsgBox("Enregistrer un nouvel O.S avec numéro de chrono SET ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
L = Sheets("OS").Range("a65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
Range("A" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
Range("B" & L).Value = TextBox2
Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = Right(TextBox6, 3)
Range("G" & L).Value = TextBox7
Range("H" & L).Value = TextBox8
Range("I" & L).Value = TextBox9
End If
End Sub
J'ai enfin une incrémentation, dans mon userform j'ai bien 2019-001, puis ensuite 2016-002 etc... mais dans ma base de données de mon classeur Excel il me rentre dans ma colonne F (anciennement G, car j'ai supprimer une textbox qui m'étais inutile), si bien que ma chronologie se trouve en F soit 6ème colonne dans le tableau Excel, il m'indique 1,2,3.
Quand j'ai voulu, faire : 0.0+1=1, dans le code, ça m'indique erreur et me surligne en jaune.
Ce qui serait super c'est que cela m'incrémente la même chose dans l'userform mais aussi dans ma base de données OS.
Pour répondre à la question, les données sont bien toutes dans une même feuille OS.
D'avance merci.
Oups.. référene 2019-001, 2019-002 etc...
J'ai repéré fautes de frappe dans précédent message...
pour l'affichage du style 2019-011, adapter le format des cellules de la colonne F comme préconisé dans mon Edit
Quand j'ai voulu, faire : 0.0+1=1, dans le code, ça m'indique erreur et me surligne en jaune.
quelle ligne ?
Private Sub CommandButton1_Click()
Dim L As Integer
With Worksheets("OS")
Me.TextBox6.Value = Format(Application.WorksheetFunction.Max(Worksheets("OS").Columns(6)) 0.0+ 1 =1, "2019-000")
End With
If MsgBox("Enregistrer un nouvel O.S avec numéro de chrono SET ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
L = Sheets("OS").Range("a65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
Range("A" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
Range("B" & L).Value = TextBox2
Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = Right(TextBox6, 3)
Range("G" & L).Value = TextBox7
Range("H" & L).Value = TextBox8
Range("I" & L).Value = TextBox9
End If
J'ai bien tenté d'adapter le code en fonction de vos indications, je ne suis pas très expérimentée en matière de programmation, j'ai débuté il n'y a pas longtemps, alors je pense que je n'ai pas compris ce que vous m'indiquiez.
J'ai donc placer With et le bout du code indiqué comme ceci:
Private Sub CommandButton1_Click()
Dim L As Integer
With Worksheets("OS")
Me.TextBox6.Value = Format(Application.WorksheetFunction.Max(Worksheets("OS").Columns(6)) + 1, "2019-000")
Puis la suite dans le même bouton:
End With
If MsgBox("Enregistrer un nouvel O.S avec numéro de chrono SET ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
L = Sheets("OS").Range("a65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
Range("A" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
Range("B" & L).Value = TextBox2
Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = Right(TextBox6, 3)
Range("G" & L).Value = TextBox7
Range("H" & L).Value = TextBox8
Range("I" & L).Value = TextBox9
End If
End Sub
Quand je lance mon userform, et que je clique sur le bouton "Ajouter", j'ai bien ma textbox6 qui affiche 2019-001, si je continue avec une seconde saisie dans ma textbox6 ça se suit comme je le souhaite 2019-002, mais par contre dans ma feuille OS excel (mon tableau de base de données), je n'ai pas dans la colonne F, 2019-001 et 2019-002, je me retrouve avec 1,2 et arrivé à 3 les chiffres ne se suivent plus. Ca me reste figé dans l'userform à 2019-003, et dans ma base de données plus de lignes qui s'insèrent.
J'espère avoir été à peu prés compréhensible.
Sinon mille excuses.
Rentrant en réunion, je suis vos réponses et revient sur le thème rapidement.
Merci de votre compréhension.
Et merci encore.
il n'est plus question de modifier le code, mais l'affichage en colonne F !
si dans cette colonne vous avez 1, 2 ou 3 ou ...., mettez le format de ces cellules (ainsi que toute la colonne) au format personnalisé : 2019-000 , les données s'afficheront 2019-001, 2019-002, ou 2019-003 ou 2019-0xx ...
Bonjour,
Je suis bien revenue sur mon userform et j'ai bien suivi votre édit et vos conseils, ça marche très bien, un grand grand merci!!!