Macro donnant un numéro

Bonjour tout le monde, étant débutant en VBA je me permet de venir Paris vous pour demander votre aider.

Je souhaiterai créer un UserForm qui me donnerait un numéro (suivant ceux déjà existant et pair si possible) en fonction de l'option choisit dans le UserForm.

Je m'explique : dans ma boîte UserForm j'ai trois options : Maison, Voiture, Sport. Si pas exemple je choisi Maison le UserForm va me donner par exemple 768b02 : 768b étant constant, 02 étant l'incrementation. Si par exemple je choisi Voiture le UserForm me donnera 770b02 : 770b étant constant, 02 l'incrementation. Et bien-sûr le numéro serait affiché à l'écran en appuyant sur LANCER et puis stoqué dans un tableau dans excel.

J'espère que je me suis bb comprendre, j'ai essayé de le faire en regardant sur Google mais rien n'y fait ça ne marche pas.

Merci pour votre aide et bonne journée !

Bonjour elPescadort.

Sans fichier exemple c'est difficile de te fournir de l'aide.

Ah désolé ^^ j'arrange mon fichier excel et je vous montre ça, je suis sur le forum avec mon téléphone donc c'est compliqué ^^

Désolé vu que je n'ai pas internet sur l'ordinateur, je ne peux vous répondre que par téléphone, c'est pour ça que je vous envoie une photo de ce que j'aimerai faire


Désolé vu que je n'ai pas internet sur l'ordinateur, je ne peux vous répondre que par téléphone, c'est pour ça que je vous envoie une photo de ce que je souhaiterai faire

excel excel

Voilà un code qui fonctionne.

Private Sub cmdLancer_Click()
Dim cat$
Dim ctrl As Object
Dim j As Byte
Dim num&, i&

For Each ctrl In Me.Controls
    If TypeName(ctrl) = "OptionButton" Then
        If ctrl.Value = True Then cat = ctrl.Caption: Exit For
    End If
Next ctrl

If cat = "" Then Exit Sub

Select Case cat
    Case "Maison": j = 2
    Case "Voiture": j = 4
    Case "Sport": j = 6
End Select

With Sheets(1)
    i = 2
    Do Until .Cells(i, j).Value = ""
        i = i + 1
    Loop
    If Not .Cells(i - 1, j).Value = cat Then
        num = Right(.Cells(i - 1, j).Value, 2) + 2
        cat = Left(.Cells(i - 1, j).Value, Len(.Cells(i - 1, j).Value) - 2)
        .Cells(i, j).Value = cat & Format(num, "00")
    Else
        num = 2
        cat = (766 + j) & "b"
        .Cells(i, j).Value = cat & Format(num, "00")
    End If
End With

End Sub

Ok je vais essayer ça et je reviens vers vous

Merci beaucoup de votre aide

Il fonctionne à merveille !!!! Merci beaucoup !!!!

Il faut que je regarde maintenant si je rajoute l'option MaisonBleu, qu'il me donne un numéro impair, et après qu'il reparte sur des numéros pair

Merci beaucoup !

J'ai essayé d'adapter le code à mon vrai excel et j'obtiens un message d'erreur

excel2

Quelle est la valeur de j ?

Comme dit au début je débute vraiment en VBA ^^ je dirais que J à plusieurs valeur comme écrit plus haut dans le code ? 2, 4, 6, 8, 10 ?

Quand tu es sur l'erreur, cible j avec ta souris, la valeur devrait s'afficher.

J = 0

Il y a donc une erreur dans le Select Case.

Les noms que tu dois vérifier doivent correspondre à tes valeurs des OptionsButtons.

Avec les mêmes majuscules, minuscules et accents.

C'est bon ça marche, comme tu peux le voir dans IP Product, les numéros ne sont pas de 2 en 2, je vais donc créer un autre bouton juste pour cette colonne, je peux donc reprendre le code et le modifier ? Ça marchera pareil ?

Non pas besoin :

Option Explicit

Private Sub cmdLancer_Click()
Dim cat$
Dim ctrl As Object
Dim j As Byte, k As Byte
Dim num&, i&

For Each ctrl In Me.Controls
    If TypeName(ctrl) = "OptionButton" Then
        If ctrl.Value = True Then cat = ctrl.Caption: Exit For
    End If
Next ctrl

If cat = "" Then Exit Sub

k = 2
Select Case cat
    Case "Maison": j = 2
    Case "Voiture": j = 4
    Case "Sport": j = 6: k = 1
End Select

With Sheets(1)
    i = 2
    Do Until .Cells(i, j).Value = ""
        i = i + 1
    Loop
    If Not .Cells(i - 1, j).Value = cat Then
        num = Right(.Cells(i - 1, j).Value, 2) + k
        cat = Left(.Cells(i - 1, j).Value, Len(.Cells(i - 1, j).Value) - 2)
        .Cells(i, j).Value = cat & Format(num, "00")
    Else
        num = k
        cat = (766 + j) & "b"
        .Cells(i, j).Value = cat & Format(num, "00")
    End If
End With

End Sub

A adapter à ta demande.

k = 2 sauf pour Voiture dans notre cas.

Vraiment merci beaucoup ! En plus de fonctionner comme je le souhaitais, je comprends mieux comment fonctionne VBA

Encore merci

Rechercher des sujets similaires à "macro donnant numero"