OVH Cloud OVH Cloud

numero auto personalisable

20 réponses
Avatar
yannick
Bonjour,

Voici mon cas, j’ai une table client avec pour identifiant N°client en type
de donnée : texte

Cette table est alimentée de deux façon, la première par un programme
extérieur en automatique qui ont un N°client qui peut être 00001, GHJKLPE ,
G000053333.
De ce coté ci pas de problème cela fonctionne bien au niveau de
l’intégration dans la base acesss.
Du coté interface access , la deuxième façon, je voudrais pouvoir rajouter
des clients en automatique dans cette même table avec pour préfixe DIV pour
identifier d’où vient les clients( soit du programme extérieur, soit
d’access).
J’ai essayé d’utiliser la fonction numéro auto
http://officesystem.access.free.fr/ex_numauto_personnel.htm
qui fonctionne bien en numérique (2006090001) si je n’ai pas de donnée
provenant de l’extérieur ou si je n’ai pas DIV2006090001

Ce que je veux obtenir c’est ceci :
N°client
00001
GHJKLPE
DIV2006090001
G000053333
DIV2006090002
00002
DIV2006090003

Est-ce faisable ??

Merci pour tous ceux qui voudront bien m’aider.

Bon dimanche

Yannick

10 réponses

1 2
Avatar
Gilbert
Modifie la ligne
lgtmp= .......
en
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "]," &
Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)

J'avais oublié des ""

Gilbert


"yannick" a écrit dans le message de
news:
Merci Gilbert,
je suis en train de tester ta nouvelle fonction, et j'ai de nouveau
l'erreur

2001 sur:
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"],Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0) avec pour
parametre le bouton de commande : [Forms]![Cl_fic].N°client = AutoNum(3,
"client", "N°client", "DIV");

Sinon si je met [Forms]![Cl_fic].N°client = AutoNum(3, "client",
"N°client",

"")
il bloque sur la condition du if à la ligne lgTmp = Nz(DMax(FieldName,
TableName), 0) en me mettant incompatibilite de type.

Je te remercie pour ta patience et ton aide.






Le premier cas ne fonctionne pas car la fonction DMAX renvoie la valeur
GHJKLPE avec les exemples que tu as donnés dans ton premier message.
Et GHJKLPE +1 c'est difficile à calculer !!

Voici la fonction modifiée. Le "Case NumSimple" a été regroupé avec le
"Case


Else" car le traitement est le même.
De plus, tu peux lui passer ton préfixe en paramètre.


Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String

If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "],
Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
If IsNumeric(lgTmp) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & lgTmp & "1"
End If
End Select
End Function


Gilbert

"yannick" a écrit dans le message de
news:
Merci merci cela fonctionne .
j'ai rajouter des nz , pour tous les cas cela fonctionne,à part le
premier



,
bizzare, je vais regarder.
Merci pour tout.




J'avais fait des test avec des noms de champs que j'ai oublié de
remplacer


dans la fonction

Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax(FieldName, TableName, "Left(["
&




FieldName & "], 3)= 'div'"), 4) + 1
Case Année
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
AutoNum = "DIV" & Mid(DMax(FieldName, TableName,
"Left([" &




FieldName & "], 3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans le
message de




news:
Bonjour,
je suis en train d'essayer.

Dans la fonction Autonum:
Case Mois
lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)



If Left(lgTmp, 6) = CLng(Format(date, "yyyymm")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(date, "yyyymm") &
"0001")



End If


Il se bloque sur lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)
en me mettant le message d'erreur: erreur d'execution 2001
operation





annulée.
J'utilise le bouton Ajout qui me me fait appel à la fonction
autonum





pour
le
choix 3

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal
[Forms]![cl_fic].N°client = AutoNum(3, "client", "N°client")
End Sub

D'ou vient cette erreur?

Merci pour votre aide.

Bonne soirée





Bonjour,

Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens ce






