Plantage de macro

Résolu
Bonjour,

Quelqu'un pourrait-il m'expliquer pourquoi la macro ci-dessous plante une fois sur 2. Je n'arrive pas malgré de nombreux essai à trouver la cause du bogage

Range("A1:P105").Select
ActiveWorkbook.Worksheets("prépa facture").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("prépa facture").AutoFilter.Sort.SortFields.Add Key _
:=Range("A2:A105"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("prépa facture").AutoFilter.Sort.SortFields.Add Key _
:=Range("C2:C105"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("prépa facture").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

merci à tous

5 réponses

  1. Merci pour avoir essayé, mais je pense que j'ai un problème selon que les filtres sont afficher ou pas quand je lance la macro.
    Cdlt
    1
    1. Salam.

      Ajoute cette instruction au tout début de ton code pour forcer l'application du filtre:
      If Not ActiveWorkbook.Worksheets("prépa facture").AutoFilterMode Then ActiveWorkbook.Worksheets("prépa facture").Rows(1).AutoFilter
      0
  2. Salam mchotard.

    Chez moi (Excel 2010), la macro ne plante pas.

    "Repousse le mal par le bien; et voilà que celui avec qui tu avais une animosité devient tel un ami chaleureux" (Coran)
    "Celui qui ne sait pas partager est infirme de ses émotions". (Marc Levy)
    0
    1. bonjour
      si tu peux donner un modele de ton fichier ca serait plus simple de voir ton probleme

      A+
      Maurice
      0
      1. merci à tous ceux qui ont bien voulu s'intéresser à mon problème. C'est bon maintenant en insérant la formule de Salam
        Cordialement
        0
        1. "redaiwa" et non pas "Salam" :)))
          Salam veut dire Paix (Salut) en arabe.
          0
      2. Bonjour

        eface le filtre avant

        Sub TestFiltre()
        Sheets("prépa facture").Select
        If ActiveSheet.AutoFilterMode Then
        ActiveSheet.AutoFilterMode = False
        End If
        Range("A1").AutoFilter
        '
        '
        '
        End Sub

        A+
        Maurice
        0