Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Problème sur Macro

Mcintosh34

XLDnaute Nouveau
Bonjour,

Je voudrais réaliser un programme en VBA sur excel, alors j'ai demandé à une personne de me le faire, mais seulement il y a une erreur, et je n'arrive pas à la corriger.
Pouvez vous m'aider ?
Je vous ai joint 2 Screenshots et le programme.

Merci
 

Pièces jointes

  • screen1.png
    18.1 KB · Affichages: 15
  • screen2.png
    21 KB · Affichages: 12
  • PARLOIR.xlsm
    22.9 KB · Affichages: 3

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Dans le fichier joint une seule macro pour trier et deux autres pour l'appeler:

VB:
Sub Trier(EtiquetteColonne As String)
    Dim plgToSort As Range
    Dim sortKey As Range
    Dim idx As Variant

    With ActiveWorkbook.Worksheets("Feuil1")
        .Unprotect

        ' Définition de la plage à trier
        ' Tableau de la cellule C4
        With .Range("C4").CurrentRegion
            '
            ' Chercher l'EtiquetteColonne de colonne dans la ligne 1 du tableau
            idx = Application.Match(EtiquetteColonne, .Rows(1), 0)
            '
            ' Sortir si l'EtiquetteColonne passée en paramètre n'a pas été trouvée
            If IsError(idx) Then
                MsgBox "L'Etiquette de colonne " & EtiquetteColonne & " n'a pas été trouvée dans la ligne 1 du tableau!", _
                        vbExclamation, "Tri du tableau"
                Exit Sub
            Else
                Set sortKey = .Cells(1, idx)
            End If
            '
            ' Sans l'EtiquetteColonne
            Set plgToSort = .Offset(1).Resize(.Rows.Count - 1)
        End With

        ' Prépartion du tri
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=sortKey, _
                             SortOn:=xlSortOnValues, _
                             Order:=xlAscending, _
                             DataOption:=xlSortNormal
        With .Sort
            .SetRange plgToSort
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

        .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With
End Sub

Sub ALPHA()
    Trier "NOM"
End Sub

Sub ECROU()
    Trier "ECROU"
End Sub

S'il ne faut pas trier la colonne A, remplacer la ligne:
Set plgToSort = .Offset(1).Resize(.Rows.Count - 1)
par celle-ci:
Set plgToSort = .Offset(1,1).Resize(.Rows.Count - 1, .Columns.Count-1)

Bon week-end
 

Pièces jointes

  • PARLOIR.xlsm
    26 KB · Affichages: 5

Discussions similaires

Réponses
3
Affichages
117
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…