Sub Pivotgauss()
Dim MatrA() As Variant
Dim MatrB() As Variant
MatrA = Range("B6:F10").Value
MatrB = Range("G6:G10").Value
For i = LBound(MatrA, 1) To UBound(MatrA, 1) - 1 'sur chaque ligne
pivot = MatrA(i, i) 'on récupère le Pivot
If pivot <> 0 Then
For j = i + 1 To UBound(MatrA, 1) 'pour les lignes suivantes à réduire
coef = MatrA(j, i) / pivot 'calcul du coef à appliquer
For k = LBound(MatrA, 2) To UBound(MatrA, 2)
MatrA(j, k) = MatrA(j, k) - MatrA(i, k) * coef 'lignej=ligneJ -Lignei*Coeff ==> donne 0 sur la première colonne traitée
Next k
MatrB(j, 1) = MatrB(j, 1) - MatrB(i, 1) * coef 'idem sur la matrice B (une seule colonne)
Range("B20").Resize(UBound(MatrA, 1), UBound(MatrA, 2)) = MatrA 'on colle le résultat en B20 pour suivre le déroulement en mode Pas à Pas
Range("G20").Resize(UBound(MatrB, 1), UBound(MatrB, 2)) = MatrB
Next j
End If
Next i
Range("B20").Resize(UBound(MatrA, 1), UBound(MatrA, 2)) = MatrA
Range("G20").Resize(UBound(MatrB, 1), UBound(MatrB, 2)) = MatrB
End Sub