Mise en forme VBA

Bonjour à tous,

Je suis un passionné de roulette et j'essaie de mettre en forme un tableur pour tester des méthodes.

j'ai réalisé le fichier qui fonctionne bien, mais j'ai un problème que je n'arrive pas à résoudre:

Je rentre les numéros dans la colonne B par l'intermédiaire d'une macro:

donc le numéro apparaît et l'on sélectionne la case dessous pour le numéro suivant.

je voudrais que lorsque l'on a mis un numéro faire un copier-coller puis tri d'une série de numéros par rapport à la position actuelle puis retour à cette position:

Exemple:

je rentre le numéro 25 en B17.

Donc le 25 apparaît en B17

et la case B18 est sélectionnée.

Il faut donc copier juste les valeurs des cases FD18 à GA18 en GH18-HE18

et ensuite trier les cases GH18-HE18 par ordre croissant.

je vais intégrer cette macro à la suite de chaque « macro numéro » comme cela ça se fera automatiquement (la je sais faire)

Voilà par avance merci pour votre aide précieuse.

Daniel

Bonjour Danval, bonjour le forum,

Peut-être comme ça :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TB As Variant 'déclare la variable TB (TaBleau)

If Target.Address <> "$B$17" Then Exit Sub 'si le changement a lieu ailleurs qu'en B17, sort de la procédure
Target.Offset(1, 0).Select 'Sélectionne la cellule B18
TB = Application.Transpose(Range("FD18:GA18")) 'définit le tableau TB
Call tri(TB, LBound(TB), UBound(TB)) 'lance la procédure de tri du tableau TB
'renvoie dans la celllule GH18 redimensionnée le tableau TB transposé et trié
Range("GH18").Resize(1, UBound(TB)).Value = Application.Transpose(TB)
End Sub

Sub tri(a, gauc, droi) ' Quick sort (tiré du site de Jacques BOISGONTIER : http ://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm)
ref = a((gauc + droi) \ 2, 1)
g = gauc: d = droi
Do
    Do While a(g, 1) < ref: g = g + 1: Loop
    Do While ref < a(d, 1): d = d - 1: Loop
    If g <= d Then
        TEMP = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = TEMP
        g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

Bonjour,

super merci pour l'aide.

Daniel

Rechercher des sujets similaires à "mise forme vba"