Macro erreur d'éxécution '9'
paconnu
Messages postés
141
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
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

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:
- Macro erreur d'éxécution '9'
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
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 ...
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.
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.
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.
Et quand tu en as besoin :