Incrémenter Valeur OptionButton

Bonjour,

J'ai un petit soucis que je n'arrive pas à résoudre, j'ai un userform avec des OptionButtons avec des Valeurs de A à J et un système de classement que j'obtiens après la validation du Userform qui doit utiliser cette valeur avec un nombre qui s'incrémente après, donc :

A1-A2-A3-A4 si je sélectionne le bouton A

B1-B2 .... pour le bouton B

Etc etc jusqu'à J

Et on repart à 1 quand l'incrément arrive à 999...

Surement assez simple à faire mais je ne vois pas comment. Je joints le fichier pour plus de facilité.

Merci d'avance

7recherche.xlsm (21.76 Ko)

Après avoir essayé un peu dans tous les sens, je pense qu'il faut plutôt passer par un autre onglet où je récupère la valeur la plus grande pour chaque lettre...

Je mets le fichier avec les modifs que j'ai faites...

4recherche.xlsm (30.69 Ko)

Bon j'ai réussi à faire ce que je voulais. Si quelqu'un passe par là et trouve une solution plus simple je suis preneur

je mets le fichier en PJ si ça intéresse du monde.

11recherche.xlsm (27.47 Ko)

Salut Paulox,

pas de panique, camarade! Je n'ai malheureusement pas que ça à faire dans la vie!

Question : quelle est l'utilité de ton bouton "Sauvegarder" ?

A+

Hello

Oui je sais bien on a tous autre chose à faire, il ne faut pas que ce soit une corvée

J'ai mis un autre sujet avec plus de détail :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=133666&sid=3a28802f667ca5ca02a9f62f1c3ad666

Le bouton sauvegarder est juste un "Enregistrer" + "Quitter", en fait je voudrais uniquement ouvrir le userform et que l'utilisateur n'ait pas accès aux différentes feuilles pour éviter toute manœuvre à l'intérieur de ces feuilles.

Salut Paulox, le fil...

Commençons par le commencement, je te conseille fortement d'activer l'option déclaration obligatoires des variables dans les options "Option Explicit" en tête du module, cela t'obligeras a structurer un peu ton code...

ici tu récupère un long et tu le transforme en String puisque c'est comme cela que Num est déclaré

Num = Sheets("Inc").Range("A1:B10").Find(Classement).Row

Et ici tu te sert d'un string à la place d'un long, VBA est souple et peux le faire mais ce n'est pas propre

Num = Classement & Sheets("Inc").Cells(Num, 2).Value + 1

Dans ta feuille Base tu as un tableau nommé Tableau1.

Tu peux remplacer ce bout de code

 Set Base = ActiveWorkbook.Sheets("Base")
    numLigne = 2
    While Base.Cells(numLigne, 1).Value <> ""
    numLigne = numLigne + 1
    Wend

Par cette ligne qui est je pense plus parlante.

 numLigne = Range("Tableau1").Rows.Count + 1

Pour ma part je déclarerais Num en Objet Range, et ta zone de recherche dans la feuille inc serais nommé "DatasClassement" cela te permettrait de rendre ton code plus lisible .

'On va utiliser un objet Range au lieux d'un entier
    Set Num = Range("DatasClassement").Find(Classement)

Un fois l'object Range affecté tu peux travaillé avec l'Offset dans le style

   With Num.Offset(, 1)
        Select Case .Value
            Case Is = 999
                .Value = 1
            Case Else
                .Value = .Value + 1
        End Select
    End With

Concernant l'écriture de tes lignes dans le tableau là encore tu peux rendre ton code plus lisible. On rajoute une ligne au tableau

Set NewLigne = Worksheets("Base").ListObject("Tableau1").ListRows.Add

Et ensuite tu écris à la volé avec un Array

NewLigne.Range(, 1).Value = Array( _
                                Num1, Num2, Nom, _
                                Num.Value & Num.Offset(, 1).Value, _
                                Num, Date1)

Tu remarqueras que dans la foulée j'en profite pour écrire toutes les colonnes de ta nouvelle ligne donc les formules dans ta feuille ne servent plus.

et on fini en nettoyant un peu

If Not Num Is Nothing Then Num = Nothing

Donc pour résumer ton code tourne mais tu te rendra vite compte que quand ton application grossie il vaut mieux avoir un code lisible sinon dans trois semaines tu ne sauras plus qui est quoi.

Merci beaucoup pour ces conseils que je vais étudier et essayer de mettre en place

C'est effectivement mon problème, au bout de quelques semaines je ne sais plus retrouver mes petits

Rechercher des sujets similaires à "incrementer valeur optionbutton"