Correction et ajout d'une Macro dans mon fichier?

Bonjour les amis,

Avec mes modestes connaissances j'ai fait mon fichier (suivi d'un classement de fidèlité tournois Poker).

1. Je n'arrive pas à faire une macro convenable à ajouter à mon bouton présent sur la feuille "Ajout d'un joueur" qui permettrait de faire ceci:

  • Ajout d'une ligne (pour inscription d'un nouveau joueur) qui irait des colonnes B à AI (et qui reprendrait les mêmes formules que les autres lignes bien sûr).
  • ajout de la numérotation en colonne A.

2. Si j'arrive a avoir une automatisation pour l'ajout d'un nouveau joueur via la Macro ; il faut également corriger la Macro existante pour le Triage afibn que automatiquement celle-ci s"'applique sur le total des lignes à trier (tous les joueurs).

Cette macro de triage à les spécificités suivantes:

- Triage des colonnes de B à AI

- Critêres de tris:

1. Sur colonne AG/par valeur / du plus grand au plus petit

2. Sur colonne AH/par valeur / du plus grand au plus petit

3. Sur colonne AI/ par valeur/ du plus petit au plus grand

Si vous pourrier me dépanner se serait sympa car la j'avoue avoir atteind la limite de mes possibilités sur la matière.

Merci à vous les experts.

Bonjour,

Une piste où le nom du nouveau joueur est demandé dans un InputBox. Code à attacher au bouton (Affecter une macro) :

Sub Ajout()

    Dim Plg1 As Range
    Dim Plg2 As Range
    Dim Lig As Long
    Dim I As Integer
    Dim Nom As String

    Nom = InputBox("Indiquez le nom du nouveau joueur !", "Nouveau joueur.")

    If Nom = "" Then MsgBox "Abandon !": Exit Sub

    With Worksheets("Classement Fidèlité")

        'insertion d'une ligne pour garder l'écart avec le tableau du dessous
        Lig = .Cells(.Rows.Count, 1).End(xlUp).Row

        .Rows(Lig + 1).Insert

        Set Plg1 = .Range(.Cells(Lig - 1, 1), .Cells(Lig, .Columns.Count).End(xlToLeft))
        Set Plg2 = Range(Plg1, .Range(.Cells(Lig + 1, 1), .Cells(Lig + 1, Plg1.Columns.Count)))

        'recopie des formules
        Plg1.AutoFill Plg2

        'Inscription du nom
        .Cells(Lig + 1, 2).Value = Nom

        'suppression des éventuels nombre incrémentés dans les colonnes C à AF
        For I = 3 To Plg1.Columns.Count - 3 Step 2: .Cells(Lig + 1, I).Value = "": Next I

        'redéfini la plage à partir de B7
        Set Plg1 = .Range(.Cells(7, 2), .Cells(Lig + 1, Plg1.Columns.Count))

        'tri
        Plg1.Sort Plg1.Columns(32), xlDescending, Plg1.Columns(33), , xlDescending, Plg1.Columns(34), xlDescending

    End With

End Sub

Hello,

Merci These, j'ai ajouté ta Macro et cela fonctionne très bien maintenant pour ajouter un nouveau joueur.

Il reste donc à corriger le problème de ma Macro pour faire le triage ; car maintenant quand j'ajoute un (ou des) joueur, celle-ci ne tiens pas compte des lignes ajoutées dans le fichier.

P.S. : Le fichier joint contient donc la Macro pour l'ajout du nouveau joueur.

Bonjour,

Tu peux voir que dans mon code j'ai ajouté le tri en redéfinissant la plage pour qu'elle prenne en compte la ligne ajoutée :

'redéfini la plage à partir de B7
Set Plg1 = .Range(.Cells(7, 2), .Cells(Lig + 1, Plg1.Columns.Count))

'tri
Plg1.Sort Plg1.Columns(32), xlDescending, Plg1.Columns(33), , xlDescending, Plg1.Columns(34), xlDescending

Maintenant, si tu veux une procédure indépendante, tu supprimes les lignes indiquées et tu utilises cette sub :

Sub Tri()

    Dim Plage As Range

    With Worksheets("Classement Fidèlité")

        .Unprotect

        'redéfini la plage à partir de B7
        Set Plage = .Range(.Cells(7, 2), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, .Cells(7, .Columns.Count).End(xlToLeft).Column))

        'tri
        Plage.Sort Plage.Columns(32), xlDescending, Plage.Columns(33), , xlDescending, Plage.Columns(34), xlDescending, xlNo

        .Protect

    End With

End Sub

Merci de ton aide Theze.

Je vien de tester la version de tri séparée et c'est effectivement cela qu'il faut ; sauf que juste une petite erreur de tri :

- pour le 3ème critêre de tri sur la colonne AI, cela doit être inversé donc du plus petit d'abord au plus grand. (il faut modifier le "descending" je suppose mais je sais pas comment s'écrit l'inverse).

Pour se qui est du tri incorporé dans la Macro de l'ajout d'un nouveau joueur ; elle pose un problème car elle fonctionne lorsque l'on emploi une 2ème fois la Macro mais ne tient pas compte du joueur qu'on vient d'ajouter

Je viens de trouver pour corriger le tri...j'ai simplement remplacer Descending par Ascending

Merci à toi Theze, j'ai mon bonheur mon programme est top grâce à toi.

Content de t'avoir aidé

Rechercher des sujets similaires à "correction ajout macro mon fichier"