Numéro Auto +Texte

Signaler
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Salut !

J'avais déjà posé cette question dans le forum et on m'a donné ce code ci :

Private Sub Command1_Click()




T_Num.Text = Format(Val(T_Num.Text) + 1, "0000")








End Sub



Mais en fait, il y'a un élément qui manque...

Je voudrais qu'au load, le Text1 soit supérieur d'un point du dernier enregistrement suivit d'un texte "RE8" dont le 8 est le chiffre de l'année en cours... puis RE9 pour l'an 2009 et 10 pour 2010.

Quand je met juste le code donné ci-dessus,




T_Num.Text = "RE8" & Format(Val(T_Num.Text) + 1, "0000")





Avec le RE8 au début, il ne fonctionne plus...

C'est vrais que je n'ai pas géré le RE8, mais déjà avec ce beug... je ne peux plus avancer...
Pouvez vous m'aider svp ?

Merci d'avance

----------
OS        : Windows XP SP2
Platforme : VB 6.0 + SP6

Ok VB6.0 c'est pas net !

14 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Salut,

Quand tu fais Val(T_Num.Text), il faut le faire faire compter le RE8.
Voir Left$, Right$, Mid$

__________
  Kenji
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
salut,

euh... na moi pas comprendre la question

le Text1 soit supérieur d'un point du dernier enregistrement

> 1 point? un point de quoi? de quel enregistrement?

suivit d'un texte "RE8" dont le 8 est (...)

çà ok

T_Num.Text = "RE8" & (...)

ouai c'est sur que si çà commence par "RE"..., tu n'auras pas ton "+1 point" avant....

    Dim sYear As String
    sYear = Format$(Date, "YY") ' "08" ou "10" ou
autre
    If LeftB$(sYear, 2) = "0" Then sYear = RightB$(sYear, 2) ' si commence par zéro, on ne prend
que le 2e carac

    T_Num.Text = "Ton +1 point qui vient de je ne sais où " & _
                 "RE" & sYear

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
... en même temps j'ai pas non plus fait l'effort de comprendre ^^

T_Num.Text = Format$(Val(T_Num.Text) + 1, "0000") & " RE" & sYear
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut !

Merci PCPT !

Dim sYear As String
sYear = Format$(Date, "YY")If LeftB$(sYear, 2) "0" Then sYear RightB$(sYear, 2)
T_Num = "RE" & sYear & "/" & Format$(Val(T_Num.Text) + 1, "0000")

Ca fonctionne parfaitement pour le RE8/
Mais il n'avance pas dans les chiffres 0000
Pourquoi a chaque enregistrement il n'avance pas ? :s

RE8/0001
RE8/0001




RE8/0001

RE8/0001

Alors que normalemnt il devrait être :




RE8/0001

RE8/0002




RE8/0003
...

RE8/9999




Merci encore pour ton aide
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

tant qu'il y aura 0 dans T_Num, tu auras 0001

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut !

Non c'est pareil meme avec ca :





T_Num = "RE" & sYear & "/" & Format$(Val(T_Num.Text) + 1)








:?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
sinitrus
-> tu fais vraiment pas d'effort. t'essayes même pas de comprendre ni le code ni les conseils.
sans compter que ton énoncé n'était pas bien expliqué. soudainement ton "compteur" se trouve à la fin, tu disais au début !
Text1 soit supérieur d'un point du dernier enregistrement suivit d'un texte "RE8"


bref !

Private Sub Command1_Click()
    Dim iPosSlash As Integer
    Dim lVal      As Long
    Dim sYear As String
    
'   on récupère la
valeur. soit il y a REX/VAL, soit j'en sais rien.
'   VAL nous renvoie la valeur. donc si çà commence par RE, on
aura toujours Val renvoyant 0
'   on va donc
récupérer la droite du slash!
    iPosSlash = InStr(1, T_Num.Text, "/")

'   si cette position est 0,
il n'y en a pas. sinon on récupère la valeur
    If iPosSlash = 0 Then
        lVal = 0&
    Else
        lVal = Val(Mid$(T_Num.Text, iPosSlash +
1))
    End If

'   dernier chiffre (sur
1 ou 2 carac) de l'année en cours
    sYear = Format$(Date, "YY") ' "08" ou "10" ou
autre
    If LeftB$(sYear, 2) = "0" Then sYear = RightB$(sYear, 2) ' si commence par zéro, on ne prend
que le 2e carac
    
'   on
affiche
    T_Num.Text = "RE" & sYear & "/" & Format$(lVal + 1, "0000")
End Sub

bon copier/coller...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut !

PCPT, la question n'est pas sur l'effort que je donne ici mais sur ce qui se passe avec moi sur ma machine...
Quand tu m'a donné le code pour le RE, quelque soit l'emplacement je me suis dis que c'est pareil, fo juste que le RE soit avant ou après...
Puis pour le numéro automatique, j'ai fouillé mais le code que j'ai eu dans la premiere question (sur un autre topique que celu- ci) et d'ailleur mais j'ai trouvé plus simple celui là...
J'ai fais plusieurs test mais sans aucun resultat... et enfin les explications donné sur le RE sont "bien entrés dans ma tit tête".
Quand Mortalino m'a dit d'enlever le 0 du T_Num... là ça m'a été bizarre ^o)
Enfin bref, merci a tous pour le coup de main, je sais que souvent je suis lourd mais croyez moi, je cherche aussi à comprendre plutot qu'a coder en automate (copy/past)

