Bonjour à tous,
Existe-t-il une formule pour valider un numéro d'assurance sociale
canadien ? Je connais la version VBA, mais cette fois j'aimerais avoir
une formule sans VBA, autrement dit, si j'entre un numéro en B1, je
mettrais la formule en C1 qui dirait si le no est valide ou pas....
Merci pour votre temps....et Joyeuses Fêtes....
Denys
Bonjour à tous,
Existe-t-il une formule pour valider un numéro d'assurance sociale
canadien ? Je connais la version VBA, mais cette fois j'aimerais avoir
une formule sans VBA, autrement dit, si j'entre un numéro en B1, je
mettrais la formule en C1 qui dirait si le no est valide ou pas....
Merci pour votre temps....et Joyeuses Fêtes....
Denys
Bonjour à tous,
Existe-t-il une formule pour valider un numéro d'assurance sociale
canadien ? Je connais la version VBA, mais cette fois j'aimerais avoir
une formule sans VBA, autrement dit, si j'entre un numéro en B1, je
mettrais la formule en C1 qui dirait si le no est valide ou pas....
Merci pour votre temps....et Joyeuses Fêtes....
Denys
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid( y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le t exte des messages précédents -
- Afficher le texte des messages précédents -
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid( y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le t exte des messages précédents -
- Afficher le texte des messages précédents -
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid( y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le t exte des messages précédents -
- Afficher le texte des messages précédents -
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Pour la compréhension
Si l'usager tape
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un
espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un
Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle
renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
--------------------------------------------
"LSteph" a écrit dans le message de groupe de discussion :
Bonjour les amis,
Désolé ces numéros NAS cela doit être typiquement .CA selon le retour
direct de google..
sinon j'aurais au moins essayé.
Alors je viens quand même intervenir ici car
il me semble que le Monsieur vous demande
depuis le début s'il existe une solution sans VBA.
Cordialement.
--
LSteph
On 23 déc, 18:54, isabelle wrote:pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le
>> texte des messages précédents -
- Afficher le texte des messages précédents -
Pour la compréhension
Si l'usager tape
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un
espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un
Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle
renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
--------------------------------------------
"LSteph" a écrit dans le message de groupe de discussion :
7100fdb5-1dcd-4884-b69a-5a8d6a35d4a5@k25g2000vbl.googlegroups.com...
Bonjour les amis,
Désolé ces numéros NAS cela doit être typiquement .CA selon le retour
direct de google..
sinon j'aurais au moins essayé.
Alors je viens quand même intervenir ici car
il me semble que le Monsieur vous demande
depuis le début s'il existe une solution sans VBA.
Cordialement.
--
LSteph
On 23 déc, 18:54, isabelle <i...@v.org> wrote:
pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le
>> texte des messages précédents -
- Afficher le texte des messages précédents -
Pour la compréhension
Si l'usager tape
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un
espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un
Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle
renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
--------------------------------------------
"LSteph" a écrit dans le message de groupe de discussion :
Bonjour les amis,
Désolé ces numéros NAS cela doit être typiquement .CA selon le retour
direct de google..
sinon j'aurais au moins essayé.
Alors je viens quand même intervenir ici car
il me semble que le Monsieur vous demande
depuis le début s'il existe une solution sans VBA.
Cordialement.
--
LSteph
On 23 déc, 18:54, isabelle wrote:pour une formulle perso,
Function nas(cellule As Range) As String
x = Application.Substitute(cellule, "-", "")
For i = 1 To Len(x)
Select Case i
Case 2, 4, 6, 8
y = Mid(x, i, 1) * 2
If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
r = r + y
Case Else
r = r + CDbl(Mid(x, i, 1))
End Select
Next
If r Mod 10 = 0 Then
nas = "VRAI"
Else
nas = "FAUX"
End If
End Function
isabelle
Le 2010-12-23 11:48, isabelle a crit :
> bonjour Denys,
> en attendant que Denis revienne,
> Sub Test_NAS()
> x = Application.Substitute(Range("A1"), "-", "")
> For i = 1 To Len(x)
> Select Case i
> Case 2, 4, 6, 8
> y = Mid(x, i, 1) * 2
> If y >= 10 Then y = CDbl(Mid(y, 1, 1)) + CDbl(Mid(y, 2, 1))
> r = r + y
> Case Else
> r = r + CDbl(Mid(x, i, 1))
> End Select
> Next
> MsgBox r
> End Sub
> passe de bonne f te,
> isabelle
> Le 2010-12-23 11:10, michdenis a crit :
>> POUR VALIDER UN NAS, PROC DER DE LA FA ON SUIVANTE :
>> -- INSCRIRE le NAS sur une feuille de papier, comme suit: 044-096-857;
>> -- COCHER le deuxi me, quatri me, sixi me et huiti me chiffre;
>> -- INSCRIRE le NAS de nouveau, mais cette fois en multipliant par deux
>> les chiffres mentionn s, comme suit : 084-0912-8107.
>> LORSQUE CETTE MULTIPLICATION DONNE UN NOMBRE DEUX CHIFFRES, ALORS :
>> -- ADDITIONNER ces deux chiffres pour n'en faire qu'un seul,
>> -- ET additionner l'ensemble de ces chiffres, soit :
>> 0+8+4+0+9+1+2+8+1+0+7 = 40.
>> SI LE TOTAL QUI EN R SULTE EST UN MULTIPLE DE DIX, LE NAS EST VALIDE.
>> Donc, le NAS ci-dessus est valide, puisque le total est 40.
>> Si tu as besoin d'une fonction personnalis e pour faire cela, je serai
>> de retour
>> en PM...et j'y regarderai de plus pr s si j'ai le temps.- Masquer le
>> texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
Bonjour,
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
Exemple : 244-244-244
Si l'usager tape une autre chose que 9 chiffres séparés par un "-" ou un espace, la fonction Retourne #Valeur
Autrement, la formule évalue la chaîne du NAS correctement et renvoie un Vrai ou Faux selon le cas.
En d'autres termes, la chaine peut avoir
un nombre indéterminé de "-" ou " "
elle doit avoir obligatoirement 9 chiffres
Si la cellule contient plus de 9 caractères (chiffre ou lettre) elle renvoie False
Tout autre caractère provoque une erreur représenté par #VALEUR!
Pour la compréhension, je préfère de loin, une fonction personnalisée!
MichD
Bonsour®
"bcar" a écritJe ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.Le 27/12/2010 22:07, michdenis a écrit :à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
pour le fun ;o)))
http://www.cijoint.fr/cjlink.php?file=cj201012/cij5up4dsc.xls
Bonsour®
"bcar" a écrit
Je ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.
Le 27/12/2010 22:07, michdenis a écrit :
à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
pour le fun ;o)))
http://www.cijoint.fr/cjlink.php?file=cj201012/cij5up4dsc.xls
Bonsour®
"bcar" a écritJe ne crois pas qu'il y ait de séparateurs pour un numéro NAS.
Il doit par contre exister un formatage spécial Excel comme le formatage
"Numéro de sécurité sociale.Le 27/12/2010 22:07, michdenis a écrit :à partir de la suggestion de Bcar, on pourrait utiliser cette formule
=SI(ARRONDI((SOMMEPROD(SI((MOD({1;2;3;4;5;6;7;8;9};2)=0)+(NBCAR(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";""))=9)=2;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);5)-ARRONDI((SOMMEPROD(SI(MOD({1;2;3;4;5;6;7;8;9};2)=0;MOD(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1);10)+ENT(2*STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)/10);0+STXT(SUBSTITUE(SUBSTITUE($A$1;"-";"");"
";"");{1;2;3;4;5;6;7;8;9};1)))/10);0)=0;VRAI;FAUX)
pour le fun ;o)))
http://www.cijoint.fr/cjlink.php?file=cj201012/cij5up4dsc.xls