que
tu
recherches?

Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3)= 'div'"), 4) + 1
Case Année
lgTmp = Nz(DMax(FieldName, TableName), 0)
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > 'div'"), 4)




If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > 'div'"), 4)




If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm"))
Then






AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > 'div'"), 4)




If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
AutoNum = "DIV" & Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans le
message de




news:
Bonjour,
je suis completement coincé je n'arrive pas à mettre en forme
ce







code:

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal

Je dois rechercher la valeur maximale de div*
strSql = "SELECT Max(Mid([N°client],4)) AS valh FROM client
WHERE







(((client.N°client) Like 'div*'))"
si la valeur maximale existe alors
[Forms]![cl_fic].N°client = DIV & AutoNum(3, "client",
"N°client")







Sinon
Je fais rien.
Fin si
End sub


Avec la fonction AutoNum
Function AutoNum(AutoNumType As AutoType, TableName As String,
_







Optional FieldName As String = "Numéro") As Long
Select Case AutoNumType
Case NumSimple

AutoNum = Nz(DMax(FieldName, TableName), 0) + 1

Case année
lgTmp = Nz(DMax(FieldName, TableName), 0)
If Left(lgTmp, 4) = CLng(Year(date)) Then
AutoNum = lgTmp + 1
Else
AutoNum = CLng(Year(date) & "00001")
End If
Case mois

lgTmp = Nz(DMax(FieldName, TableName), 0)
If Left(lgTmp, 6) = CLng(Format(date, "yyyymm"))
Then







AutoNum = lgTmp + 1
Else
AutoNum = CLng(Format(date, "yyyymm") & "0001")
End If

Case semaine
lgTmp = Nz(DMax(FieldName, TableName), 0)
If Mid(lgTmp, 5, 2) = CLng(Format(date, "ww")) Then
AutoNum = lgTmp + 1
Else
AutoNum = CLng(Format(date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Nz(DMax(FieldName, TableName), 0) + 1
End Select
End Function

Est ce que vous avez compris ce que je cherche à faire? sinon
n'hesitez



pas
à me demander, j'essayerai d'etre plus clair.

Merci pour tout et bonne journée.






Bonjour,

Je ne suis pas sûr d'avoir bien compris ce que tu veux
obtenir.








La requête suivante te donne la valeur la plus élevée des
champs








qui
commencent par "DIV"

SELECT Max(Mid([TonChamp],4)) AS Expr1 FROM TaTable WHERE
(((TaTable.TonChamp) Like "div*"));

Gilbert


"yannick" a écrit dans le
message






de
news:
Bonjour,

Voici mon cas, j'ai une table client avec pour identifiant
N°client







en
type
de donnée : texte

Cette table est alimentée de deux façon, la première par un


















Avatar
yannick
Merci gilbert, tout fonctionne sauf quand le prefixe = "" il bloque sur
lgTmp = Nz(DMax(FieldName, TableName), 0) en me mettant erreur 13
incompatibilté de type.



Modifie la ligne
lgtmp= .......
en
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "]," &
Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)

J'avais oublié des ""

Gilbert


"yannick" a écrit dans le message de
news:
Merci Gilbert,
je suis en train de tester ta nouvelle fonction, et j'ai de nouveau
l'erreur

2001 sur:
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"],Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0) avec pour
parametre le bouton de commande : [Forms]![Cl_fic].N°client = AutoNum(3,
"client", "N°client", "DIV");

Sinon si je met [Forms]![Cl_fic].N°client = AutoNum(3, "client",
"N°client",

"")
il bloque sur la condition du if à la ligne lgTmp = Nz(DMax(FieldName,
TableName), 0) en me mettant incompatibilite de type.

Je te remercie pour ta patience et ton aide.






Le premier cas ne fonctionne pas car la fonction DMAX renvoie la valeur
GHJKLPE avec les exemples que tu as donnés dans ton premier message.
Et GHJKLPE +1 c'est difficile à calculer !!

Voici la fonction modifiée. Le "Case NumSimple" a été regroupé avec le
"Case


Else" car le traitement est le même.
De plus, tu peux lui passer ton préfixe en paramètre.


Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String

If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "],
Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
If IsNumeric(lgTmp) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & lgTmp & "1"
End If
End Select
End Function


Gilbert

"yannick" a écrit dans le message de
news:
Merci merci cela fonctionne .
j'ai rajouter des nz , pour tous les cas cela fonctionne,à part le
premier



,
bizzare, je vais regarder.
Merci pour tout.




J'avais fait des test avec des noms de champs que j'ai oublié de
remplacer


dans la fonction

Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax(FieldName, TableName, "Left(["
&




FieldName & "], 3)= 'div'"), 4) + 1
Case Année
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
AutoNum = "DIV" & Mid(DMax(FieldName, TableName,
"Left([" &




FieldName & "], 3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans le
message de




news:
Bonjour,
je suis en train d'essayer.

Dans la fonction Autonum:
Case Mois
lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)



If Left(lgTmp, 6) = CLng(Format(date, "yyyymm")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(date, "yyyymm") &
"0001")



End If


Il se bloque sur lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)
en me mettant le message d'erreur: erreur d'execution 2001
operation





