Générateur d'ID de 10 chiffres commençant par 9

Bonjour à tous,

Mon patron me demande un petit fichier à faire mais je ne maîtrise pas du tout les macros voici mon problème:

Je dois créer un fichier capable de :

une case à renseigner sur le nombre d'ID à créer

une case avec le choix d'un texte

Le scénario : exemple

dans la case ID : je décide de mettre 10 000 ----> donc une création de 10 000 ID

dans la case texte : j'écris test1

Résultat : Dans un nouvelle onglet j'ai une liste avec 10 000 ID et le titre de l'onglet à changé par le nom que j'ai renseigné dans la case texte :

Ma contrainte : Pas de doublons, Uniquement un générateur de 10 chiffres pas moins pas plus et pour finir commençant par 9

Voila mon problème pensez vous que techniquement cela est réalisable HELP ME

Bonjour

Je serai presque tenté de ne répondre qu'à ta question

jbdry a écrit :

Voila mon problème pensez vous que techniquement cela est réalisable

Oui c'est réalisable

Mais je rajoute ce fichier

Attention pas de test si la feuille existe déjà

Bonjour à tous,

autre proposition : si l'onglet à créer est existant, il est supprimé et recréé.

eric

55classeur1.zip (10.12 Ko)

wow merci de la rapidité de la réponse ! je test =) énorme ce site !

Bonjour,

un petit essai :

Le code :

Sub Generer_ID()
Dim Numeros As Object
Dim Sh As Worksheet
Dim Nb As Double
Dim LeMin As Double, LeMax As Double
Application.ScreenUpdating = False
LeMin = 9000000000#
LeMax = 9999999999#
Set Numeros = CreateObject("Scripting.Dictionary")
If Range("A2").Value = "" Then
    MsgBox "Donnez un nom!"
    Range("A2").Select
    Exit Sub
End If
For Each Sh In Sheets
    If Sh.Name = Range("A2").Value Then
        MsgBox "L'onglet existe déjà," & vbLf & "Changez de nom"
        Range("A2").Select
        Exit Sub
    End If
Next Sh
If Range("C2").Value = "" Or Not IsNumeric(Range("C2").Value) Then
    MsgBox "Entrez un nombre à générer!"
    Range("C2").Select
    Exit Sub
End If
Do While Numeros.Count < Range("C2").Value
    Randomize (Timer)
    Nb = Int((LeMax * Rnd) + LeMin)
    Nb = 9 & Right(Nb, 9)
    Numeros(Nb) = Nb
Loop
Sheets.Add after:=Sheets("Base")
With ActiveSheet
    .Name = Sheets("Base").Range("A2").Value
    .Range("A1").Resize(Numeros.Count) = Application.Transpose(Numeros.Items)
    .Columns("A:A").NumberFormat = "#,##0"
End With
End Sub

Et le fichier

60generer-id.zip (9.39 Ko)

Oups, un peu à la bourre....

C'est jouable lors de la création d'un nouvelle onglet qu'il attribue pas les même code à chaque fois ?

Mais déjà un énorme merci pour votre réactivité !

Re,

fichier modifié.

Sub générer()
    Dim i As Double, nom As String, dID As Double
    Dim sh As Worksheet
    Set sh = ActiveSheet
    nom = [A2]: i = [B2]: dID = [C2]
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets([A2].Value).Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Sheets.Add after:=ActiveSheet
    ActiveSheet.Name = nom
    '
    [A1] = "ID"
    For i = 1 To i
        Cells(i + 1, 1) = 9000000000# + i + dID
    Next i
    sh.[C2] = i + dID - 1
End Sub

eric

56classeur1.zip (11.03 Ko)
Rechercher des sujets similaires à "generateur chiffres commencant"