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
yannick
Bonsoir,
je me permet de revenir sur mon post, n'ayant pas trouvé encore de solutions
à mon probleme.
Si quelqu'un pourrait me donner un coup de pouce, il serait le bienvenue.
Je ne sais pas du tout comment faire face à ce probleme.

Bonne soirée


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



Avatar
Gilbert
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 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



Avatar
yannick
Bonsoir,
je te remercie d'avoir pris de ton temps à me répondre.
Je pense que c'est la bonne piste, j'essaye et je te redis.
J'ai un bouton ajouter qui doit regarder si DIV2006090001 existe ,si'il
n'est pas là alors il le creer sinon il faut qu'il me mette DIV2006090002 et
ainsi de suite.

Merci pour tous, en esperant que cela fonctionne

Bonne soiré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 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








Avatar
yannick
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 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








Avatar
Gilbert
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 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










Avatar
yannick
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 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
















Avatar
Gilbert
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
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


















Avatar
yannick
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
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























Avatar
Gilbert
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
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

























Avatar
yannick
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
















1 2