Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'---maximise la cible T9---
If Target.Address <> "$N$14" Then Exit Sub
Dim inf#, sup#, cible As Range, r As Range, imin&, mem, vmax, i&
Cancel = True
inf = 1.45: sup = 2.35 'adaptables
Set cible = [T9] 'adaptable
Set r = [M16:M47] 'adaptable
r(0, 2) = inf 'N15
imin = inf * 100
mem = [Gamma1] 'mémorise la valeur de O9
For Each r In r
[Gamma1] = r 'modification de O9
vmax = 0
Application.ScreenUpdating = False
For i = imin To sup * 100
r(1, 2) = i / 100 'modification en colonne N
If IsNumeric(cible) Then If cible > vmax Then vmax = cible: imin = i
Next i
r(1, 2) = imin / 100 'valeur retenue en colonne N
Next r
[Gamma1] = mem
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Macros événementielles quand on double-clique sur certaines cellules
'---maximise la valeur cible T9---
'job75
If Target <> [Tableau2].Columns(2).Rows(0) Then Exit Sub 'quand on ne double-clique pas sur l'en-tête de la colonne "N"
Dim inf!, sup!, cible As Range, r As Range, imin&, mem, vmax, i&, ad As String
Cancel = True
inf = 1.45: sup = 2.35 'adaptables
Set cible = [PourCentMV] 'la cellule qui affiche le pourcentage des masses volumiques obtenues par formule identiques à celles du labo (adaptable)
'Set r = [M16:M47] 'adaptable
Set r = [Tableau2].Columns(1).Offset(1, 0).Resize(HTABLO([Tableau2], 0) - 1, 1) 'colonne des % dont 0% est exclu (adaptable) ---> ne marche pas
ad = r.Address
Set r = Evaluate(ad)
r(0, 2) = Application.Round(inf, 2) 'N15
imin = inf * 100
'mem = [Gamma1] 'mémorise la valeur de O9
For Each r In r
[Gamma1] = r 'modification de O9
vmax = 0
Application.ScreenUpdating = False
For i = imin To sup * 100
r(1, 2) = Application.Round(i / 100, 2) 'modification en colonne N
If IsNumeric(cible) Then If cible > vmax Then vmax = cible: imin = i
Next i
r(1, 2) = Application.Round(imin / 100, 2) 'valeur retenue en colonne N
Next r
'[Gamma1] = mem
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'---maximise la cible T9---
With [Tableau2]
If Target.Address <> .Cells(0, 2).Address Then Exit Sub 'N14
Dim inf#, sup#, cible As Range, jmin&, mem, i&, vmax, j&
Cancel = True
inf = 1.45: sup = 2.35 'adaptables
Set cible = [PourCentMV] 'T9
.Cells(1, 2) = inf 'N15
jmin = inf * 100
mem = [Gamma1] 'mémorise la valeur de O9
Application.EnableEvents = False
For i = 2 To .Rows.Count
[Gamma1] = .Cells(i, 1) 'modification de O9
vmax = 0
Application.ScreenUpdating = False
For j = jmin To sup * 100
.Cells(i, 2) = j / 100 'modification en colonne N
If IsNumeric(cible) Then If cible > vmax Then vmax = cible: jmin = j
Next j
.Cells(i, 2) = jmin / 100 'valeur retenue en colonne N
Next i
[Gamma1] = mem
Application.EnableEvents = True
End With
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'---maximise la cible T9---
With [Tableau2]
If Target.Address <> .Cells(0, 2).Address Then Exit Sub 'N14
Dim inf#, sup#, cible As Range, jmin&, mem, rc&, i&, vmax, j&
Cancel = True
inf = 1.45: sup = 2.35 'adaptables
Set cible = [PourCentMV] 'T9
jmin = inf * 100
mem = [Gamma1] 'mémorise la valeur de O9
rc = .Rows.Count
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual 'calcul manuel
.Cells(1, 2) = inf 'N15
For i = 2 To rc
[Gamma1] = .Cells(i, 1) 'modification de O9
[Gamma1].Offset(1).Calculate 'recalcule O10
vmax = 0
For j = jmin To sup * 100
.Cells(i, 2) = j / 100 'modification en colonne N
.Cells(rc + 1, 2).Calculate 'recalcule N48
.Cells(1, 3).Resize(i).Calculate 'recalcule seulement la plage nécessaire en colonne O
cible.Calculate 'recalcule cible
If IsNumeric(cible) Then If cible > vmax Then vmax = cible: jmin = j
Next j
.Cells(i, 2) = jmin / 100 'valeur retenue en colonne N
Next i
[Gamma1] = mem
Application.Calculation = xlCalculationAutomatic 'calcul automatique
Application.EnableEvents = True
End With
End Sub
SOMMEPROD(N(TRONQUE(XXX;S8)=TRONQUE(YYY;S8))
SUMAPRODUCTO(N(TRUNCAR(XXX;S8)=TRUNCAR(YYY;S8))
SOMMEPROD(N(TRONQUE(XXX*10^S8)=TRONQUE(YYY*10^S8))
SUMAPRODUCTO(N(TRUNCAR(XXX*10^S8)=TRUNCAR(YYY*10^S8))