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
remplacerdans 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
pourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens ce
queturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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 denews: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'hesitezpas
à 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
quicommencent par "DIV"
SELECT Max(Mid([TonChamp],4)) AS Expr1 FROM TaTable WHERE
(((TaTable.TonChamp) Like "div*"));
Gilbert
"yannick" a écrit dans le
messagedenews:Bonjour,
Voici mon cas, j'ai une table client avec pour identifiant
N°cliententypede donnée : texte
Cette table est alimentée de deux façon, la première par un
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" <yannick@discussions.microsoft.com> a écrit dans le message de
news:B263BC38-3512-43CE-84A6-65BF6735F7EE@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:67615557-7652-4F17-8571-67DBF56298C0@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news: 09C883D8-CA33-4696-83A3-680A2E478C57@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message
de
news:175B53C0-23DF-4E39-92A2-9D720EAE612A@microsoft.com...
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
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
remplacerdans 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
pourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens ce
queturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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 denews: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'hesitezpas
à 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
quicommencent par "DIV"
SELECT Max(Mid([TonChamp],4)) AS Expr1 FROM TaTable WHERE
(((TaTable.TonChamp) Like "div*"));
Gilbert
"yannick" a écrit dans le
messagedenews:Bonjour,
Voici mon cas, j'ai une table client avec pour identifiant
N°cliententypede donnée : texte
Cette table est alimentée de deux façon, la première par un
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'erreur2001 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
"CaseElse" 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
remplacerdans la fonction
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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 denews: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
operationannulée.J'utilise le bouton Ajout qui me me fait appel à la fonction
autonumpourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens cequeturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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"))
ThenAutoNum = "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 denews:Bonjour,
je suis completement coincé je n'arrive pas à mettre en forme
cecode:
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
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" <yannick@discussions.microsoft.com> a écrit dans le message de
news:CBEE8A33-1A12-415F-93FD-3DAE3F1D6EDF@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le message de
news:B263BC38-3512-43CE-84A6-65BF6735F7EE@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:67615557-7652-4F17-8571-67DBF56298C0@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news: 09C883D8-CA33-4696-83A3-680A2E478C57@microsoft.com...
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
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'erreur2001 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
"CaseElse" 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
remplacerdans la fonction
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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 denews: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
operationannulée.J'utilise le bouton Ajout qui me me fait appel à la fonction
autonumpourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens cequeturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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"))
ThenAutoNum = "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 denews:Bonjour,
je suis completement coincé je n'arrive pas à mettre en forme
cecode:
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
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'erreur2001 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
"CaseElse" 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
remplacerdans la fonction
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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 denews: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
operationannulée.J'utilise le bouton Ajout qui me me fait appel à la fonction
autonumpourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens cequeturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As
String,
OptionalFieldName 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"))
ThenAutoNum = "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 denews:Bonjour,
je suis completement coincé je n'arrive pas à mettre en
forme
cecode:
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
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" <yannick@discussions.microsoft.com> a écrit dans le message de
news:CBEE8A33-1A12-415F-93FD-3DAE3F1D6EDF@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:B263BC38-3512-43CE-84A6-65BF6735F7EE@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:67615557-7652-4F17-8571-67DBF56298C0@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans
le
message de
news: 09C883D8-CA33-4696-83A3-680A2E478C57@microsoft.com...
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
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'erreur2001 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
"CaseElse" 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
remplacerdans la fonction
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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 denews: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
operationannulée.J'utilise le bouton Ajout qui me me fait appel à la fonction
autonumpourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens cequeturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As
String,
OptionalFieldName 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"))
ThenAutoNum = "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 denews:Bonjour,
je suis completement coincé je n'arrive pas à mettre en
forme
cecode:
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
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'erreur2001 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
valeurGHJKLPE 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"CaseElse" 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,
OptionalFieldName 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 denews: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
remplacerdans la fonction
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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"))
ThenAutoNum = "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 denews: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"))
ThenAutoNum = "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
operationannulée.J'utilise le bouton Ajout qui me me fait appel à la fonction
autonumpourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens cequeturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As
String,OptionalFieldName 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"))
ThenAutoNum = "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"))
ThenAutoNum = "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
lemessage denews:Bonjour,
je suis completement coincé je n'arrive pas à mettre en
formececode:
Private Sub ajout_Click()
Déclare la variable lgTmp en string et non pas en long.
Gilbert
"yannick" <yannick@discussions.microsoft.com> a écrit dans le message de
news:C2BD7DD8-E013-413E-9292-DE96179F9E77@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le message de
news:CBEE8A33-1A12-415F-93FD-3DAE3F1D6EDF@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:B263BC38-3512-43CE-84A6-65BF6735F7EE@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:67615557-7652-4F17-8571-67DBF56298C0@microsoft.com...
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" <yannick@discussions.microsoft.com> a écrit dans
le
message de
news: 09C883D8-CA33-4696-83A3-680A2E478C57@microsoft.com...
Bonjour,
je suis completement coincé je n'arrive pas à mettre en
forme
ce
code:
Private Sub ajout_Click()
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'erreur2001 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
valeurGHJKLPE 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"CaseElse" 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,
OptionalFieldName 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 denews: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
remplacerdans la fonction
Function AutoNum(AutoNumType As AutoType, TableName As String,
OptionalFieldName 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"))
ThenAutoNum = "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 denews: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"))
ThenAutoNum = "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
operationannulée.J'utilise le bouton Ajout qui me me fait appel à la fonction
autonumpourlechoix 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éeBonjour,
Est-ce qu'en utilisant cette nouvelle fonction AutoNum tu
obtiens cequeturecherches?
Function AutoNum(AutoNumType As AutoType, TableName As
String,OptionalFieldName 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"))
ThenAutoNum = "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"))
ThenAutoNum = "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
lemessage denews:Bonjour,
je suis completement coincé je n'arrive pas à mettre en
formececode:
Private Sub ajout_Click()
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
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
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
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
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
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
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
lacondition 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
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" <yannick@discussions.microsoft.com> a écrit dans le message de
news:AFD00783-FEAA-4387-8E78-647908470945@microsoft.com...
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
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
lacondition 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
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.
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.
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.
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
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
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