annulée.
J'utilise le bouton Ajout qui me me fait appel à la fonction
autonum





pour
le
choix 3

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal
[Forms]![cl_fic].N°client = AutoNum(3, "client", "N°client")
End Sub

D'ou vient cette erreur?

Merci pour votre aide.

Bonne soirée





Bonjour,

Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens ce






que
tu
recherches?

Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3)= 'div'"), 4) + 1
Case Année
lgTmp = Nz(DMax(FieldName, TableName), 0)
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > 'div'"), 4)




If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > 'div'"), 4)




If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm"))
Then






AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > 'div'"), 4)




If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
AutoNum = "DIV" & Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans le
message de




news:
Bonjour,
je suis completement coincé je n'arrive pas à mettre en forme
ce







code:

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal

Je dois rechercher la valeur maximale de div*
strSql = "SELECT Max(Mid([N°client],4)) AS valh FROM client
WHERE







(((client.N°client) Like 'div*'))"
si la valeur maximale existe alors
[Forms]![cl_fic].N°client = DIV & AutoNum(3, "client",
"N°client")







Sinon
Je fais rien.
Fin si
End sub


Avec la fonction AutoNum
Function AutoNum(AutoNumType As AutoType, TableName As String,
_







Optional FieldName As String = "Numéro") As Long
Select Case AutoNumType
Case NumSimple

AutoNum = Nz(DMax(FieldName, TableName), 0) + 1

Case année
lgTmp = Nz(DMax(FieldName, TableName), 0)
If Left(lgTmp, 4) = CLng(Year(date)) Then
AutoNum = lgTmp + 1
Else
AutoNum = CLng(Year(date) & "00001")
End If
Case mois

lgTmp = Nz(DMax(FieldName, TableName), 0)
If Left(lgTmp, 6) = CLng(Format(date, "yyyymm"))
Then
















Avatar
Gilbert
Déclare la variable lgTmp en string et non pas en long.

Gilbert


"yannick" a écrit dans le message de
news:
Merci gilbert, tout fonctionne sauf quand le prefixe = "" il bloque sur
lgTmp = Nz(DMax(FieldName, TableName), 0) en me mettant erreur 13
incompatibilté de type.



Modifie la ligne
lgtmp= .......
en
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"]," &


Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)

J'avais oublié des ""

Gilbert


"yannick" a écrit dans le message de
news:
Merci Gilbert,
je suis en train de tester ta nouvelle fonction, et j'ai de nouveau
l'erreur

2001 sur:
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"],Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0) avec pour
parametre le bouton de commande : [Forms]![Cl_fic].N°client AutoNum(3,
"client", "N°client", "DIV");

