Numérisation personnalisée Structure CASE/IF

cs_Nana35 Messages postés 18 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 2 février 2009 - 15 oct. 2008 à 17:42
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009 - 17 oct. 2008 à 12:49
Bonjour à tous,
Je voudrais créer un n° de parcelle en concaténant mes champs (PAinsee, PAsection, Panum, PAdivision) sous un formulaire dans Access 2003.
Je souhaite que PAnum contienne 4 chiffres. J'ai donc crée uu programme avec la structure if permettant de rajouter un "0" lorsque le PAnum<10, "00" quand <100... Cette methode me rajoutait à chaque fois "000". Alors j'ai essayé avec la structure case mais pas de meilleurs résultats.
Je débute en VBA, donc il s'agit certainement d'une erreur toute con!
Voici mon programme:

Private Sub BOUTON_ENR_ID_PARCELLE_Click()
'La numérotation de la facture est construite en 4 parties:
'1) le numéro INSEE de la commune où est situé la parcelle,
'2) la section
'3) n° de parcelle
'4) division de la parcelle si c'est le cas (a ou b)

Dim PAinsee As Integer, PAsection As String, PAnum As Integer, PAdivision As String
Dim NumeroParcelle As String

'Ajouter un "0" au n° parcelle si la section ne comporte qu'une lettre.
If Len(Me.PAsection) < 2 Then
NumeroParcelle = Me.PAinsee.Value & "0" & Me.PAsection.Value
Else
NumeroParcelle = Me.PAinsee.Value & Me.PAsection.Value
End If

'Ajouter des "0" devant les n° parcelle pour constituer un numéro à 4 chiffres.
Select Case PAnum
Case 1 To 9
NumeroParcelle = NumeroParcelle & "000" & Me.PAnum.Value & Me.PAdivision.Value
Case 10 To 99
NumeroParcelle = NumeroParcelle & "00" & Me.PAnum.Value & Me.PAdivision.Value
Case 100 To 999
NumeroParcelle = NumeroParcelle & "0" & Me.PAnum.Value & Me.PAdivision.Value
Case Else
NumeroParcelle = NumeroParcelle & Me.PAnum.Value & Me.PAdivision.Value

End Select
PAid = NumeroParcelle
End Sub

Merci d'avance

6 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 oct. 2008 à 18:11
Bonjour,

c'est à celà que sert Format ...

MsgBox Format(2, "0000")
MsgBox Format(23, "0000")
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 oct. 2008 à 18:20
et pour tes lettres avec 1 zéro devant si une seule lettre :

toto = "A"
MsgBox String(2 - Len(toto), "0") & toto

toto = "AB"
MsgBox String(2 - Len(toto), "0") & toto
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
15 oct. 2008 à 18:32
bonjour
ton gros probleme c'est que dans ton évenement click tu déclare les
variables  pour faire ton numéro donc les integer ont la valeur 0 et
les string la valeur ""

tu dois donc les déclarer bien avant en public au niveau de la form ou se trouve le bouton ainsi que, je suppose, les textbox qui te permettent de saisir les valeurs

ensuite tu pourra remplacer ton usine à gaz par cette simple ligne
NumeroParcelle = PAinsee.Value &
format(PAsection.Value,00) &
format(PAnum.Value,0000) & PAdivision.Value

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
15 oct. 2008 à 18:34
oups jfmarques a raison
c'est format (toto,"0000") et non pas format (toto, 0000) comme je l'ai écrit

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0

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

Posez votre question
cs_Nana35 Messages postés 18 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 2 février 2009
16 oct. 2008 à 09:38
Merci, ça fonctionne.
Mais je crois que j'ai encore des choses à apprendre dans la création des procédures.
Ciao!
0
Redman31100 Messages postés 167 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 février 2009
17 oct. 2008 à 12:49
si c'est la solution,
penser : REPONSE ACCEPTEE dans la signature de pile_poil, c'est pas pour faire joli tu sais ^^








Redman
0
Rejoignez-nous