Re : problème d'incompatibilité vba
Sub fonction()
Application.ScreenUpdating = False
'supprime les feuilles Calcul et Puissance périodisée si elles existent
If Sheets(Sheets.Count).Name = "Calcul" Then
Sheets("Calcul").Visible = 1
Sheets("Calcul").Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End If
If Sheets(Sheets.Count).Name = "Puissance périodisée" Then
Sheets("Puissance périodisée").Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End If
'créer les feuilles
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Puissance périodisée"
Sheets("Puissance périodisée").Cells(3, 1) = "Début cycle"
Sheets("Puissance périodisée").Cells(3, 3) = "Fin cycle"
Sheets("Puissance périodisée").Cells(3, 5) = "Puissance moyenne cycle"
Sheets("Puissance périodisée").Cells(3, 6) = "perte sur objectif"
Dim i As Long, moyenne As Long, debut As Integer, j As Integer, prod As Double, l As Integer, k As Integer, nbcells As Long, m As Integer
m = 0
debut = 1
prod = 0
moyenne = 0
l = 0
For nbcells = 2 To 750
If Not IsEmpty(Sheets("Points 10").Cells(nbcells, 10).Value) Then
m = m + 1
End If
Next nbcells
For k = 3 To m
moyenne = moyenne + Sheets("Points 10").Cells(k, 10).Value
Next k
moyenne = moyenne * 0.3 / (m)
'moyenne = 50
Dim nom As String
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Calcul"
'remplir les plages de données
For i = 4 To m
If ((Sheets("Points 10").Cells(i, 10).Value > Sheets("Points 10").Cells(i - 1, 10).Value + moyenne Or Sheets("Points 10").Cells(i, 10).Value < Sheets("Points 10").Cells(i - 1, 10).Value - moyenne Or i = m) And i - debut - 3 > 6) Then
Sheets("Puissance périodisée").Cells(4 + l, 1).Value = Sheets("Points 10").Cells(debut + 2, 1).Value
Sheets("Puissance périodisée").Cells(4 + l, 2).Value = Sheets("Points 10").Cells(debut + 2, 2).Text
Sheets("Puissance périodisée").Cells(4 + l, 3).Value = Sheets("Points 10").Cells(i - 1, 1).Value
Sheets("Puissance périodisée").Cells(4 + l, 4).Value = Sheets("Points 10").Cells(i, 2).Text
For j = debut + 2 To i - 1
prod = prod + Sheets("Points 10").Cells(j, 10).Value
Next j
Sheets("Puissance périodisée").Cells(4 + l, 5).Value = prod / (i - debut - 2)
Sheets("Puissance périodisée").Cells(4 + l, 6).Value = Sheets("Points 10").Cells(i - 1, 12).Value - Sheets("Puissance périodisée").Cells(4 + l, 5).Value
If (i = m) Then
Sheets("Puissance périodisée").Cells(4 + l, 3).Value = Sheets("Points 10").Cells(m, 1).Value
Sheets("Puissance périodisée").Cells(4 + l, 4).Value = Sheets("Points 10").Cells(m, 2).Text
prod = prod + Sheets("Points 10").Cells(m, 10).Value
Sheets("Puissance périodisée").Cells(4 + l, 5).Value = prod / (m - debut - 1)
Sheets("Puissance périodisée").Cells(4 + l, 6).Value = Sheets("Points 10").Cells(i - 1, 12).Value - Sheets("Points 10").Cells(4 + l, 5).Value
End If
If (l > 1 And ((Sheets("Puissance périodisée").Cells(4 + l, 5).Value < Sheets("Puissance périodisée").Cells(3 + l, 5).Value - moyenne) Or (Sheets("Puissance périodisée").Cells(4 + l, 5).Value > Sheets("Puissance périodisée").Cells(3 + l, 5).Value + moyenne))) Then
Sheets("Puissance périodisée").Cells(3 + l, 3).Value = Sheets("Puissance périodisée").Cells(4 + l, 3).Value
Sheets("Puissance périodisée").Cells(3 + l, 4).Text = Sheets("Puissance périodisée").Cells(4 + l, 4).Text
Sheets("Puissance périodisée").Cells(3 + l, 5).Value = 0.5 * Sheets("Puissance périodisée").Cells(3 + l, 5).Value * Sheets("Puissance périodisée").Cells(4 + l, 5).Value
l = l - 1
End If
Dim n As Integer
For n = 0 To m / 24
Sheets("Calcul").Cells(24 * n + 1, 1).Value = Sheets("Points 10").Cells(24 * n + 3, 1).Text
Next n
For n = debut + 2 To i - 1
Sheets("Calcul").Cells(n - 2, 2).Value = Sheets("Puissance périodisée").Cells(4 + l, 5).Value
Next n
prod = 0
debut = i - 2
l = l + 1
End If
Next i
'créer le graphique
Sheets("Calcul").Activate
Columns("C:C").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Calcul'!$B:$B")
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection(1).XValues = "='Calcul'!$A:$A"
Sheets("Calcul").Select
ActiveChart.Legend.Select
ActiveChart.SeriesCollection(1).Name = "=""Puissance périodisée"""
Selection.Delete
ActiveChart.ChartArea.Copy
Sheets("Puissance périodisée").Activate
ActiveSheet.Paste
ActiveSheet.ChartObjects(1).Left = Range("H2").Left
ActiveSheet.ChartObjects(1).Top = Range("H2").Top
For j = 1 To 6
Range(Cells(1, j), Cells(3, j)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.MergeCells = True
End With
Next j
Sheets("Calcul").Visible = 0
Sheets("Synthèse").Select
End Sub
voila le reste de mon module, seulement je peux pas vraiment donner d'exmple puisque le fichier est assez lourd (non téléchargeable sur ce site) avec une dizaine de module
si tu arrives à le comprendre (et surtout si tu as le courage de le lire, c'est assez ennuyeux)...