babalouche
XLDnaute Nouveau
Bonjour le forum,
Je dois faire une macro en vba pour faire des graphiques a partir de tableau contenu dans des fichiers.
mon fichier qui contient la macro agit sur le fichier contenant le tableau et doit créer une feuille sur celui ci pour y mettre les graphiques. Seulement j'ai une erreur 91 quand je commence à faire les graphiques.
Les lignes où sont l'erreur sont en gras ( comme j'ai un if j'ai 2 fois l'erreur ).
Le fichier test1_batiste1.xlsm est le fichier de la macro
Sub Workbook_Open()
Dim classeur As String
Dim Wkb As Workbook
Dim colonne As Integer
Dim ligne As Integer
Dim colonne_date As Integer
Dim compteur As Integer
Windows("test1_batiste1.xlsm").Activate
classeur = ""
For Each Wkb In Application.Workbooks
If Not Wkb Is ThisWorkbook And LCase(Wkb.Name) <> "test1_batiste1.xlsm" Then
classeur = Wkb.Name
Exit For
End If
Next Wkb
Workbooks(classeur).Activate
colonne = WorksheetFunction.CountA(Range("A1:BB1"))
ligne = WorksheetFunction.CountA(Range("A1:A1000"))
colonne_date = 1
compteur = 1
While (IsDate(Cells(2, colonne_date)) <> True And colonne_date < colonne + 2)
colonne_date = colonne_date + 1
Wend
Workbooks(classeur).Activate
Sheets(1).Activate
Workbooks(classeur).Sheets.Add After:=ActiveSheet
If (colonne_date = 1) Or (colonne_date > colonne) Then
For i = 1 To colonne - 1
Workbooks(classeur).ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries.Workbooks (classeur)
ActiveChart.FullSeriesCollection(1).Values = Workbooks(classeur).Sheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, i + 1), Workbooks(classeur).Sheets(1).Cells(ligne, i + 1))
ActiveChart.FullSeriesCollection(1).Name = Workbooks(classeur).Sheets(1).Cells(1, i + 1)
ActiveChart.FullSeriesCollection(1).XValues = Workbooks(classeur).Sheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, 1), Workbooks(classeur).Sheets(1).Cells(ligne, 1))
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & i).IncrementLeft -230
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & i).IncrementTop -50 + 300 * (i - 1)
Next i
Else
For i = 1 To colonne
Workbooks(classeur).ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries.Workbooks (classeur)
ActiveChart.FullSeriesCollection(1).Values = Workbooks(classeur).Worksheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, i), Workbooks(classeur).Sheets(1).Cells(ligne, i))
ActiveChart.FullSeriesCollection(1).Name = Workbooks(classeur).Worksheets(1).Cells(1, i)
ActiveChart.FullSeriesCollection(1).XValues = Workbooks(classeur).Worksheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, colonne_date), Workbooks(classeur).Sheets(1).Cells(ligne, colonne_date))
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & cc).IncrementLeft -230
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & cc).IncrementTop -50 + 300 * (compteur - 1)
If colonne_date - 1 = i Then
i = i + 1
End If
compteur = compteur + 1
Next i
End If
End Sub
Je dois faire une macro en vba pour faire des graphiques a partir de tableau contenu dans des fichiers.
mon fichier qui contient la macro agit sur le fichier contenant le tableau et doit créer une feuille sur celui ci pour y mettre les graphiques. Seulement j'ai une erreur 91 quand je commence à faire les graphiques.
Les lignes où sont l'erreur sont en gras ( comme j'ai un if j'ai 2 fois l'erreur ).
Le fichier test1_batiste1.xlsm est le fichier de la macro
Sub Workbook_Open()
Dim classeur As String
Dim Wkb As Workbook
Dim colonne As Integer
Dim ligne As Integer
Dim colonne_date As Integer
Dim compteur As Integer
Windows("test1_batiste1.xlsm").Activate
classeur = ""
For Each Wkb In Application.Workbooks
If Not Wkb Is ThisWorkbook And LCase(Wkb.Name) <> "test1_batiste1.xlsm" Then
classeur = Wkb.Name
Exit For
End If
Next Wkb
Workbooks(classeur).Activate
colonne = WorksheetFunction.CountA(Range("A1:BB1"))
ligne = WorksheetFunction.CountA(Range("A1:A1000"))
colonne_date = 1
compteur = 1
While (IsDate(Cells(2, colonne_date)) <> True And colonne_date < colonne + 2)
colonne_date = colonne_date + 1
Wend
Workbooks(classeur).Activate
Sheets(1).Activate
Workbooks(classeur).Sheets.Add After:=ActiveSheet
If (colonne_date = 1) Or (colonne_date > colonne) Then
For i = 1 To colonne - 1
Workbooks(classeur).ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries.Workbooks (classeur)
ActiveChart.FullSeriesCollection(1).Values = Workbooks(classeur).Sheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, i + 1), Workbooks(classeur).Sheets(1).Cells(ligne, i + 1))
ActiveChart.FullSeriesCollection(1).Name = Workbooks(classeur).Sheets(1).Cells(1, i + 1)
ActiveChart.FullSeriesCollection(1).XValues = Workbooks(classeur).Sheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, 1), Workbooks(classeur).Sheets(1).Cells(ligne, 1))
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & i).IncrementLeft -230
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & i).IncrementTop -50 + 300 * (i - 1)
Next i
Else
For i = 1 To colonne
Workbooks(classeur).ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries.Workbooks (classeur)
ActiveChart.FullSeriesCollection(1).Values = Workbooks(classeur).Worksheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, i), Workbooks(classeur).Sheets(1).Cells(ligne, i))
ActiveChart.FullSeriesCollection(1).Name = Workbooks(classeur).Worksheets(1).Cells(1, i)
ActiveChart.FullSeriesCollection(1).XValues = Workbooks(classeur).Worksheets(1).Range(Workbooks(classeur).Sheets(1).Cells(2, colonne_date), Workbooks(classeur).Sheets(1).Cells(ligne, colonne_date))
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & cc).IncrementLeft -230
Workbooks(classeur).ActiveSheet.Shapes("Graphique " & cc).IncrementTop -50 + 300 * (compteur - 1)
If colonne_date - 1 = i Then
i = i + 1
End If
compteur = compteur + 1
Next i
End If
End Sub
Dernière édition: