Macro erreur d'éxécution '9'

Fermé
paconnu Messages postés 141 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 5 août 2015 - 5 août 2015 à 11:23
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 5 août 2015 à 15:47
Bonjour à tous,

Je me suis fait un fichier excel qui me permet, en extrayant des données de notre GMAO sur un tableau croisé dynamique, de suivre l'évolution de leurs statistiques (en l'occurence MTBF et MTTR).

J'ai voulu me faire une macro qui fait que lorsque j'appuie sur un bouton, la macro va aller appliquer le filtre "le mois dernier" au tableau croisé dynamique (pour avoir les stats que du mois derniers), dans un deuxième onglet les valeurs sont actualisées dans un simple tableau avec les statistiques des machines voulues (aves des renvoies de cellules toutes simples), puis ce tableau est copié dans un nouvel onglet (copie avec "valeurs et format source"), les machines sont triées dans l'ordre alphabétique, puis j'en fait des graphiques.

Le soucis ... c'est que lorsque j'éxécute la macro, elle s'arrête avant de faire le tri alphabétique et me dit gentiment "Erreur d'éxécution '9': L'indice n'appartient pas à la sélection". Je clique donc sur "débogage" et là j'ai ce que vous pouvez voir dans la photo qui apparaît.

Si quelqu'un pouvait m'aider ... je lui en serait très reconnaissant !

Pour info, voici le code complet de la macro :

Sub Graph_m_préc()
'
' Graph_m_préc Macro
'

'
Sheets("BD Live").Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date_appel"). _
ClearLabelFilters
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date_appel"). _
PivotFilters.Add Type:=xlDateLastMonth
Sheets("Synthèse").Select
Range("B4").Select
ActiveWorkbook.RefreshAll
Columns("A:E").Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
Range("A1:B44").Select
Range("A4").Activate
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil33").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil33").Sort.SortFields.Add Key:=Range("A4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil33").Sort
.SetRange Range("A2:B44")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("D1:E44").Select
Range("D6").Activate
ActiveWorkbook.Worksheets("Feuil33").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil33").Sort.SortFields.Add Key:=Range("D6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil33").Sort
.SetRange Range("D2:E44")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("C:D").Select
Selection.Delete Shift:=xlToLeft
Columns("A:B").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Feuil33'!$A:$B")
ActiveChart.ChartType = xlColumnClustered
ActiveChart.Legend.Select
Selection.Delete
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A:A,C:C").Select
Range("C1").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Feuil33'!$A:$A;'Feuil33'!$C:$C")
ActiveChart.ChartType = xlColumnClustered
ActiveWindow.SmallScroll Down:=0
ActiveChart.Legend.Select
Selection.Delete
ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.PlotArea.Select
ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.ChartArea.Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollColumn = 4
ActiveWindow.SmallScroll Down:=-30
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("D1").Select
End Sub




A voir également:

1 réponse

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
5 août 2015 à 12:10
Bonjour,

Pas de classeur pour tester...
Soit ta Feuil33 n'existe pas dans le classeur actif, soit il n'aime pas qu'elle ne soit pas active.
eric
1
paconnu Messages postés 141 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 5 août 2015 10
5 août 2015 à 13:09
Bonjour,

Effectivement pour tester c'est mieux ...

https://drive.google.com/file/d/0B-WEn9HaS17xb096VnZuZlRMVU0/view?usp=sharing

Je comprend bien mais je me disais que s'il ne trouvais pas la feuille 33 il ne commencerais même pas à copier la les cellules ...
0
paconnu Messages postés 141 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 5 août 2015 10
5 août 2015 à 13:12
Les commandes se trouvent dans l'onglet "synthèse",

les onglets "janv-15", "févr-15" sont les historiques recopiés manuellement mais je voudrais que la macro le fasse automatiqueemnt pour le mois précédent sur ces modèles.

le "Feuil1" est notre historique de pannes.

dans "BD live" un renvoi du TCD de Feuil1 pour connaitre le nombre d'heures de pannes de nombre de pannes de chaque machines en fonction des périodes souhaitées qui permettront de calculer dans "synthèse" les MTBF et MTTR des machines voulues.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 5/08/2015 à 15:32
Pourquoi tu postes un fichier où il n'y a pas de Feuil33 alors qu'on te dit que ça peut être une des cause ?????
Pourquoi poser des questions si c'est pour ne pas tester les réponses ?

Je comprend bien mais je me disais que s'il ne trouvais pas la feuille 33 il ne commencerais même pas à copier la les cellules ...
Que fait vba si on ne lui spécifie pas de feuille ?

eric

PS : on ne poste pas un fichier de 10Mo mais un fichier expurgé avec l'essentiel pour le pb et qq lignes données.
0
paconnu Messages postés 141 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 5 août 2015 10
5 août 2015 à 15:38
"Feuil33" était un exemple, En l'occurence la macro crée une nouvelle feuille pour y faire le graphique que je demande. Le nom sera différent à chaque fois.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
5 août 2015 à 15:47
Oui mais ta macro veut Feuil33.
Si c'est la dernière créée utilise activesheet. Sinon il faut utiliser une variable as worksheet qui pointe sur elle quand tu la crées pour pouvoir la retrouver et travailler dessus plus tard.
Dim sh as worksheet
set sh=ActiveSheet

Et quand tu en as besoin :
sh.Select
'ou
a=sh.[A1]
'ou ce que tu veux
0