Sinon si je met [Forms]![Cl_fic].N°client = AutoNum(3, "client",
"N°client",

"")
il bloque sur la condition du if à la ligne lgTmp = Nz(DMax(FieldName,
TableName), 0) en me mettant incompatibilite de type.

Je te remercie pour ta patience et ton aide.






Le premier cas ne fonctionne pas car la fonction DMAX renvoie la
valeur




GHJKLPE avec les exemples que tu as donnés dans ton premier message.
Et GHJKLPE +1 c'est difficile à calculer !!

Voici la fonction modifiée. Le "Case NumSimple" a été regroupé avec
le




"Case
Else" car le traitement est le même.
De plus, tu peux lui passer ton préfixe en paramètre.


Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro", Optional Prefixe As String) As
String





If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"],




Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
If IsNumeric(lgTmp) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & lgTmp & "1"
End If
End Select
End Function


Gilbert

"yannick" a écrit dans le
message de




news:
Merci merci cela fonctionne .
j'ai rajouter des nz , pour tous les cas cela fonctionne,à part le
premier



,
bizzare, je vais regarder.
Merci pour tout.




J'avais fait des test avec des noms de champs que j'ai oublié de



remplacer
dans la fonction

Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax(FieldName, TableName,
"Left(["






&
FieldName & "], 3)= 'div'"), 4) + 1
Case Année
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm"))
Then






AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
AutoNum = "DIV" & Mid(DMax(FieldName, TableName,
"Left([" &




FieldName & "], 3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans le
message de




news:
Bonjour,
je suis en train d'essayer.

Dans la fonction Autonum:
Case Mois
lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)



If Left(lgTmp, 6) = CLng(Format(date, "yyyymm"))
Then







AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(date, "yyyymm")
&







"0001")
End If


Il se bloque sur lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)
en me mettant le message d'erreur: erreur d'execution 2001
operation





annulée.
J'utilise le bouton Ajout qui me me fait appel à la fonction
autonum





pour
le
choix 3

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal
[Forms]![cl_fic].N°client = AutoNum(3, "client", "N°client")
End Sub

D'ou vient cette erreur?

Merci pour votre aide.

Bonne soirée





Bonjour,

Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens ce






que
tu
recherches?

Function AutoNum(AutoNumType As AutoType, TableName As
String,








Optional
FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3)= 'div'"), 4) + 1
Case Année
lgTmp = Nz(DMax(FieldName, TableName), 0)
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > > 'div'"), 4)




If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > > 'div'"), 4)




If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm"))
Then






AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date,
"yyyymm") &








"0001")
End If
Case Semaine
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > > 'div'"), 4)




If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww"))
Then








AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date,
"yyyyww") &








