Bonjour
J'ai un champ qui va contenir un numér de greffe et nous avons un
algoritme
nous permettante de savoir si ce numéro de greffe est bon ou non.
L'algorithme est le suisvant :
voici un exemple de greffe : 200-12-049338-933
2001204933893 : on extrait les chiffres impairs (ayant une place impaire
dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à la
vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir ces
chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
2024383
* 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
4+0+4+8+7+6+6 = 35
On reprend notre numéro de greffe (toujours sans le dernier chiffre) est
on
extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que précedemment
:
0+1+0+9+3+9 = 22.
Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne le
dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour donner
un
nombre divisible par 10e nombre (soit par 10).
Je suis bloquée pour écride le code, je sais que je dois utiliser
Public Function ValideGref(strGref As String) As Boolean
Dim dblNbImpair As Double
ete nsuite mettre tout ce qu'il faut dans:
'mid(strgref,,)
'& concaténation
'cdbl()
'5 Mod 10
End Function
Mais je coince... Need some help
D'avance merci beaucoup
Briochette
Bonjour
J'ai un champ qui va contenir un numér de greffe et nous avons un
algoritme
nous permettante de savoir si ce numéro de greffe est bon ou non.
L'algorithme est le suisvant :
voici un exemple de greffe : 200-12-049338-933
2001204933893 : on extrait les chiffres impairs (ayant une place impaire
dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à la
vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir ces
chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
2024383
* 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
4+0+4+8+7+6+6 = 35
On reprend notre numéro de greffe (toujours sans le dernier chiffre) est
on
extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que précedemment
:
0+1+0+9+3+9 = 22.
Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne le
dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour donner
un
nombre divisible par 10e nombre (soit par 10).
Je suis bloquée pour écride le code, je sais que je dois utiliser
Public Function ValideGref(strGref As String) As Boolean
Dim dblNbImpair As Double
ete nsuite mettre tout ce qu'il faut dans:
'mid(strgref,,)
'& concaténation
'cdbl()
'5 Mod 10
End Function
Mais je coince... Need some help
D'avance merci beaucoup
Briochette
Bonjour
J'ai un champ qui va contenir un numér de greffe et nous avons un
algoritme
nous permettante de savoir si ce numéro de greffe est bon ou non.
L'algorithme est le suisvant :
voici un exemple de greffe : 200-12-049338-933
2001204933893 : on extrait les chiffres impairs (ayant une place impaire
dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à la
vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir ces
chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
2024383
* 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
4+0+4+8+7+6+6 = 35
On reprend notre numéro de greffe (toujours sans le dernier chiffre) est
on
extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que précedemment
:
0+1+0+9+3+9 = 22.
Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne le
dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour donner
un
nombre divisible par 10e nombre (soit par 10).
Je suis bloquée pour écride le code, je sais que je dois utiliser
Public Function ValideGref(strGref As String) As Boolean
Dim dblNbImpair As Double
ete nsuite mettre tout ce qu'il faut dans:
'mid(strgref,,)
'& concaténation
'cdbl()
'5 Mod 10
End Function
Mais je coince... Need some help
D'avance merci beaucoup
Briochette
Option Explicit
Private Sub Command1_Click()
Dim greffe As String, greffon As String, impairs As Long, pairs As Long,
valeur As Long
greffe = "200-12-049338-933"
greffon = alleger(greffe)
impairs = 2 * ValeurImPaire(greffon)
pairs = ValeurPaire(greffon)
valeur = sommechiffres(impairs) + sommechiffres(pairs) + Right(greffe,
1)
Debug.Print "greffon : " & greffon & vbCrLf
Debug.Print "Chiffres impairs : " & ValeurImPaire(greffon) & vbCrLf
Debug.Print "somme des impairs : " & sommechiffres(impairs) & vbCrLf
Debug.Print "chiffres pairs : " & ValeurPaire(greffon) & vbCrLf
Debug.Print "somme des pairs : " & sommechiffres(pairs) & vbCrLf
Debug.Print valeur
End Sub
Function dernierChiffre(ByVal S As String) As Integer
dernierChiffre = Right(S, 1)
End Function
Function ValeurImPaire(ByVal S As String) As Long
Dim résultat As Long
While Len(S) > 0
résultat = 10 * résultat + Left(S, 1)
S = Mid(S, 3)
Wend
ValeurImPaire = résultat
End Function
Function alleger(ByVal S As String) As String
Dim résultat As String, I As Long
For I = 1 To Len(S)
If InStr("0123456789", Mid(S, I, 1)) > 0 Then résultat = résultat +
Mid(S, I, 1)
Next I
alleger = Left(résultat, Len(résultat) - 1)
End Function
Function sommechiffres(N As Long) As Long
Dim résultat As Long
While N > 0
résultat = résultat + (N Mod 10)
N = N 10
Wend
sommechiffres = résultat
End Function
Function ValeurPaire(ByVal S As String) As Long
ValeurPaire = ValeurImPaire(Mid(S, 2))
End Function
Sûrement un exercice d'algorithmie car je ne vois pas bien le problème
concret que cela sous-tend.
Un partiel peut-être ?
5 minutes montre en main.
Il suffit de procéder petit à petit comme l'indique l'énoncé
"briochette" a écrit dans le message
de news:
> Bonjour
>
> J'ai un champ qui va contenir un numér de greffe et nous avons un
> algoritme
> nous permettante de savoir si ce numéro de greffe est bon ou non.
> L'algorithme est le suisvant :
>
> voici un exemple de greffe : 200-12-049338-933
> 2001204933893 : on extrait les chiffres impairs (ayant une place impaire
> dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à la
> vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir ces
> chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
> 2024383
> * 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
> 4+0+4+8+7+6+6 = 35
> On reprend notre numéro de greffe (toujours sans le dernier chiffre) est
> on
> extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
> chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que précedemment
> :
> 0+1+0+9+3+9 = 22.
>
> Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne le
> dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour donner
> un
> nombre divisible par 10e nombre (soit par 10).
>
> Je suis bloquée pour écride le code, je sais que je dois utiliser
> Public Function ValideGref(strGref As String) As Boolean
> Dim dblNbImpair As Double
> ete nsuite mettre tout ce qu'il faut dans:
> 'mid(strgref,,)
> '& concaténation
> 'cdbl()
> '5 Mod 10
> End Function
>
> Mais je coince... Need some help
>
> D'avance merci beaucoup
>
> Briochette
Option Explicit
Private Sub Command1_Click()
Dim greffe As String, greffon As String, impairs As Long, pairs As Long,
valeur As Long
greffe = "200-12-049338-933"
greffon = alleger(greffe)
impairs = 2 * ValeurImPaire(greffon)
pairs = ValeurPaire(greffon)
valeur = sommechiffres(impairs) + sommechiffres(pairs) + Right(greffe,
1)
Debug.Print "greffon : " & greffon & vbCrLf
Debug.Print "Chiffres impairs : " & ValeurImPaire(greffon) & vbCrLf
Debug.Print "somme des impairs : " & sommechiffres(impairs) & vbCrLf
Debug.Print "chiffres pairs : " & ValeurPaire(greffon) & vbCrLf
Debug.Print "somme des pairs : " & sommechiffres(pairs) & vbCrLf
Debug.Print valeur
End Sub
Function dernierChiffre(ByVal S As String) As Integer
dernierChiffre = Right(S, 1)
End Function
Function ValeurImPaire(ByVal S As String) As Long
Dim résultat As Long
While Len(S) > 0
résultat = 10 * résultat + Left(S, 1)
S = Mid(S, 3)
Wend
ValeurImPaire = résultat
End Function
Function alleger(ByVal S As String) As String
Dim résultat As String, I As Long
For I = 1 To Len(S)
If InStr("0123456789", Mid(S, I, 1)) > 0 Then résultat = résultat +
Mid(S, I, 1)
Next I
alleger = Left(résultat, Len(résultat) - 1)
End Function
Function sommechiffres(N As Long) As Long
Dim résultat As Long
While N > 0
résultat = résultat + (N Mod 10)
N = N 10
Wend
sommechiffres = résultat
End Function
Function ValeurPaire(ByVal S As String) As Long
ValeurPaire = ValeurImPaire(Mid(S, 2))
End Function
Sûrement un exercice d'algorithmie car je ne vois pas bien le problème
concret que cela sous-tend.
Un partiel peut-être ?
5 minutes montre en main.
Il suffit de procéder petit à petit comme l'indique l'énoncé
"briochette" <briochette@discussions.microsoft.com> a écrit dans le message
de news: 45AEFC22-FB67-466B-A198-E84D3D235B19@microsoft.com...
> Bonjour
>
> J'ai un champ qui va contenir un numér de greffe et nous avons un
> algoritme
> nous permettante de savoir si ce numéro de greffe est bon ou non.
> L'algorithme est le suisvant :
>
> voici un exemple de greffe : 200-12-049338-933
> 2001204933893 : on extrait les chiffres impairs (ayant une place impaire
> dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à la
> vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir ces
> chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
> 2024383
> * 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
> 4+0+4+8+7+6+6 = 35
> On reprend notre numéro de greffe (toujours sans le dernier chiffre) est
> on
> extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
> chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que précedemment
> :
> 0+1+0+9+3+9 = 22.
>
> Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne le
> dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour donner
> un
> nombre divisible par 10e nombre (soit par 10).
>
> Je suis bloquée pour écride le code, je sais que je dois utiliser
> Public Function ValideGref(strGref As String) As Boolean
> Dim dblNbImpair As Double
> ete nsuite mettre tout ce qu'il faut dans:
> 'mid(strgref,,)
> '& concaténation
> 'cdbl()
> '5 Mod 10
> End Function
>
> Mais je coince... Need some help
>
> D'avance merci beaucoup
>
> Briochette
Option Explicit
Private Sub Command1_Click()
Dim greffe As String, greffon As String, impairs As Long, pairs As Long,
valeur As Long
greffe = "200-12-049338-933"
greffon = alleger(greffe)
impairs = 2 * ValeurImPaire(greffon)
pairs = ValeurPaire(greffon)
valeur = sommechiffres(impairs) + sommechiffres(pairs) + Right(greffe,
1)
Debug.Print "greffon : " & greffon & vbCrLf
Debug.Print "Chiffres impairs : " & ValeurImPaire(greffon) & vbCrLf
Debug.Print "somme des impairs : " & sommechiffres(impairs) & vbCrLf
Debug.Print "chiffres pairs : " & ValeurPaire(greffon) & vbCrLf
Debug.Print "somme des pairs : " & sommechiffres(pairs) & vbCrLf
Debug.Print valeur
End Sub
Function dernierChiffre(ByVal S As String) As Integer
dernierChiffre = Right(S, 1)
End Function
Function ValeurImPaire(ByVal S As String) As Long
Dim résultat As Long
While Len(S) > 0
résultat = 10 * résultat + Left(S, 1)
S = Mid(S, 3)
Wend
ValeurImPaire = résultat
End Function
Function alleger(ByVal S As String) As String
Dim résultat As String, I As Long
For I = 1 To Len(S)
If InStr("0123456789", Mid(S, I, 1)) > 0 Then résultat = résultat +
Mid(S, I, 1)
Next I
alleger = Left(résultat, Len(résultat) - 1)
End Function
Function sommechiffres(N As Long) As Long
Dim résultat As Long
While N > 0
résultat = résultat + (N Mod 10)
N = N 10
Wend
sommechiffres = résultat
End Function
Function ValeurPaire(ByVal S As String) As Long
ValeurPaire = ValeurImPaire(Mid(S, 2))
End Function
Sûrement un exercice d'algorithmie car je ne vois pas bien le problème
concret que cela sous-tend.
Un partiel peut-être ?
5 minutes montre en main.
Il suffit de procéder petit à petit comme l'indique l'énoncé
"briochette" a écrit dans le message
de news:
> Bonjour
>
> J'ai un champ qui va contenir un numér de greffe et nous avons un
> algoritme
> nous permettante de savoir si ce numéro de greffe est bon ou non.
> L'algorithme est le suisvant :
>
> voici un exemple de greffe : 200-12-049338-933
> 2001204933893 : on extrait les chiffres impairs (ayant une place impaire
> dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à la
> vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir ces
> chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
> 2024383
> * 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
> 4+0+4+8+7+6+6 = 35
> On reprend notre numéro de greffe (toujours sans le dernier chiffre) est
> on
> extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
> chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que précedemment
> :
> 0+1+0+9+3+9 = 22.
>
> Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne le
> dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour donner
> un
> nombre divisible par 10e nombre (soit par 10).
>
> Je suis bloquée pour écride le code, je sais que je dois utiliser
> Public Function ValideGref(strGref As String) As Boolean
> Dim dblNbImpair As Double
> ete nsuite mettre tout ce qu'il faut dans:
> 'mid(strgref,,)
> '& concaténation
> 'cdbl()
> '5 Mod 10
> End Function
>
> Mais je coince... Need some help
>
> D'avance merci beaucoup
>
> Briochette
Merci car je suis une toute nouvelle débutante VBA, j'ai eu juste un cour
il
y a une semaine.
Cela va servir à un formuliare de commande de jugement, donc le numéro de
greffe ne sera jamais le même. Puis-je remplacer le numéro donné dans ton
code par des 00 ou xx
Merci
Briochette
"Patrice Henrio" a écrit :Option Explicit
Private Sub Command1_Click()
Dim greffe As String, greffon As String, impairs As Long, pairs As
Long,
valeur As Long
greffe = "200-12-049338-933"
greffon = alleger(greffe)
impairs = 2 * ValeurImPaire(greffon)
pairs = ValeurPaire(greffon)
valeur = sommechiffres(impairs) + sommechiffres(pairs) +
Right(greffe,
1)
Debug.Print "greffon : " & greffon & vbCrLf
Debug.Print "Chiffres impairs : " & ValeurImPaire(greffon) & vbCrLf
Debug.Print "somme des impairs : " & sommechiffres(impairs) & vbCrLf
Debug.Print "chiffres pairs : " & ValeurPaire(greffon) & vbCrLf
Debug.Print "somme des pairs : " & sommechiffres(pairs) & vbCrLf
Debug.Print valeur
End Sub
Function dernierChiffre(ByVal S As String) As Integer
dernierChiffre = Right(S, 1)
End Function
Function ValeurImPaire(ByVal S As String) As Long
Dim résultat As Long
While Len(S) > 0
résultat = 10 * résultat + Left(S, 1)
S = Mid(S, 3)
Wend
ValeurImPaire = résultat
End Function
Function alleger(ByVal S As String) As String
Dim résultat As String, I As Long
For I = 1 To Len(S)
If InStr("0123456789", Mid(S, I, 1)) > 0 Then résultat = résultat
+
Mid(S, I, 1)
Next I
alleger = Left(résultat, Len(résultat) - 1)
End Function
Function sommechiffres(N As Long) As Long
Dim résultat As Long
While N > 0
résultat = résultat + (N Mod 10)
N = N 10
Wend
sommechiffres = résultat
End Function
Function ValeurPaire(ByVal S As String) As Long
ValeurPaire = ValeurImPaire(Mid(S, 2))
End Function
Sûrement un exercice d'algorithmie car je ne vois pas bien le problème
concret que cela sous-tend.
Un partiel peut-être ?
5 minutes montre en main.
Il suffit de procéder petit à petit comme l'indique l'énoncé
"briochette" a écrit dans le
message
de news:
> Bonjour
>
> J'ai un champ qui va contenir un numér de greffe et nous avons un
> algoritme
> nous permettante de savoir si ce numéro de greffe est bon ou non.
> L'algorithme est le suisvant :
>
> voici un exemple de greffe : 200-12-049338-933
> 2001204933893 : on extrait les chiffres impairs (ayant une place
> impaire
> dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à
> la
> vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir
> ces
> chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
> 2024383
> * 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
> 4+0+4+8+7+6+6 = 35
> On reprend notre numéro de greffe (toujours sans le dernier chiffre)
> est
> on
> extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
> chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que
> précedemment
> :
> 0+1+0+9+3+9 = 22.
>
> Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne
> le
> dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour
> donner
> un
> nombre divisible par 10e nombre (soit par 10).
>
> Je suis bloquée pour écride le code, je sais que je dois utiliser
> Public Function ValideGref(strGref As String) As Boolean
> Dim dblNbImpair As Double
> ete nsuite mettre tout ce qu'il faut dans:
> 'mid(strgref,,)
> '& concaténation
> 'cdbl()
> '5 Mod 10
> End Function
>
> Mais je coince... Need some help
>
> D'avance merci beaucoup
>
> Briochette
Merci car je suis une toute nouvelle débutante VBA, j'ai eu juste un cour
il
y a une semaine.
Cela va servir à un formuliare de commande de jugement, donc le numéro de
greffe ne sera jamais le même. Puis-je remplacer le numéro donné dans ton
code par des 00 ou xx
Merci
Briochette
"Patrice Henrio" a écrit :
Option Explicit
Private Sub Command1_Click()
Dim greffe As String, greffon As String, impairs As Long, pairs As
Long,
valeur As Long
greffe = "200-12-049338-933"
greffon = alleger(greffe)
impairs = 2 * ValeurImPaire(greffon)
pairs = ValeurPaire(greffon)
valeur = sommechiffres(impairs) + sommechiffres(pairs) +
Right(greffe,
1)
Debug.Print "greffon : " & greffon & vbCrLf
Debug.Print "Chiffres impairs : " & ValeurImPaire(greffon) & vbCrLf
Debug.Print "somme des impairs : " & sommechiffres(impairs) & vbCrLf
Debug.Print "chiffres pairs : " & ValeurPaire(greffon) & vbCrLf
Debug.Print "somme des pairs : " & sommechiffres(pairs) & vbCrLf
Debug.Print valeur
End Sub
Function dernierChiffre(ByVal S As String) As Integer
dernierChiffre = Right(S, 1)
End Function
Function ValeurImPaire(ByVal S As String) As Long
Dim résultat As Long
While Len(S) > 0
résultat = 10 * résultat + Left(S, 1)
S = Mid(S, 3)
Wend
ValeurImPaire = résultat
End Function
Function alleger(ByVal S As String) As String
Dim résultat As String, I As Long
For I = 1 To Len(S)
If InStr("0123456789", Mid(S, I, 1)) > 0 Then résultat = résultat
+
Mid(S, I, 1)
Next I
alleger = Left(résultat, Len(résultat) - 1)
End Function
Function sommechiffres(N As Long) As Long
Dim résultat As Long
While N > 0
résultat = résultat + (N Mod 10)
N = N 10
Wend
sommechiffres = résultat
End Function
Function ValeurPaire(ByVal S As String) As Long
ValeurPaire = ValeurImPaire(Mid(S, 2))
End Function
Sûrement un exercice d'algorithmie car je ne vois pas bien le problème
concret que cela sous-tend.
Un partiel peut-être ?
5 minutes montre en main.
Il suffit de procéder petit à petit comme l'indique l'énoncé
"briochette" <briochette@discussions.microsoft.com> a écrit dans le
message
de news: 45AEFC22-FB67-466B-A198-E84D3D235B19@microsoft.com...
> Bonjour
>
> J'ai un champ qui va contenir un numér de greffe et nous avons un
> algoritme
> nous permettante de savoir si ce numéro de greffe est bon ou non.
> L'algorithme est le suisvant :
>
> voici un exemple de greffe : 200-12-049338-933
> 2001204933893 : on extrait les chiffres impairs (ayant une place
> impaire
> dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à
> la
> vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir
> ces
> chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
> 2024383
> * 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
> 4+0+4+8+7+6+6 = 35
> On reprend notre numéro de greffe (toujours sans le dernier chiffre)
> est
> on
> extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
> chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que
> précedemment
> :
> 0+1+0+9+3+9 = 22.
>
> Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne
> le
> dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour
> donner
> un
> nombre divisible par 10e nombre (soit par 10).
>
> Je suis bloquée pour écride le code, je sais que je dois utiliser
> Public Function ValideGref(strGref As String) As Boolean
> Dim dblNbImpair As Double
> ete nsuite mettre tout ce qu'il faut dans:
> 'mid(strgref,,)
> '& concaténation
> 'cdbl()
> '5 Mod 10
> End Function
>
> Mais je coince... Need some help
>
> D'avance merci beaucoup
>
> Briochette
Merci car je suis une toute nouvelle débutante VBA, j'ai eu juste un cour
il
y a une semaine.
Cela va servir à un formuliare de commande de jugement, donc le numéro de
greffe ne sera jamais le même. Puis-je remplacer le numéro donné dans ton
code par des 00 ou xx
Merci
Briochette
"Patrice Henrio" a écrit :Option Explicit
Private Sub Command1_Click()
Dim greffe As String, greffon As String, impairs As Long, pairs As
Long,
valeur As Long
greffe = "200-12-049338-933"
greffon = alleger(greffe)
impairs = 2 * ValeurImPaire(greffon)
pairs = ValeurPaire(greffon)
valeur = sommechiffres(impairs) + sommechiffres(pairs) +
Right(greffe,
1)
Debug.Print "greffon : " & greffon & vbCrLf
Debug.Print "Chiffres impairs : " & ValeurImPaire(greffon) & vbCrLf
Debug.Print "somme des impairs : " & sommechiffres(impairs) & vbCrLf
Debug.Print "chiffres pairs : " & ValeurPaire(greffon) & vbCrLf
Debug.Print "somme des pairs : " & sommechiffres(pairs) & vbCrLf
Debug.Print valeur
End Sub
Function dernierChiffre(ByVal S As String) As Integer
dernierChiffre = Right(S, 1)
End Function
Function ValeurImPaire(ByVal S As String) As Long
Dim résultat As Long
While Len(S) > 0
résultat = 10 * résultat + Left(S, 1)
S = Mid(S, 3)
Wend
ValeurImPaire = résultat
End Function
Function alleger(ByVal S As String) As String
Dim résultat As String, I As Long
For I = 1 To Len(S)
If InStr("0123456789", Mid(S, I, 1)) > 0 Then résultat = résultat
+
Mid(S, I, 1)
Next I
alleger = Left(résultat, Len(résultat) - 1)
End Function
Function sommechiffres(N As Long) As Long
Dim résultat As Long
While N > 0
résultat = résultat + (N Mod 10)
N = N 10
Wend
sommechiffres = résultat
End Function
Function ValeurPaire(ByVal S As String) As Long
ValeurPaire = ValeurImPaire(Mid(S, 2))
End Function
Sûrement un exercice d'algorithmie car je ne vois pas bien le problème
concret que cela sous-tend.
Un partiel peut-être ?
5 minutes montre en main.
Il suffit de procéder petit à petit comme l'indique l'énoncé
"briochette" a écrit dans le
message
de news:
> Bonjour
>
> J'ai un champ qui va contenir un numér de greffe et nous avons un
> algoritme
> nous permettante de savoir si ce numéro de greffe est bon ou non.
> L'algorithme est le suisvant :
>
> voici un exemple de greffe : 200-12-049338-933
> 2001204933893 : on extrait les chiffres impairs (ayant une place
> impaire
> dans ce chiffre) sans prendre le dernier chiffre qui sert seulement à
> la
> vérification. Les chiffres sont donc 2 0 2 4 3 8 3 , on doit réunir
> ces
> chiffres sans les espaces et multipliez le nombre obtneu par deux ==>
> 2024383
> * 2 = 4048766 ==> on doit ensuite additionner les chiffres ensemble
> 4+0+4+8+7+6+6 = 35
> On reprend notre numéro de greffe (toujours sans le dernier chiffre)
> est
> on
> extrait les chiffres pairs (ayant une place paire dans ce chiffre). Les
> chiffres sont donc 0 1 0 9 3 9. On fait le même exercie que
> précedemment
> :
> 0+1+0+9+3+9 = 22.
>
> Ensuite on prend les deux résultats : 22 + 35 = 57 auquel on additionne
> le
> dernier chiffre de notre numéro de greffe non utilisé + 3 = 60 pour
> donner
> un
> nombre divisible par 10e nombre (soit par 10).
>
> Je suis bloquée pour écride le code, je sais que je dois utiliser
> Public Function ValideGref(strGref As String) As Boolean
> Dim dblNbImpair As Double
> ete nsuite mettre tout ce qu'il faut dans:
> 'mid(strgref,,)
> '& concaténation
> 'cdbl()
> '5 Mod 10
> End Function
>
> Mais je coince... Need some help
>
> D'avance merci beaucoup
>
> Briochette