OVH Cloud OVH Cloud

Generation de N° de SIRET dans Excel

7 réponses
Avatar
Yan
Bonjour,

j'ai besoin de générer plusieurs centaines de N° SIRET pour faire des tests
de recette sur une application.
Si quelqu'un connait l'algorithme exact, je pourrais créer la formule.


Merci d'avance

7 réponses

Avatar
Starwing
Bonsoir,

Dans un module standard:

Function NoSiret(ByVal Valeur As Variant) As Boolean

Dim i As Integer
Dim j As Integer
Dim k As Integer

NoSiret = False
If Not IsNumeric(Valeur) Then Exit Function
If Len(Format$(CDbl(Valeur), "00000000000000")) <> 14
Then Exit Function
If Valeur = "00000000000000" Then Exit Function
k = 0
For i = 1 To Len(Valeur)
j = CInt(Mid$(Valeur, i, 1))
If (i Mod 2) = 1 Then
j = j * 2
End If
If j >= 10 Then
k = k + (j - 9)
Else
k = k + j
End If
Next i
NoSiret = (k Mod 10 = 0)
End Function

En A1, un No SIRET Ex: 39372703700011
En B1: =NoSiret(A1)
Si le Numéro est bon, il te retournera VRAI,
sinon il te retournera FAUX.

Starwing
Avatar
...Patrick
qu'est ce donc qu'un "siret" pour mon info personnelle ?


Patrick from Belgium, lollllllll



Bonjour,

j'ai besoin de générer plusieurs centaines de N° SIRET pour faire des tests
de recette sur une application.
Si quelqu'un connait l'algorithme exact, je pourrais créer la formule.


Merci d'avance


Avatar
twinley
Bsr

C'est un numéro administratif unique attribué à toutes les sociétés en
France. Une carte d'identité en quelque sorte.

à+twinley

qu'est ce donc qu'un "siret" pour mon info personnelle ?


Patrick from Belgium, lollllllll




Bonjour,

j'ai besoin de générer plusieurs centaines de N° SIRET pour faire des
tests de recette sur une application.
Si quelqu'un connait l'algorithme exact, je pourrais créer la formule.


Merci d'avance




Avatar
Starwing
Bonsoir,

De toute façon, après quelques tests, j'ai remarqué un petit oubli dans mon
code.
Les 9 premiers chiffres se compose d'un algorithme de SIREN.
Il faut donc que je trouve l'algorithme de SIREN ( Donc tester la validité
des 9 premiers chiffres ) et par la suite tester les 5 derniers chiffres qui
forme le No SIRET.

Je ferai cela ce soir....
--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--
Avatar
Pounet95
Bonsoir,
Pour mon info : c'est légal ce genre de truc ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Starwing" a écrit dans le message de news:
%23sSuhIO%
Bonsoir,

De toute façon, après quelques tests, j'ai remarqué un petit oubli dans
mon
code.
Les 9 premiers chiffres se compose d'un algorithme de SIREN.
Il faut donc que je trouve l'algorithme de SIREN ( Donc tester la validité
des 9 premiers chiffres ) et par la suite tester les 5 derniers chiffres
qui
forme le No SIRET.

Je ferai cela ce soir....
--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--




Avatar
Starwing
Bonsoir,

Ce code a pour but de vérifier la validation du numéro de
SIRET ou de SIREN et ce code ne génère aucun numéro de
SIRET ou de SIREN. Au niveau légal, cela s'arrête là!
D'une façon générale, il est possible d'en générer, mais
je vois mal l'objectif ou le but qu'aurait un utilisateur
de créer des numéros valides mais qui n'existeraient pas
encore dans auncune entreprise de France???
A part la fraude... ;o)


Pour les non fraudeurs qui voudraient s'assurer que
l'entreprise est bien enregistrée:

Le nouveau code à insérer dans un module standard:

Option Explicit

Function NoSiren(ByVal Valeur As Variant) As Boolean
Dim i As Integer
Dim j As Integer
Dim k As Integer