"0001")
End If
Case Else
AutoNum = "DIV" & Mid(DMax("TonChamp",
"TaTable",








"left([TonChamp],3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans
le








message de
news:
Bonjour,
je suis completement coincé je n'arrive pas à mettre en
forme









ce
code:

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal

Je dois rechercher la valeur maximale de div*
strSql = "SELECT Max(Mid([N°client],4)) AS valh FROM
client









WHERE
(((client.N°client) Like 'div*'))"
si la valeur maximale existe alors
[Forms]![cl_fic].N°client = DIV & AutoNum(3, "client",
"N°client")







Sinon
Je fais rien.
Fin si
End sub


Avec la fonction AutoNum
Function AutoNum(AutoNumType As AutoType, TableName As
String,









_
Optional FieldName As String = "Numéro") As Long
Select Case AutoNumType
Case NumSimple

AutoNum = Nz(DMax(FieldName, TableName), 0) + 1

Case année
lgTmp = Nz(DMax(FieldName, TableName), 0)
If Left(lgTmp, 4) = CLng(Year(date)) Then
AutoNum = lgTmp + 1
Else
AutoNum = CLng(Year(date) & "00001")
End If
Case mois

lgTmp = Nz(DMax(FieldName, TableName), 0)
If Left(lgTmp, 6) = CLng(Format(date,
"yyyymm"))









Then











Avatar
yannick
si je la declare en string il me concatenne les numero au lieu de les ajouter
lorsque prefixe="" sinon quand le prefixe <> "" alors il n'incremente plus le
numero.



Déclare la variable lgTmp en string et non pas en long.

Gilbert


"yannick" a écrit dans le message de
news:
Merci gilbert, tout fonctionne sauf quand le prefixe = "" il bloque sur
lgTmp = Nz(DMax(FieldName, TableName), 0) en me mettant erreur 13
incompatibilté de type.



Modifie la ligne
lgtmp= .......
en
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"]," &


Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)

J'avais oublié des ""

Gilbert


"yannick" a écrit dans le message de
news:
Merci Gilbert,
je suis en train de tester ta nouvelle fonction, et j'ai de nouveau
l'erreur

2001 sur:
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"],Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0) avec pour
parametre le bouton de commande : [Forms]![Cl_fic].N°client > AutoNum(3,
"client", "N°client", "DIV");

Sinon si je met [Forms]![Cl_fic].N°client = AutoNum(3, "client",
"N°client",

"")
il bloque sur la condition du if à la ligne lgTmp = Nz(DMax(FieldName,
TableName), 0) en me mettant incompatibilite de type.

Je te remercie pour ta patience et ton aide.






Le premier cas ne fonctionne pas car la fonction DMAX renvoie la
valeur




GHJKLPE avec les exemples que tu as donnés dans ton premier message.
Et GHJKLPE +1 c'est difficile à calculer !!

Voici la fonction modifiée. Le "Case NumSimple" a été regroupé avec
le




"Case
Else" car le traitement est le même.
De plus, tu peux lui passer ton préfixe en paramètre.


Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro", Optional Prefixe As String) As
String





If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"],




Len(Prefixe))= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
If IsNumeric(lgTmp) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & lgTmp & "1"
End If
End Select
End Function


Gilbert

"yannick" a écrit dans le
message de




news:
Merci merci cela fonctionne .
j'ai rajouter des nz , pour tous les cas cela fonctionne,à part le
premier



,
bizzare, je vais regarder.
Merci pour tout.




J'avais fait des test avec des noms de champs que j'ai oublié de



remplacer
dans la fonction

Function AutoNum(AutoNumType As AutoType, TableName As String,
Optional




FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax(FieldName, TableName,
"Left(["






&
FieldName & "], 3)= 'div'"), 4) + 1
Case Année
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm"))
Then






AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyymm") &
"0001")




End If
Case Semaine
lgTmp = Mid(DMax(FieldName, TableName, "Left([" &
FieldName




&
"], 3)= 'div'"), 4)
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date, "yyyyww") &
"0001")




End If
Case Else
AutoNum = "DIV" & Mid(DMax(FieldName, TableName,
"Left([" &




FieldName & "], 3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans le
message de




news:
Bonjour,
je suis en train d'essayer.

Dans la fonction Autonum:
Case Mois
lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)



If Left(lgTmp, 6) = CLng(Format(date, "yyyymm"))
Then







AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(date, "yyyymm")
&







"0001")
End If


Il se bloque sur lgTmp = Mid(DMax(FieldName, TableName,
"left([FieldName],3)='div'"), 4)
en me mettant le message d'erreur: erreur d'execution 2001
operation





annulée.
J'utilise le bouton Ajout qui me me fait appel à la fonction
autonum





pour
le
choix 3

Private Sub ajout_Click()
DoCmd.OpenForm "CL_fic", acNormal, "", "", acAdd, acNormal
[Forms]![cl_fic].N°client = AutoNum(3, "client", "N°client")
End Sub

D'ou vient cette erreur?

Merci pour votre aide.

Bonne soirée





Bonjour,

Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens ce






que
tu
recherches?

