OVH Cloud OVH Cloud

Fonction

7 réponses
Avatar
Denys
Bonjour =E0 tous,

J'ai un code VBA pour v=E9rifier la validit=E9 d'un num=E9ro=20
d'assurance sociale canadien nomm=E9 comme suit:

Public Function NumberValidation(CodeNumber)

J'ai ins=E9r=E9 ce code dans un module. Comment faire=20
maintenant pour l'utiliser lorsque l'usager entre un=20
num=E9ro dans un textbox ?

Quelqu'un pourrait me diriger ???


Merci beaucoup

Denys

7 réponses

Avatar
Starwing
Bonjour Denys,

J'ai inséré ce code dans un module. Comment faire
maintenant pour l'utiliser lorsque l'usager entre un
numéro dans un textbox ?


Essaie ça voir....

Private Sub TextBox1 Exit(ByVal Cancel As
MSForms.ReturnBoolean)

Call "TaMAcro"

End Sub


Starwing

Avatar
michdenis
Bonjour Denys,


Pour contrôler la saisie de ton numéro d'assurance sociale dans le Textbox1, tu peux insérer ceci dans ton formulaire...
adapte le nom du textbox

'------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If Len(Me.TextBox1) = 11 Then KeyAscii = 0
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If

End Sub
'------------------------
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If Len(Me.TextBox1) = 3 Or Len(Me.TextBox1) = 7 Then
Me.TextBox1 = Me.TextBox1 & " "
If KeyCode = 8 Then
Me.TextBox1 = Left(Me.TextBox1, Len(Me.TextBox1) - 2)
End If
End If

End Sub
'------------------------


Ta fonction serait préférable si elle était comme ceci : de type Boolean
en ce sens qu'elle retourne False or True selon que le test est positif ou négatif

'-----------------------
Public Function NumberValidation(CodeNumber) As Boolean
NumberValidation = False

'procédure

NumberValidation = True Or False

End Function
'-----------------------


Ta procédure pourrait ressemble à ceci
'----------------------
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox1 = "" Then Exit Sub

If NumberValidation(Me.TextBox1) = False Then
MsgBox "Votre numéro d'assurance social n'est pas valide."
Cancel = True
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(Me.TextBox1)
End If

End Sub
'----------------------


Salutations!




"Denys" a écrit dans le message de news:fa3d01c43e72$6ac9a410$
Bonjour à tous,

J'ai un code VBA pour vérifier la validité d'un numéro
d'assurance sociale canadien nommé comme suit:

Public Function NumberValidation(CodeNumber)

J'ai inséré ce code dans un module. Comment faire
maintenant pour l'utiliser lorsque l'usager entre un
numéro dans un textbox ?

Quelqu'un pourrait me diriger ???


Merci beaucoup

Denys
Avatar
isabelle
bonjour Denys,

pour ajouter à la solution de Starwing
si la Function est dans un autre projet,

Application.Run ("Perso.xls!NumberValidation")

isabelle


Bonjour à tous,

J'ai un code VBA pour vérifier la validité d'un numéro
d'assurance sociale canadien nommé comme suit:

Public Function NumberValidation(CodeNumber)

J'ai inséré ce code dans un module. Comment faire
maintenant pour l'utiliser lorsque l'usager entre un
numéro dans un textbox ?

Quelqu'un pourrait me diriger ???

Merci beaucoup

Denys


Avatar
Starwing
Pour faire suite...

Puis si un jour tu as besoin d'une formule sur Excel qui
renvoie le dernier chiffre du NAS canadien:
Alors en A1: mettre les 7 ou 8 chiffres du NAS à trouver
puis en B1 la formule suivante:
=MOD(10-(SOMME(STXT(GAUCHE(A1;8);{1;3;5;7};1)*{1})+SOMME(SI
(STXT(GAUCHE(A1;8);{2;4;6;8};1)*{2}<10;STXT(GAUCHE(A1;8);
{2;4;6;8};1)*{2}))+SOMME(SI(STXT(GAUCHE(A1;8);{2;4;6;8};1)*
{2}>;STXT(GAUCHE(A1;8);{2;4;6;8};1)*{2}-9)));10)

