Autres numéro de serie dans une textbox

ngexcel

XLDnaute Occasionnel
Bonjour à tous
J'ai construit avec plusieurs macros trouvés sur le site une base de donnée.
je bloque sur mon userform1 qui comporte une textbox105 en haut à gauche dans mon userform
je voudrais qu'à chaque ouverture de mon userform1 que ma textbox105 incrémente N° consigne 001 puis des que je fais nouveau N° consigne 2 etc...
Je vous remercie de votre aide
 

Pièces jointes

  • base.xlsm
    105.9 KB · Affichages: 10

ngexcel

XLDnaute Occasionnel
re bonjour
j ai testé quand tu fais
pour Désignation / Référence :
tu saisis a et b et clique sur le bouton Nouveau ➯ TextBox105 : 001

dans le userform ca marche il met bien 001
par contre dans la feuil2 colonne AE ligne 2 rien

si tu fais * saisis a et b et clique sur le bouton Nouveau ➯puis Enregistrer
il enregistre dans la feuil 2 colonAE ligne 2 la Désignation / Référence : et décale en AE ligne 3 le numero 001
 
Dernière édition:

soan

XLDnaute Barbatruc
Rebonjour ngexcel,

tu as écrit : « super oui cela fonctionne encore merci »

merci pour ton retour ! :)



tu as écrit : « peux-tu me dire où tu as placé la macro ? »

ah, ah ! c'est pas évident de trouver où j'ai placé ma modif, hein ? 😜

c'est dans Modules de classes, Classe1, tout à la fin de la sub butt_Click() :

VB:
Private Sub butt_Click()
Dim a, b, ref, pare, c, d, n&

...

End Select
If usff <> 1 Then Exit Sub
n = Worksheets("Feuil2").Cells(Rows.Count, 1).End(3).Row
UserForm1.TextBox105 = IIf(n = 1, "", Format(n - 1, "000"))
End Sub

ce sont mes 3 lignes 341 à 343 :

ligne 341 : on sort si usff est différent de 1, donc si c'est pas le 1er UserForm, donc si c'est pas UserForm1.

les 2 lignes suivantes sont donc exécutées seulement pour UserForm1 :

ligne 342 : n est la dernière ligne utilisée en "Feuil2", selon la colonne A (3 = xlUp) ; bien sûr, j'ai ajouté la déclaration n& (tout en haut, à la fin de la 1ère ligne Dim) ; c'est idem que : Dim n As Long.

ligne 343 : y'a plus qu'à renseigner le TextBox105 de UserForm1 : chaîne de caractères vide si n la dernière ligne utilisée est la ligne 1 (car ligne n° 1 = ligne d'en-têtes ➯ y'a encore aucune donnée !) ; sinon, donc si n > 1 (2 ou plus), on affiche n - 1 avec le format "000", car nombre de données qui est dans la liste du UF = nombre de lignes moins 1.

or le titre de ce sujet est : « numéro de serie dans une textbox » ; c'est à cela que j'ai répondu, d'autant plus que ton énoncé ne précisait pas qu'il y avait une liste de données à gérer en dessous, que TextBox105 change quand on clique sur une de ces données, ni quand on supprime une donnée de cette liste ; et bien sûr, c'est pas indiqué non plus qu'il y a un Module de classes, avec une gestion très spéciale des UF et de certains de leurs boutons. :rolleyes:

donc par rapport à tout ça, et pour les nouvelles demandes de ton post #33 (ci-dessus), je passe la main, car je connais trop peu de choses sur la programmation spéciale via des Modules de classes ; il faut donc un autre intervenant très calé là-dessus pour pouvoir te répondre efficacement ! peut-être patricktoulon, dysorthographie, ou Staple1600 ? (salut à tous) ; bonne chance ! 🍀



pour cet autre intervenant, je précise que dans UserForm1 :

* le bouton « Nouveau » est pour enregistrer les données de la liste ListBox1.

* le bouton « Enregistrer » a l'air de faire double emploi, car j'ai cru au départ que c'était pour enregistrer les données de ListBox1 alors qu'en fait, c'est tout simplement pour noter 2 dates et enregistrer le fichier ; j'ai cependant mis en en commentaire la dernière ligne :
Code:
Private Sub CommandButton28_Click() 'Enregistrer
  Dim p&: Application.ScreenUpdating = 0
  With Worksheets("Feuil2")
    p = .Cells(Rows.Count, "AA").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
    .Range("AA" & p) = TextBox101: .Range("AB" & p) = TextBox102 'Date du jour & Date de fin
  End With
  'ActiveWorkbook.Save
End Sub

cette sub est tout à la fin du module de UserForm1 ; j'ai aussi inhibé Workbook_Open() en ajoutant en 1ère ligne de code Exit Sub (sinon, en plus d'une musique via Jouer_WAV, y'a un « mouchard » UserName qui s'inscrit en feuille "Connexions"). 😜

soan
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

[Remarques et observations en passant]
J'ai lu mon nom dans le message#34)
Donc, c'est comme quand je vois de la lumière, j'entre dans la place ;)
1) J'ai aussi lu:
"et pour les nouvelles demandes de ton post 33#"
Qui dit nouvelle demande, dit (en théorie) nouvelle discussion.
(pour commodité et fluidité de lecture)
2) Tout comme soan, j'appuie le conseil de diffuser des fichier exemple sans code VBA actif dans ThisWorkBook (histoire d'éviter les mauvaises surprises)
3) Pour les modules de classe, c'est le point 1) qui détermine ma future réponse ;)
[/Remarques et observations en passant]
 

patricktoulon

