VBA Table Program

Bonjour à tous ! Je dois écrire un programme qui:

1) lit un tableau de nombre (le tableau doit comporter au moins 2 lignes et 2 colonnes et ne comporte pas de cases vides)

2) demande a l’utilisateur si il préfère l’ordre croissant ou décroissant

3) créé une nouvelle worksheet « Résultat » (si la macro a déjà tourné et que une feuille « Résultat » existe déjà alors il faut que le programme crée une autre feuille appelée « Résultat 2 » et ainsi de suite , « Résultat 3 » si on fait tourner 3 fois le program etc.

4) les résultats apparaissent tous dans une seule colonne de la nouvelle feuille créée. Si l’utilisateur a entré « ordre croissant » on affiche tous les nombres un par un dans une colonne de la nouvelle feuille créée dans l’ordre croissant. SI l'utilisateur a entré "ordre décroissant" on affiche les résultats sur la nouvelle feuille créée dans l'ordre décroissant.

5) un message box doit aussi afficher la moyenne, la volatilité, le minimum et le maximum des nombres de la liste.

NOTE : on part du principe que l’utilisateur se place sur l’extrémité en haut à gauche du tableau et ensuite fait tourner la macro. Si le tableau fait A2 :B3 alors l’utilisateur sélectionne A2.

J'espere que j'ai été assez clair, sinon n'hésitez pas à me le dire !

Merci beaucoup pour votre aide

Bonjour,

Une proposition à étudier.

Cdlt.

7kiboubou.xlsm (36.60 Ko)

Bonjour Jean Eric, merci beaucoup pour ton aide précieuse

Malheureusement le programme ne fonctionne pas chez moi ...

J'ai un message d'erreur qui apparaît je te montre le screenshot de mon écran:

capture

Re,

Je ne comprends pas l'erreur !...

Essaie de remplacer 'Me' par 'Activesheet'.

Cdlt.

Excellent ! C'est super ça marche bien !

Est ce que c'est possible de faire en sorte que le programme soit plus flexible.

Je m'explique, si sur la sheet1 j'ai plusieurs tableaux qui se trouvent sur ma feuille à des emplacements que je ne connais pas à l'avance. Je veux faire tourner le programme que pour deux tableaux par exemple, je place alors ma souris sur la cellule a l'extrémité gauche du premier tableau et je fait tourner mon programme.

Une feuille "résultat 1" est alors créée. Je veux ensuite faire tourner le programme pour un autre tableau de ma feuille 1 et je ne veux pas effacer la feuille "résultat 1", je veux une feuille "résultat 2" qui me sorte les données pour le deuxième tableau selectionné.

table vba

Re,

Remanie le code de cette manière.

A te relire.

Cdlt.

Private Sub cmdResult_Click()
Dim ws As Worksheet
Dim tbl As Variant
Dim Arr() As Integer
Dim i As Long, j As Long, k As Long, N As Long
Dim Msg As String, Answer As String, Title As String, strName As String
Dim rng As Range
Dim x As XlSortOrder

    If ActiveCell = "" Then Exit Sub

    Msg = "Veuillez saisir l'ordre de tri :" & vbCrLf
    Msg = Msg & " 1 - Croissant   ;   2 - Décroissant"
    Title = "Ordre de tri"
    Answer = InputBox(Msg, Title, 1)

    Select Case Answer
        Case "1": x = 1
        Case "2": x = 2
        Case Else: Exit Sub
    End Select

    For Each ws In ActiveWorkbook.Worksheets
        If Left(ws.Name, 8) = "Résultat" Then N = N + 1
    Next ws
    strName = IIf(N = 0, "Résultat", "Résultat " & N + 1)

    tbl = ActiveCell.CurrentRegion.Value
    ReDim Arr(1 To (UBound(tbl) * UBound(tbl, 2)))
    For i = 1 To UBound(tbl)
        For j = 1 To UBound(tbl, 2)
            k = k + 1
            Arr(k) = tbl(i, j)
        Next j
    Next i

    Set ws = ActiveWorkbook.Worksheets.Add
    With ws
        .Name = strName
        .Cells(1).Resize(k).Value = Application.Transpose(Arr)
        .Columns(1).Sort _
                Key1:=.Cells(2, 1), _
                Order1:=x, _
                Header:=xlGuess
        .Activate
        Set rng = .Cells(1).CurrentRegion
        Msg = "min : " & Application.Min(rng) & vbCrLf
        Msg = Msg & "moyenne : " & Format(Application.Average(rng), "0.00") & vbCrLf
        Msg = Msg & "max : " & Application.Max(rng)
    End With

    MsgBox Msg, vbOKOnly + vbInformation

    Erase Arr
    Set rng = Nothing
    Set ws = Nothing

End Sub

Merci infiniment Jean-Eric pour ta réponse rapide et super efficace je dois dire !!!

Bonjour,

Merci pour les remerciements.

Considère ma réponse comme un cadeau de Noêl car ta demande était loin d'être claire...

Ma boule de cristal a des limites.

Cdlt.,

Rechercher des sujets similaires à "vba table program"