Function SiEntierValeurSinonZero(xrg As Range) As Variant
' retourne un tableau identique au tableau en entrée
' dont chaque élément est égal à 0 si l'élément correspondant
' en entrée n'est pas un entier ou bien qui est est égal à l'entier
' si l'élément en entrée est un entier.
Dim Tablo, i As Long, j As Long, x
If xrg.Rows.Count = 1 Then
' une seule ligne en entrée
ReDim Tablo(1 To xrg.Columns.Count)
For j = 1 To xrg.Columns.Count
x = xrg(1, j).Value: Tablo(j) = 0
If Not IsEmpty(x) Then If IsNumeric(x) Then If (CLng(x) = CDbl(x)) Then Tablo(j) = x
Next j
SiEntierValeurSinonZero = Tablo
ElseIf xrg.Columns.Count = 1 Then
' une seule colonne en entrée
ReDim Tablo(1 To xrg.Rows.Count)
For i = 1 To xrg.Rows.Count
x = xrg(i, 1).Value: Tablo(i) = 0
If Not IsEmpty(x) Then If IsNumeric(x) Then If (CLng(x) = CDbl(x)) Then Tablo(i) = x
Next i
SiEntierValeurSinonZero = Application.Transpose(Tablo)
Else
' plus d'une ligne et plus d'une colonne en entrée
ReDim Tablo(1 To xrg.Rows.Count, 1 To xrg.Columns.Count)
For i = 1 To xrg.Rows.Count
For j = 1 To xrg.Columns.Count
x = xrg(i, j).Value: Tablo(i, j) = 0
If Not IsEmpty(x) Then If IsNumeric(x) Then If (CLng(x) = CDbl(x)) Then Tablo(i, j) = x
Next j
Next i
SiEntierValeurSinonZero = Tablo
End If
End Function