XLDnaute Barbatruc
bonsoir
moi aussi j'ai vu mon pseudo cité
je sais pas ce qu'un éventuel module classe viens dans ce sujet "numero-de-serie-dans-une-textbox"
ou alors le titre de la discussion n'a rien a voir avec la demande

incrémenter un numéro de série formaté ou pas implique une mémorisation
ce la peut se faire de différente manière mais nul besoin d'un module classe pour ça
si ce numéro doit continuer a s'incrémenter après fermeture et ré ouverture du fichier les meilleurs solutions
sont un fichier ini , save setting

si le fichier doit être utiliser sur plusieurs pc alors enregistrer la donnée dans un name ou autre support
cellule cela implique bien entendu d'enregistrer au bon moment pour ne pas garder des formulaire(feuille) éventuellement remplis

bref, si je ne suis pas intervenu c'est que pour moi la demande manquait de précision sur le contexte
 

ngexcel

XLDnaute Occasionnel
Bonsoir à tous merci soan pour ton implication mais effectivement dans la feuil2 du fichier nommé base je n ai pas mon numéro qui s enregistre ou si il s enregistre il est décalé vers le bas si quelqu un aurait une piste merci à vous tous
 

soan

XLDnaute Barbatruc
@patricktoulon, Staple, (resalut)

après avoir lu ton post #36, j'ajoute ces quelques précisions :

sur UserForm1, y'a entre autres les 2 boutons de commande "Nouveau" et "Enregistrer" ; dans le code VBA du module de UserForm1, y'a bien la sub CommandButton28_Click() qui est pour le bouton "Enregistrer" ; mais pour le bouton "Nouveau", y'a pas la sub correspondante, qui aurait dû être CommandButton27_Click() ! 😭
pourtant, cliquer sur le bouton "Nouveau" effectue bien une action, et sans plantage ! c'est car c'est géré par le Module de classes, mais où exactement ? mystère ! ça m'a paru être une belle petite usine à gaz, mais peut-être que cette impression que j'ai eue est seulement car j'm'y connais quasiment pas du tout en Modules de classes ? pour info, le Module de classes Classe1 fait 439 lignes ; il y a aussi Module3 (438 lignes) et Module4 (166 lignes).

j'ai remarqué que UserForm1 n'a de sub UserForm_Initialize() mais que la sub affich() de Module4 est appelée à l'ouverture de UserForm1 et joue ce rôle ; c'est d'ailleurs dans cet sub affich() que j'avais placé mon code VBA, au départ, avant de le déplacer à la fin de la sub butt_Click().

toujours dans Module4, y'a tout un schmilblik avec la function use() et les subs maj() ; maj2() ; decod() ; dans Module3, y'a plein d'subs avec des noms plus ou moins ésotériques, comme remett() (avec 2 t) ; à ne pas confondre avec remettt() (avec 3 t) ; y'a aussi en ligne 182 la sub ajout() (qui est appelée quand on clique sur le bouton "NOUVEAU", mais pas à tous les coups !).

en bref, cet exo doit être un vrai petit régal pour ceux qui aiment les Modules de classes, les labyrinthes, et les défis ! 🤪 😂 🤣 😁


@ngexcel, Staple,

je suis sûr que j'aurais pu t'aider efficacement si le code VBA de ton classeur avait été conçu de façon classique, sans Modules de classes, ni tout un labyrinthe de subs entremêlées, mais là, je suis complètement dépassé ! 😭 c'est pourquoi je ne peux pas t'aider davantage sur cet exo (même si les nouvelles demandes de ton post #33 sont moins des nouvelles demandes que ta demande initiale non suffisamment précise !). 😢

(même réponse pour ton post #37, que j'ai lu aussi)

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
ajout pour Staple et patrick :

je suis sûr que c'est pas ngexcel qui a fait le Module de classes Classe1 ! car si c'était lui, il aurait sûrement pu faire très facilement ce qu'il a demandé dès le départ : une numérotation en série de la TextBox105, mais de telle façon que la liste ListBox1 de UserForm1 soit correctement gérée (même en cas de clic sur un item, ou en cas de suppression d'un item) ; et de telle façon aussi que ça soit correct en "Feuil2", colonnes A, B, et AE ; chapeau à celui qui arrivera à faire tout ça ! 😃


je crois aussi que ngexcel n'avait aucune idée de la complexité inhérente à sa demande ! (mais c'est pas de sa faute ! il n'était pas au courant, c'est tout !)

soan
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

=>soan
Moi, je veux juste économiser de l'eau
J'ai repris une douche
En général, quand on s'adresse au demandeur, il nous répond
J'ai encore les cheveux humides et toujours pas de réponse (de la part de ngexcel) à ce que j'évoquais dans le message #35
(mais peut-être aurais-je du être plus précis)
Dans le doute, je vais aller me rebrosser les dents
Et peut-être que cette fois-ci ngexcel prendra le temps de me répondre.
;)
 

soan

XLDnaute Barbatruc
=>Staple

oui, mais si ngexcel est allé dormir, il ne répondra pas avant demain ! 😜 et si en plus il ira faire des courses à son supermarché demain matin, peut-être qu'il ne pourra répondre qu'en début d'après-midi ? on ne peut pas connaître l'emploi du temps des demandeurs ! ;)

soan
 

ngexcel

XLDnaute Occasionnel
Bonjour à tous non je suis pas partir faire les courses je bosse en équipe pour le fichier j' ai effectivement pris des morceaux de programmes et construit mon projet et c est vrai que c'est un usine à gaz merci comme même bonne journée à vous
 

Statistiques des forums

Discussions
285 021
Messages
1 865 157
Membres
156 101
dernier inscrit
GillesL
Haut Bas