Merci encore a tous
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
ok...

n'oublie pas le tit bouton vert
++
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut !

Non j'ai pas oublié.. y'a un beug :/
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
umm

à te lire y'a quand même souvent un bug ou un problème réseau ou de ton PC mais que chez toi, bref c'est souvent des éléments extérieurs ^^

je ne te le souhaite pas trop
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut !

looool
nn je faisais allusion a un bug dans le code que tu m'as donné :D

Je ne sais pas si je n'arrives pas a expliquer dans le bon ordre mais voilà, je vais essayer encore et désolé pour ça.

RE8/0001 est le code du "Reçu Espèce"
Il signifie REcu de l'an 2008/
puis vient s'ajouter le numéro du recu 0001 qui sera a chaque load, à +1
donc j'aurai pour 5 enregistrements ceci :
RE8/0001




RE8/0002




RE8/0003




RE8/0004




RE8/0005







Le code que tu as donné plus haute :




Dim 
sYear 
As String


sYear = 
Format
$(
Date

"YY"
)




If 
LeftB
$(sYear, 
2
) = 
"0" 
Then 
sYear = 
RightB
$(sYear, 
2
)



T_Num.Text =


"RE" 
& sYear " &


"/"

Est parfaitement bien opérationnel.

Mais après, les numéro 0001 ne se suivent pas. Voilà où même le code que tu viens de me donner ne fonctionne pas.





Private Sub Command1_Click()



Dim 
iPosSlash 
As Integer


Dim 
lVal      
As Long


Dim 
sYear 
As String


iPosSlash = 
InStr
(
1
, T_Num.Text, 
"/"
)


If 
iPosSlash = 

Then


lVal = 
0&


Else


lVal = 
Val
(
Mid
$(T_Num.Text, iPosSlash +
1
))


End If


If 
LeftB
$(sYear, 
2
) = 
"0" 
Then 
sYear = 
RightB
$(sYear, 
2
)


T_Num.Text = 
"RE" 
& sYear & 
"/" 

Format
$(lVal + 
1

"0000"
)





End Su

b







Donc ici en fait, il refuse et ne me met que RE8/0001 a chaque enregistrement.
Je me suis laissé dire que si je met un Data qui appel le dernier enregistrement et le fait afficher dans le T_Num puis rajoute 1 au 4 derniers caractères de gauche, ca pourait fonctionner. Mais cette fois, dans le load :

Private Sub Form_Load()



Dim sYear As String
sYear = Format$(Date, "YY")If LeftB$(sYear, 2) "0" Then sYear RightB$(sYear, 2)

Data.DatabaseName = App.Path & "\BaseDonnee.mdb"
Data.RecordSource = "Espece"
Data.Refresh
Data.Recordset.MoveLast

T_Num = "RE" & sYear & "/" & Format$(Val(Data.Recordset!NRecu) + 1, "0000")






End Sub



Alors :
Il affiche le RE
Il recupère les derniers chiffres de l'année en ométant les 0
Il affiche le /
Il compact le RE + 8 + /
Il ajoute au dernier enregistrement un point (+1)

J'arrive ici donc avec recuperer le tout y compris le dernier enregistrement, mais une fois intégré du RE8/ il refuse de continuer le compteur.
Par contre si je supprime et laisse ceci :





Private Sub Form_Load()




Data.DatabaseName = App.Path & "\BaseDonnee.mdb"

Data.RecordSource = "Espece"

Data.Refresh

Data.Recordset.MoveLast

T_Num = Format$(Val(Data.Recordset!NRecu) + 1, "0000")




End Sub








Il me fait le compte aussi parfaitement que possible.

Voilà mon soucis... J'espère que tu me pardonne si j'avais mal expliqué au début... et tu pouras pas te plaindre que j'ai pas fais d'effort :p
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
j'me plainds qu'à moitié, me doutais bien que quand tu avais utilisé le terme "enregistrement" au tout départ çà nous cachait quelquechose...
cf : le Text1 soit supérieur d'un point du dernier enregistrement


ton "pseudo-bug" n'a rien à voir avec le moment d'execution (chargement ou LOAD)

si ta zone est attachée à un champ de DB (database) tout le reste est faussé...


pas plus compliqué
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

Salut !

J'ai fais plus simple...
J'ai recuperer le RE8/ dans un textbox et le 0001 dans un second texte box et rassemblé le tout dans un troisième textbox
Tout les 3 enregistrés dans la BD, je peux utiliser dont le textbox 3 pour définir le numéro de mes Reçus.

Merci a tous pour ces codes importants, ils m'on vraiment servit et merci encore a toi PCPT pour ton aide. J'espère que tu m'excusera ^^

Merci