Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tableau - somme automatique

1 réponse
Avatar
Hélène
Bonjour,
Dans un tableau o=F9 j'utilise la somme automatique, le=20
calcul n'est pas exact si des cellules sont vides.
Existe-t-il une solution autre que de mettre des 0 dans=20
les cellules vides pour obtenir un bon r=E9sultat?
Merci =E0 l'avance!

1 réponse

Avatar
AB
Bonjour Hélène,
En effet, et c'est...barbant
Personnellement, j'utilise une macro (qui serait à améliorer par de vrais
macroteurs), à laquelle j'ai affecté le bouton "somme automatique", qui
donne le bon résultat, et qui met les zéros à ma place.
C'est un bricolage qui me suffit. Si tu dois faire de fréquents calculs,
mieux vaut utiliser Excel.
AB

Sub SommeColonneTableau3()
Dim Contenu As String
Dim nbCol, NbLig, NbCel, i, j, z As Integer


If Selection.Information(wdWithInTable) = True Then
GoSub RAZ
With Selection 'repérage de la cellule où on veut mettre la formule
ligne = .Information(wdStartOfRangeRowNumber)
colonne = .Information(wdStartOfRangeColumnNumber)
End With
acount = ActiveDocument.Range(0, Selection.Range.End).Tables.Count

ActiveDocument.Tables(acount).Select
For i = ligne - 1 To 1 Step -1 'balayage des cellules au
dessus
ActiveDocument.Tables(acount).Cell(i, colonne).Select
GoSub SelectionCellule
If Terme1 < 33 Or Terme1 = 45 Then 'élimination des blancs éventuels en
début de texte
GoSub SuppressionBlancs
End If
GoSub SelectionCellule
For z = 1 To Len(Contenu) - 2
T = Mid(Contenu, z, 1)
Code = Asc(T)
If (Code < 48 Or Code > 57) And (Code <> 45 And Code <> 43 And Code <> 46
And Code <> 44 And Code <> 32) Then GoTo 100
Next z
Selection.Find.Execute Findtext:=",", replacewith:=".",
Replace:=wdReplaceAll
GoSub SelectionCellule
If Terme1 = 43 Then 'élimine le + et les espaces après éventuels
Selection.Find.Execute Findtext:=Chr(Terme1), replacewith:="",
Replace:=wdReplaceAll
GoSub SuppressionBlancs
End If
GoSub SelectionCellule
If (Terme1 > 47 And Terme1 < 58) Then
GoSub SuppressionBlancs 'élimination des séparateurs éventuels dans les
nombres
End If
GoSub SelectionCellule
If Terme1 < 33 Then Selection.TypeText Text:="0" 'mettre zéro dans les
cellules vides
GoSub SelectionCellule
total = total + Val(Contenu)
Next i

100:
ActiveDocument.Tables(acount).Cell(ligne, colonne).Select
Selection.Delete 'enlever le résultat précédent
Selection.InsertAfter (total)
GoTo fin
Else
MsgBox "Mettre le point d'insertion dans un tableau"
End If

SelectionCellule:
Contenu = Selection.Text
Terme1 = Asc(Contenu)
Return

SuppressionBlancs:
Selection.Find.Execute Findtext:="^w", replacewith:="",
Replace:=wdReplaceAll
Return

RAZ:
'le but est de remettre à zéro la fonction de remplacement : je ne sais pas
faire plus simple !
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Return
fin:
End Sub


Hélène wrote:
| Bonjour,
| Dans un tableau où j'utilise la somme automatique, le
| calcul n'est pas exact si des cellules sont vides.
| Existe-t-il une solution autre que de mettre des 0 dans
| les cellules vides pour obtenir un bon résultat?
| Merci à l'avance!