Function AutoNum(AutoNumType As AutoType, TableName As
String,








Optional
FieldName As String = "Numéro") As String
Select Case AutoNumType
Case NumSimple
AutoNum = "DIV" & Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3)= 'div'"), 4) + 1
Case Année
lgTmp = Nz(DMax(FieldName, TableName), 0)
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > > > 'div'"), 4)




If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Year(Date) & "00001")
End If
Case Mois
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > > > 'div'"), 4)




If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm"))
Then






AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date,
"yyyymm") &








"0001")
End If
Case Semaine
lgTmp = Mid(DMax("TonChamp", "TaTable",
"left([TonChamp],3) > > > > > > > > > 'div'"), 4)




If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww"))
Then








AutoNum = "DIV" & lgTmp + 1
Else
AutoNum = "DIV" & CLng(Format(Date,
"yyyyww") &








"0001")
End If
Case Else
AutoNum = "DIV" & Mid(DMax("TonChamp",
"TaTable",








"left([TonChamp],3)= 'div'"), 4) + 1
End Select
End Function


Gilbert


"yannick" a écrit dans
le








message de
news:
Bonjour,
je suis completement coincé je n'arrive pas à mettre en
forme









ce
code:

Private Sub ajout_Click()




















Avatar
Gilbert
Bon, j'espère que celle-ci fonctionne correctement dans tous les cas de
figure.

Gilbert


Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String

If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "]," &
Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Prefixe & Right("0000000000" & lgTmp + 1, 10)
End Select
End Function
Avatar
yannick
Bonjour Gilbert,
j'ai essayé tous les cas , avec ta nouvelle fonction on a le meme message
d'erreur que dans l'autre: incompatibilté de type quand prefixe ="" dans la
condition si:
If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "]," &
Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Cela fonctionne si la table est vierge
si on met un N° client TTTTTTTT cela bloque.
Merci pour ton aide et bon dimanche.



Bon, j'espère que celle-ci fonctionne correctement dans tous les cas de
figure.

Gilbert


Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String

If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "]," &
Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Prefixe & Right("0000000000" & lgTmp + 1, 10)
End Select
End Function





Avatar
Gilbert
Encore quelques modifs
Pour utiliser cette fonction, tu as besoin de cocher la référence Microsoft
DAO 3.x Object Library

