Erreur 91

Résolu/Fermé
damargail Messages postés 3 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 10 janvier 2013 - 9 janv. 2013 à 21:01
nadbelle Messages postés 3 Date d'inscription jeudi 10 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013 - 18 janv. 2013 à 22:37
Bonjour,

J'utilise VBA depuis peu à l'aide du "Développeur" intégré à Excel pour mettre en place un outil de suivi pour une association.
La formule suivante (extraction de la feuille "Journal", copie, tri et sous totaux fonctionne dans 2 autres feuilles excel mais bloque dans la feuille "S. Totaux" sur la ligne :

<gras>ActiveWorkbook.Worksheets("S.Totaux").AutoFilter.Sort.SortFields.Clear

accompagné de la mention : "erreur d'exécution "91" variable objet ou variable bloc With non définie"

Après avoir longuement consulté les indications et les recommandations des internautes de ce site, je me tourne vers vous pour me sortir de cette ornière. Car je n'arrive pas à faire identifier la plage à traiter par VBA.
Si l'un ou l'une d'entre vous veut bien m'éclairer, voire me dépanner, Merci d'avance.

Ci-après la macro rédigée par le "Développeur"

Sub Macrosoustotaux()
'
Range("A4:C220").Select
Selection.Rows.Ungroup
Selection.Rows.Ungroup

Sheets("Journal").Range("A2:R200").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A3:R3"), Unique:=False
Range("A3:R3").Select
Selection.AutoFilter

ActiveWorkbook.Worksheets("S.Totaux").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("S.Totaux").AutoFilter.Sort.SortFields.Add Key:= _
Range("H3:H200"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal

With ActiveWorkbook.Worksheets("S.Totaux").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3:R200").Select

Selection.Subtotal GroupBy:=8, Function:=xlSum, TotalList:=Array(7, 10, 11, _
14, 15, 18), Replace:=True, PageBreaks:=False, SummaryBelowData:=True

End Sub


5 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
10 janv. 2013 à 12:12
Bonjour,

Je n'ai pas regardé en détail mais juste une remarque :

cette succession d'instruction est probablement en cause:

Selection.AutoFilter
ActiveWorkbook.Worksheets("S.Totaux").AutoFilter.Sort.SortFields.Clear

EN effet si avant c'est lafeuille S.totaux qui est active alors l'instruction Selection.autofilter enlève le filtre automatique

Et donc l'instruction suivante porvoque l'erreur 91 car il n'y a plus le filtre
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
10 janv. 2013 à 12:37
Bonjour,


Remplacez:

Range("A3:R3").Select
Selection.AutoFilter

par un test filtre ou pas

If Not Worksheets("S.Totaux").AutoFilterMode Then
    ActiveWorkbook.Worksheets("S.Totaux").Range("A3:R3").AutoFilter
  End If


A voir

A+
0
nadbelle Messages postés 3 Date d'inscription jeudi 10 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013
10 janv. 2013 à 13:30
merci pour cette explication car je le trouve bien pour moi
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 10/01/2013 à 14:16
Oui, la solution de f894009 est la bonne car j'avais oublié de préciser que Selection.Autofilter
enlève le filtre automatique si il y a un filtre et le met si il n'y en a pas. Donc tester en préallable est la bonne solution.

Bonne continuation
0
damargail Messages postés 3 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 10 janvier 2013
10 janv. 2013 à 14:27
Bonjour,
et merci pour votre diligence.

Le remplacement de :

Range("A3:R3").Select
Selection.AutoFilter


par un test filtre ou pas

If Not Worksheets("S.Totaux").AutoFilterMode Then
ActiveWorkbook.Worksheets("S.Totaux").Range("A3:R3").AutoFilter
End If


donne entière satisfaction.
Merci encore pour cette entr'aide, la solution et les quelques explications qui m'éclairent sur les règles de fonctionnement de VBA.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
damargail Messages postés 3 Date d'inscription mercredi 9 janvier 2013 Statut Membre Dernière intervention 10 janvier 2013
10 janv. 2013 à 14:33
Merci à tous les contributeurs à la résolution de ma question

A +
0
nadbelle Messages postés 3 Date d'inscription jeudi 10 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 22:37
merçi de cette repence
0