Il va falloir valder toutefois le ";" entre les {} dans
certains systèmes il faut mettre des "." ou des "/"

Starwing
Avatar
Denys
Bonjour Isabelle, Denis et Starwing,

Quel égoiste je suis... Merci beaucoup pour votre temps..

Voici le code de la fonction.....


Public Function NumberValidation(CodeNumber) As Boolean
NumberValidation = False
Dim E, i, SUBT, TOT, LAST

If (IsNumeric(CodeNumber)) And (Len(CodeNumber) > 8) And
(Len(CodeNumber) < 12) Then
If (Len(CodeNumber) = 11) Then
CodeNumber = Del(CodeNumber, 4, 1)
CodeNumber = Del(CodeNumber, 7, 1)
End If
TOT = 0
For i = 1 To 8
E = Mid(CodeNumber, i, 1)
If ((i Mod 2) = 0) Then
SUBT = (E * 2)
Else
SUBT = E
End If
If (SUBT > 9) Then
SUBT = Mid(SUBT, 1, 1) * 1 + Mid(SUBT, 2, 1)
End If
TOT = TOT + SUBT
Next
If (TOT > 9) Then
LAST = (10 - ((Mid(TOT, 2, 1))))
Else
LAST = (10 - ((Mid(TOT, 1, 1))))
End If
If (LAST > 9) Then LAST = (Mid(LAST, 2, 1))
If Mid(CodeNumber, 9, 1) = Trim(LAST) Then
NumberValidation = True
Else
NumberValidation = False
End If
Else
NumberValidation = False
End If
End Sub

'procédure

NumberValidation = True Or False

End Function

Denis, j'ai inséré ce code à l'endroit où tu as
écris 'procédure... J'espère avoir bien compris...

Par contre Excel me donne une erreur en disant Sub or
Function not defined à la ligne

CodeNumber = Del(CodeNumber, 4, 1)
En surlignant Del...


Sauriez-vous ce que ça veut dire ???

Merci beaucoup à tous....

Denys
Avatar
Starwing
Salur Denis,

Je travaille comme Paie-Maître à Montréal,

Voici le code que j'utilise, si ça peut t'aider...

Private Function NAS(strNas As String) As Boolean

Dim intCount As Integer
Dim intEven As Integer
Dim intOdd As Integer

intEven = 0
intOdd = 0
If (Len(strNas) <> 9) Or Not (IsNumeric(strNas)) Then
NAS = False
Exit Function
End If

For intCount = 1 To 8
If (intCount Mod 2) = 0 Then
If (Val(Mid(strNas, intCount, 1)) * 2) >= 10 Then
intEven = intEven + ((Val(Mid(strNas,
intCount, 1)) _
* 2) - 10) + 1
Else
intEven = intEven + Val(Mid(strNas, intCount,
1)) * 2
End If
Else
intOdd = intOdd + Val(Mid(strNas, intCount, 1))
End If
Next
If Trim((Str((10 - ((intEven + intOdd) Mod 10)) Mod
10))) = _
Mid(strNas, 9, 1) Then
NAS = True
Else
NAS = False
End If

End Function


Starwing


-----Message d'origine-----

Bonjour Isabelle, Denis et Starwing,

Quel égoiste je suis... Merci beaucoup pour votre temps..

Voici le code de la fonction.....


Public Function NumberValidation(CodeNumber) As Boolean
NumberValidation = False
Dim E, i, SUBT, TOT, LAST

If (IsNumeric(CodeNumber)) And (Len(CodeNumber) > 8)
And

(Len(CodeNumber) < 12) Then
If (Len(CodeNumber) = 11) Then
CodeNumber = Del(CodeNumber, 4, 1)
CodeNumber = Del(CodeNumber, 7, 1)
End If
TOT = 0
For i = 1 To 8
E = Mid(CodeNumber, i, 1)
If ((i Mod 2) = 0) Then
SUBT = (E * 2)
Else
SUBT = E
End If
If (SUBT > 9) Then
SUBT = Mid(SUBT, 1, 1) * 1 + Mid(SUBT, 2, 1)
End If
TOT = TOT + SUBT
Next
If (TOT > 9) Then
LAST = (10 - ((Mid(TOT, 2, 1))))
Else
LAST = (10 - ((Mid(TOT, 1, 1))))
End If
If (LAST > 9) Then LAST = (Mid(LAST, 2, 1))
If Mid(CodeNumber, 9, 1) = Trim(LAST) Then
NumberValidation = True
Else
NumberValidation = False
End If
Else
NumberValidation = False
End If
End Sub