Gilbert

Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String
Dim rst As Recordset
Dim lgTmp As String
If Prefixe <> "" Then
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM Table2 HAVING ((Left([" &
FieldName & "]," & Len(Prefixe) & ")='" & Prefixe & "') AND
(IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 & "))<>False));")
If Not rst.EOF Then
lgTmp = Nz(rst!valeurmax, 0)
Else
lgTmp = 0
End If
Set rst = Nothing
Else
lgTmp = Nz(DMax(FieldName, TableName, "isnumeric([" & FieldName &
"])=-1"), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Prefixe & Right("0000000000" & lgTmp + 1, 10)
End Select
End Function



"yannick" a écrit dans le message de
news:
Bonjour Gilbert,
j'ai essayé tous les cas , avec ta nouvelle fonction on a le meme message
d'erreur que dans l'autre: incompatibilté de type quand prefixe ="" dans
la

condition si:
If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "],"
&

Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Cela fonctionne si la table est vierge
si on met un N° client TTTTTTTT cela bloque.
Merci pour ton aide et bon dimanche.



Bon, j'espère que celle-ci fonctionne correctement dans tous les cas de
figure.

Gilbert


Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String

If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"]," &


Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Prefixe & Right("0000000000" & lgTmp + 1, 10)
End Select
End Function







Avatar
yannick
Bonsoir Gilbert
Il se bloque sur table2
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM Table2 HAVING ((Left([" &
FieldName & "]," & Len(Prefixe) & ")='" & Prefixe & "') AND
(IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 & "))<>False));")
si je le remplace par tablename idem
erreur 3078 il ne trouve pas la table ou requete table2

merci pour tout.



Encore quelques modifs
Pour utiliser cette fonction, tu as besoin de cocher la référence Microsoft
DAO 3.x Object Library

Gilbert

Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String
Dim rst As Recordset
Dim lgTmp As String
If Prefixe <> "" Then
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM Table2 HAVING ((Left([" &
FieldName & "]," & Len(Prefixe) & ")='" & Prefixe & "') AND
(IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 & "))<>False));")
If Not rst.EOF Then
lgTmp = Nz(rst!valeurmax, 0)
Else
lgTmp = 0
End If
Set rst = Nothing
Else
lgTmp = Nz(DMax(FieldName, TableName, "isnumeric([" & FieldName &
"])=-1"), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Prefixe & Right("0000000000" & lgTmp + 1, 10)
End Select
End Function



"yannick" a écrit dans le message de
news:
Bonjour Gilbert,
j'ai essayé tous les cas , avec ta nouvelle fonction on a le meme message
d'erreur que dans l'autre: incompatibilté de type quand prefixe ="" dans
la

condition si:
If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName & "],"
&

Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Cela fonctionne si la table est vierge
si on met un N° client TTTTTTTT cela bloque.
Merci pour ton aide et bon dimanche.



Bon, j'espère que celle-ci fonctionne correctement dans tous les cas de
figure.

Gilbert


Function AutoNum(AutoNumType As AutoType, TableName As String, Optional
FieldName As String = "Numéro", Optional Prefixe As String) As String

If Prefixe <> "" Then
lgTmp = Nz(Mid(DMax(FieldName, TableName, "Left([" & FieldName &
"]," &


Len(Prefixe) & ")= '" & Prefixe & "'"), Len(Prefixe) + 1), 0)
Else
lgTmp = Nz(DMax(FieldName, TableName), 0)
End If
Select Case AutoNumType
Case Année
If Left(lgTmp, 4) = CLng(Year(Date)) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Year(Date) & "00001")
End If
Case Mois
If Left(lgTmp, 6) = CLng(Format(Date, "yyyymm")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyymm") & "0001")
End If
Case Semaine
If Mid(lgTmp, 5, 2) = CLng(Format(Date, "ww")) Then
AutoNum = Prefixe & lgTmp + 1
Else
AutoNum = Prefixe & CLng(Format(Date, "yyyyww") & "0001")
End If
Case Else
AutoNum = Prefixe & Right("0000000000" & lgTmp + 1, 10)
End Select
End Function












Avatar
Eric
Bonsoir,

Je pense que Gilbert voulait écrire :
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM [" & TableName & "]
HAVING ((Left([" & FieldName & "]," & Len(Prefixe) & ")='" & Prefixe &
"') AND (IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 &
"))<>False));")

Bonsoir Gilbert
Il se bloque sur table2
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM Table2 HAVING ((Left([" &
FieldName & "]," & Len(Prefixe) & ")='" & Prefixe & "') AND
(IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 & "))<>False));")
si je le remplace par tablename idem
erreur 3078 il ne trouve pas la table ou requete table2

merci pour tout.




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
yannick
Merci Eric,
je viens d'essayer il bloque sur la ligne en me mettant
erreur d'excution 13, incompatibilté de type
merci pour votre aide.

Bonsoir,

Je pense que Gilbert voulait écrire :
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM [" & TableName & "]
HAVING ((Left([" & FieldName & "]," & Len(Prefixe) & ")='" & Prefixe &
"') AND (IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 &
"))<>False));")

Bonsoir Gilbert
Il se bloque sur table2
Set rst = CurrentDb.OpenRecordset("SELECT Max(CInt(Mid([" & FieldName &
"]," & Len(Prefixe) + 1 & "))) AS ValeurMax FROM Table2 HAVING ((Left([" &
FieldName & "]," & Len(Prefixe) & ")='" & Prefixe & "') AND
(IsNumeric(Mid([" & FieldName & "]," & Len(Prefixe) + 1 & "))<>False));")
si je le remplace par tablename idem
erreur 3078 il ne trouve pas la table ou requete table2

merci pour tout.




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




1 2