Numéro Auto +Texte

Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 20 juin 2008 à 00:03
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 25 juin 2008 à 02:20
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

Utilisateur anonyme
20 juin 2008 à 00:21
Salut,

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

__________
  Kenji
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2008 à 01:35
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2008 à 02:00
... 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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
20 juin 2008 à 12:25
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2008 à 12:37
salut,

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

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
20 juin 2008 à 13:04
Salut !

Non c'est pareil meme avec ca :





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








:?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2008 à 13:22
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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
20 juin 2008 à 13:40
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2008 à 15:12
ok...

n'oublie pas le tit bouton vert
++
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
20 juin 2008 à 16:18
Salut !

Non j'ai pas oublié.. y'a un beug :/
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2008 à 16:53
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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
20 juin 2008 à 23:13
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2008 à 23: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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
25 juin 2008 à 02:20
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
0
Rejoignez-nous