NoSiren = False
If Not IsNumeric(Valeur) Then Exit Function
If Len(Format$(CDbl(Valeur), "000000000")) <> 9 Then
Exit Function
If Valeur = "000000000" Then Exit Function
k = 0
For i = 1 To Len(Valeur)
j = CInt(Mid$(Valeur, i, 1))
If (i Mod 2) = 0 Then
j = j * 2
End If
If j >= 10 Then
k = k + (j - 9)
Else
k = k + j
End If
Next i
NoSiren = (k Mod 10 = 0)
End Function

Function NoSiret(ByVal Valeur As Variant) As Boolean
Dim i As Integer
Dim j As Integer
Dim k As Integer

NoSiret = False
If Not IsNumeric(Valeur) Then Exit Function
If Len(Format$(CDbl(Valeur), "00000000000000")) <> 14
Then Exit Function
'Vérifier si la neuvième position de la chaîne
correspond
'à l'algorithme du no de SIREN
If Not NoSiren(Left$(Valeur, 9)) Then Exit Function
If Valeur = "00000000000000" Then Exit Function
k = 0
For i = 1 To Len(Valeur)
j = CInt(Mid$(Valeur, i, 1))
If (i Mod 2) = 1 Then
j = j * 2
End If
If j >= 10 Then
k = k + (j - 9)
Else
k = k + j
End If
Next i
NoSiret = (k Mod 10 = 0)
End Function

Starwing
Avatar
Yan
Bonjour,

dans mon cas, la création de numéro de SIRET valides répond au besoin de
faire des jeux de tests dans une application CRM, ainsi que pour les
formations.

Grace à la fonction donner par "Starwing", je vais pouvoir tester les Siret
que j'ai généré aléatoirement. Je garde ceux qui ont une valeur "Vrai"

Je teste la fonction et je vous dis si ça marche.

En tout cas merci d'avoir répondu à mon appel à l'aide

Yan


Bonsoir,

Ce code a pour but de vérifier la validation du numéro de
SIRET ou de SIREN et ce code ne génère aucun numéro de
SIRET ou de SIREN. Au niveau légal, cela s'arrête là!
D'une façon générale, il est possible d'en générer, mais
je vois mal l'objectif ou le but qu'aurait un utilisateur
de créer des numéros valides mais qui n'existeraient pas
encore dans auncune entreprise de France???
A part la fraude... ;o)


Pour les non fraudeurs qui voudraient s'assurer que
l'entreprise est bien enregistrée:

Le nouveau code à insérer dans un module standard:

Option Explicit

Function NoSiren(ByVal Valeur As Variant) As Boolean
Dim i As Integer
Dim j As Integer
Dim k As Integer

NoSiren = False
If Not IsNumeric(Valeur) Then Exit Function
If Len(Format$(CDbl(Valeur), "000000000")) <> 9 Then
Exit Function
If Valeur = "000000000" Then Exit Function
k = 0
For i = 1 To Len(Valeur)
j = CInt(Mid$(Valeur, i, 1))
If (i Mod 2) = 0 Then
j = j * 2
End If
If j >= 10 Then
k = k + (j - 9)
Else
k = k + j
End If
Next i
NoSiren = (k Mod 10 = 0)
End Function

Function NoSiret(ByVal Valeur As Variant) As Boolean
Dim i As Integer
Dim j As Integer
Dim k As Integer

NoSiret = False
If Not IsNumeric(Valeur) Then Exit Function
If Len(Format$(CDbl(Valeur), "00000000000000")) <> 14
Then Exit Function
'Vérifier si la neuvième position de la chaîne
correspond
'à l'algorithme du no de SIREN
If Not NoSiren(Left$(Valeur, 9)) Then Exit Function
If Valeur = "00000000000000" Then Exit Function
k = 0
For i = 1 To Len(Valeur)
j = CInt(Mid$(Valeur, i, 1))
If (i Mod 2) = 1 Then
j = j * 2
End If
If j >= 10 Then
k = k + (j - 9)
Else
k = k + j
End If
Next i
NoSiret = (k Mod 10 = 0)
End Function

Starwing