Faire des caluls dans un stringgrid [Résolu]

cs_sagitarius 45 Messages postés samedi 26 août 2017Date d'inscription 3 décembre 2017 Dernière intervention - 16 nov. 2017 à 17:11 - Dernière réponse : cs_sagitarius 45 Messages postés samedi 26 août 2017Date d'inscription 3 décembre 2017 Dernière intervention
- 17 nov. 2017 à 17:34
Bonjour à tous,
je voudrais faire la somme des chiffres d'une colonne de mon stringgrid.
J'utilise des chiffres à virgules

valeur1:= StrToFloat(StringGrid1.Cells[1,1]);


Mais dès qu'une cellule est vide, j'ai un message d'erreur


// proceduree format cellules
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
If (ACol = 1) Then
  begin
    Value:='####,##';
  end;
end;


Merci pour votre aide
Cordialement
Afficher la suite 
45Messages postés samedi 26 août 2017Date d'inscription 3 décembre 2017 Dernière intervention

6 réponses

Répondre au sujet
korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - 16 nov. 2017 à 17:52
0
Utile
2
Salut,

peut-être en faisant comme ceci :

if (ACol = 1) then
begin
  //Value := '####,##'; // <- non
  Value := '0000,00';   // <- oui !
end;

korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - 16 nov. 2017 à 17:56
Non, désolé, ça ne marche pas !
cs_sagitarius 45 Messages postés samedi 26 août 2017Date d'inscription 3 décembre 2017 Dernière intervention > korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - 16 nov. 2017 à 18:13
bonsoir Korgis,
non, j'ai déjà fait l'essais de changement de formatage
je ne sais plus comment il faut faire lors de l'erreur,
si la cellule est vide
cordialement
Commenter la réponse de korgis
korgis 392 Messages postés samedi 17 mai 2003Date d'inscription 24 novembre 2017 Dernière intervention - 16 nov. 2017 à 18:29
0
Utile
2
J'avais fait (sous un autre pseudo) une petite fonction qui pourrait peut-être résoudre ton problème, et qui se trouve dans ce code :
http://codes-sources.commentcamarche.net/source/41357-conversion-litterale-d-un-nombre-entier-ou-flottant

La voici sortie du contexte :

function StrToFloatDef(S: string; Def: Extended): Extended;
var
  Code: Integer;
begin
  if DecimalSeparator <> '.' then
    S := StringReplace(S, DecimalSeparator, '.', []);
  Val(S, Result, Code);
  if Code <> 0 then
    Result := Def;
end;


Elle fonctionne selon le même principe que StrToIntDef(), c'est à dire que si la chaîne passée en 1er paramètre ne correspond pas à une valeur correcte, la valeur retournée sera celle que tu choisis dans le 2ème paramètre, ici "0" (zéro).

Tu peux l'utiliser par exemple ainsi :

Valeur1 := StrToFloatDef(StringGrid1.Cells[1, 1], 0);


cs_sagitarius 45 Messages postés samedi 26 août 2017Date d'inscription 3 décembre 2017 Dernière intervention - 17 nov. 2017 à 14:27
Bonjour Korgis;
Non, ça ne fonctionne pas, mais je reviendrais dessus plus tard;
un grand merci à toi,
cordialement et bon codding
cs_sagitarius 45 Messages postés samedi 26 août 2017Date d'inscription 3 décembre 2017 Dernière intervention - 17 nov. 2017 à 17:34
bonjour Korgis;
j'ai trouvé une solution, je gère les exceptions
try
except
on E: Exception do
(gestion de l'erreur)
cordialement
Commenter la réponse de korgis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.