'procédure

NumberValidation = True Or False

End Function

Denis, j'ai inséré ce code à l'endroit où tu as
écris 'procédure... J'espère avoir bien compris...

Par contre Excel me donne une erreur en disant Sub or
Function not defined à la ligne

CodeNumber = Del(CodeNumber, 4, 1)
En surlignant Del...


Sauriez-vous ce que ça veut dire ???

Merci beaucoup à tous....

Denys
.



Avatar
Denys
Bonjour Starwing,

Merci beaucoup... je reviens du lunch justement... C'est
très aimable de ta part et c'est sûr que ça peut
m'aider.... Je m'en vais l'utiliser de ce pas

Bonne journée

Denys

-----Original Message-----
Salur Denis,

Je travaille comme Paie-Maître à Montréal,

Voici le code que j'utilise, si ça peut t'aider...

Private Function NAS(strNas As String) As Boolean

Dim intCount As Integer
Dim intEven As Integer
Dim intOdd As Integer

intEven = 0
intOdd = 0
If (Len(strNas) <> 9) Or Not (IsNumeric(strNas)) Then
NAS = False
Exit Function
End If

For intCount = 1 To 8
If (intCount Mod 2) = 0 Then
If (Val(Mid(strNas, intCount, 1)) * 2) >= 10 Then
intEven = intEven + ((Val(Mid(strNas,
intCount, 1)) _
* 2) - 10) + 1
Else
intEven = intEven + Val(Mid(strNas, intCount,
1)) * 2
End If
Else
intOdd = intOdd + Val(Mid(strNas, intCount, 1))
End If
Next
If Trim((Str((10 - ((intEven + intOdd) Mod 10)) Mod
10))) = _
Mid(strNas, 9, 1) Then
NAS = True
Else
NAS = False
End If

End Function


Starwing


-----Message d'origine-----

Bonjour Isabelle, Denis et Starwing,

Quel égoiste je suis... Merci beaucoup pour votre temps..

Voici le code de la fonction.....


Public Function NumberValidation(CodeNumber) As Boolean
NumberValidation = False
Dim E, i, SUBT, TOT, LAST

If (IsNumeric(CodeNumber)) And (Len(CodeNumber) > 8)
And

(Len(CodeNumber) < 12) Then
If (Len(CodeNumber) = 11) Then
CodeNumber = Del(CodeNumber, 4, 1)
CodeNumber = Del(CodeNumber, 7, 1)
End If
TOT = 0
For i = 1 To 8
E = Mid(CodeNumber, i, 1)
If ((i Mod 2) = 0) Then
SUBT = (E * 2)
Else
SUBT = E
End If
If (SUBT > 9) Then
SUBT = Mid(SUBT, 1, 1) * 1 + Mid(SUBT, 2, 1)
End If
TOT = TOT + SUBT
Next
If (TOT > 9) Then
LAST = (10 - ((Mid(TOT, 2, 1))))
Else
LAST = (10 - ((Mid(TOT, 1, 1))))
End If
If (LAST > 9) Then LAST = (Mid(LAST, 2, 1))
If Mid(CodeNumber, 9, 1) = Trim(LAST) Then
NumberValidation = True
Else
NumberValidation = False
End If
Else
NumberValidation = False
End If
End Sub

'procédure

NumberValidation = True Or False

End Function

Denis, j'ai inséré ce code à l'endroit où tu as
écris 'procédure... J'espère avoir bien compris...

Par contre Excel me donne une erreur en disant Sub or
Function not defined à la ligne

CodeNumber = Del(CodeNumber, 4, 1)
En surlignant Del...


Sauriez-vous ce que ça veut dire ???

Merci beaucoup à tous....

Denys
.

.