Problème avec les formules de base (multiplication, sommes)
lulu
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train d'écrire un code pour mon projet tutoré et dans ce code j'ai une colonne de prix, une colonne de quantité et je souhaite multiplier les deux pour avoir un total. Tant que les quantités ou les prix sont entier tout fonctionne mais dès qu'il y a des chiffres après la virgule, j'ai droits à un message d'erreurs 13... J'ai pourtant bien définis mes variables en currency pour pouvoir utiliser les chiffres après la virgule mais cela ne fonctionne pas, j'ai également essayer en déclarant mes variables en tant que double mais ça ne marche pas non plus et je ne sais plus quoi faire.
Je ne suis pas experte donc si quelqu'un peut m' éclairer ça serait cool.
Et j'ai un autre souci avec mon programme, dès que je veux additionner toutes les multiplications calculé précédemment, il ne fait pas de somme, mais il ajoute les nombres à la suite (si je veux additionner 1+1+200+1, le total est de 112001 et non de 203).
Merci d'avance
Ludivine
Je suis en train d'écrire un code pour mon projet tutoré et dans ce code j'ai une colonne de prix, une colonne de quantité et je souhaite multiplier les deux pour avoir un total. Tant que les quantités ou les prix sont entier tout fonctionne mais dès qu'il y a des chiffres après la virgule, j'ai droits à un message d'erreurs 13... J'ai pourtant bien définis mes variables en currency pour pouvoir utiliser les chiffres après la virgule mais cela ne fonctionne pas, j'ai également essayer en déclarant mes variables en tant que double mais ça ne marche pas non plus et je ne sais plus quoi faire.
Je ne suis pas experte donc si quelqu'un peut m' éclairer ça serait cool.
Et j'ai un autre souci avec mon programme, dès que je veux additionner toutes les multiplications calculé précédemment, il ne fait pas de somme, mais il ajoute les nombres à la suite (si je veux additionner 1+1+200+1, le total est de 112001 et non de 203).
Merci d'avance
Ludivine
A voir également:
- Problème avec les formules de base (multiplication, sommes)
- Formules mathématiques de base - Télécharger - Études & Formations
- Formules excel de base - Guide
- Base de registre - Guide
- Application multiplication - Télécharger - Études & Formations
- Gigaset as470h base ✓ - Forum telephonie fixe
4 réponses
Bonjour,
j'ai droits à un message d'erreurs 13... vous avez un probleme avec le separateur de decimales point ou virgule
le total est de 112001 et non de 203). Il nous faut voir votre programme
j'ai droits à un message d'erreurs 13... vous avez un probleme avec le separateur de decimales point ou virgule
le total est de 112001 et non de 203). Il nous faut voir votre programme
Bonjour
Comme dit f894009 que je salue cordialement, il y a un problème de type
Peux tu une partie de ton fichier au format excel 2003 (fichier/enregistrer sous/type ... xls) sur cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt
Comme dit f894009 que je salue cordialement, il y a un problème de type
Peux tu une partie de ton fichier au format excel 2003 (fichier/enregistrer sous/type ... xls) sur cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt
merci CCM81
voici le lien ou vous trouverez mon code : https://www.cjoint.com/?0Dxu5bBx5Ty
je n'est pas pu envoyer qu'une parti car tous est lié. vu que je ne suis pas une experte il doit y avoir beaucoup de ligne inutiles j'en suis consciente mais j'ai coder avec ce que je savais c'est à dire pas grand chose, mais j'ai fait comme j'ai pu !
mes erreurs viennes des macros : _calcul_estimatif_.... et _calcul_total_...
si vous voulez plus de précision n'hésitez pas j'essaierais d'être plus rapide à répondre
cordialement
lulu
voici le lien ou vous trouverez mon code : https://www.cjoint.com/?0Dxu5bBx5Ty
je n'est pas pu envoyer qu'une parti car tous est lié. vu que je ne suis pas une experte il doit y avoir beaucoup de ligne inutiles j'en suis consciente mais j'ai coder avec ce que je savais c'est à dire pas grand chose, mais j'ai fait comme j'ai pu !
mes erreurs viennes des macros : _calcul_estimatif_.... et _calcul_total_...
si vous voulez plus de précision n'hésitez pas j'essaierais d'être plus rapide à répondre
cordialement
lulu
Effectivement il y a de grosses maladresses/erreurs dans la programmation
Un exemple
Module Général
RQ1. Les variables F174, ... sont sensées déclarées comme string (en fait seule F178 l'est, les précédentes sont de type variant car non typées)
RQ2. Or ton addition suppose qu'elle sont de type numérique sinon tu fais une concaténation (mise bout à bout des valeurs)
elle fait un appel à la procedure
RQ3. F174 = ActiveCell.FormulaR1C1
renvoie dans F174 la formule qu'il y a dans Range("F174") donc une chaine et non un nombre
Pour récupérer la valeur de la cellule et non la formule
F174 = Range("F174").Value
RQ4. tu remarqueras que le compilateur ne dit rien sur cette ligne, ce qui montre bien que le type numérique du résultat ne le contrarie pas (F174 est de type variant et non string)
RQ5. Il y aurait énormément d'améliorations/optimisations à faire dans ton code.
Bon courage
Un exemple
Module Général
Public Sub i_CALCUL_TOTAL_ESPACES_VERTS()....
i_COPIE3_ESPACES_VERTS
TOTAL_ESTIMATIF_ESPACES_VERTS = F174 + F175 + F176 + F177 + F178
RQ1. Les variables F174, ... sont sensées déclarées comme string (en fait seule F178 l'est, les précédentes sont de type variant car non typées)
RQ2. Or ton addition suppose qu'elle sont de type numérique sinon tu fais une concaténation (mise bout à bout des valeurs)
elle fait un appel à la procedure
Public Sub i_COPIE3_ESPACES_VERTS()
Sheets("Rubrique DQE").Select
'copie des prix estimatif
' - ce que tu as écrit (à supprimer)
'Range("F174").Select
'F174 = ActiveCell.FormulaR1C1
'Range("F175").Select
'F175 = ActiveCell.FormulaR1C1
'Range("F176").Select
'F176 = ActiveCell.FormulaR1C1
'Range("F177").Select
'F177 = ActiveCell.FormulaR1C1
'Range("F178").Select
'F178 = ActiveCell.FormulaR1C1
' ce qu'il faut écrire
F174 = Range("F174").Value
F175 = Range("F175").Value
F176 = Range("F176").Value
F177 = Range("F177").Value
End Sub
RQ3. F174 = ActiveCell.FormulaR1C1
renvoie dans F174 la formule qu'il y a dans Range("F174") donc une chaine et non un nombre
Pour récupérer la valeur de la cellule et non la formule
F174 = Range("F174").Value
RQ4. tu remarqueras que le compilateur ne dit rien sur cette ligne, ce qui montre bien que le type numérique du résultat ne le contrarie pas (F174 est de type variant et non string)
RQ5. Il y aurait énormément d'améliorations/optimisations à faire dans ton code.
Bon courage
Bonjour
Tout d'abbord merci en tout cas pour l'efficaciter !
Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Et j'ai bien conscience que mon code est un peu maladroit mais avant j'avais aucune notion de code hormis quelque cours que j'avais eu en DUT et cetait sur libre office donc le principe est a peu pres le meme mais la redaction totalement differente donc j'ai fait des recherche sur internet et j'ai reussi a faire cela mais j'ignorais ce genre de subtiliter. Apres cest vrai que j'aurais aimee optimiser encore plus mon programme et je l'avais imaginee autrement mais je n'e ai pas les capacités.
merci encore
Cordialement
lulu
Tout d'abbord merci en tout cas pour l'efficaciter !
Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Et j'ai bien conscience que mon code est un peu maladroit mais avant j'avais aucune notion de code hormis quelque cours que j'avais eu en DUT et cetait sur libre office donc le principe est a peu pres le meme mais la redaction totalement differente donc j'ai fait des recherche sur internet et j'ai reussi a faire cela mais j'ignorais ce genre de subtiliter. Apres cest vrai que j'aurais aimee optimiser encore plus mon programme et je l'avais imaginee autrement mais je n'e ai pas les capacités.
merci encore
Cordialement
lulu
Bonjour
Tout d'abbord merci en tout cas pour l'efficaciter !
Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Et j'ai bien conscience que mon code est un peu maladroit mais avant j'avais aucune notion de code hormis quelque cours que j'avais eu en DUT et cetait sur libre office donc le principe est a peu pres le meme mais la redaction totalement differente donc j'ai fait des recherche sur internet et j'ai reussi a faire cela mais j'ignorais ce genre de subtiliter. Apres cest vrai que j'aurais aimee optimiser encore plus mon programme et je l'avais imaginee autrement mais je n'e ai pas les capacités.
merci encore
Cordialement
lulu
Tout d'abbord merci en tout cas pour l'efficaciter !
Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Et j'ai bien conscience que mon code est un peu maladroit mais avant j'avais aucune notion de code hormis quelque cours que j'avais eu en DUT et cetait sur libre office donc le principe est a peu pres le meme mais la redaction totalement differente donc j'ai fait des recherche sur internet et j'ai reussi a faire cela mais j'ignorais ce genre de subtiliter. Apres cest vrai que j'aurais aimee optimiser encore plus mon programme et je l'avais imaginee autrement mais je n'e ai pas les capacités.
merci encore
Cordialement
lulu
Bonjour
Tout d'abbord merci en tout cas pour l'efficaciter !
Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Et j'ai bien conscience que mon code est un peu maladroit mais avant j'avais aucune notion de code hormis quelque cours que j'avais eu en DUT et cetait sur libre office donc le principe est a peu pres le meme mais la redaction totalement differente donc j'ai fait des recherche sur internet et j'ai reussi a faire cela mais j'ignorais ce genre de subtiliter. Apres cest vrai que j'aurais aimee optimiser encore plus mon programme et je l'avais imaginee autrement mais je n'e ai pas les capacités.
merci encore
Cordialement
lulu
Tout d'abbord merci en tout cas pour l'efficaciter !
Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Et j'ai bien conscience que mon code est un peu maladroit mais avant j'avais aucune notion de code hormis quelque cours que j'avais eu en DUT et cetait sur libre office donc le principe est a peu pres le meme mais la redaction totalement differente donc j'ai fait des recherche sur internet et j'ai reussi a faire cela mais j'ignorais ce genre de subtiliter. Apres cest vrai que j'aurais aimee optimiser encore plus mon programme et je l'avais imaginee autrement mais je n'e ai pas les capacités.
merci encore
Cordialement
lulu
1. Donc si j'ai bien compris les modifications en .value fonctionneraient ?
Oui,
Range(cellule).Value renvoie la valeur contenue dans la cellule, et apparemment, c'est ce que tu veux
2. lors de tes déclarations de variables, il te faut indiquer pour chacune d'elle son type
dim a as long, b as long
et non
dim a, b as long
qui n'attribue le type long qu'à la variable b, et a est alors de type Variant
3. Je ne pourrais pas faire grand chose de plus pour toi, mon vieil excel 2003 refuse de sauvegarder ton fichier une fois modifier
Cordialement
Oui,
Range(cellule).Value renvoie la valeur contenue dans la cellule, et apparemment, c'est ce que tu veux
2. lors de tes déclarations de variables, il te faut indiquer pour chacune d'elle son type
dim a as long, b as long
et non
dim a, b as long
qui n'attribue le type long qu'à la variable b, et a est alors de type Variant
3. Je ne pourrais pas faire grand chose de plus pour toi, mon vieil excel 2003 refuse de sauvegarder ton fichier une fois modifier
Cordialement
Total= var1 +var2 +var3 ...
Sachant que toute mes variable sont declarer en tant que currency et que jai essayer single et double.
Merci de votre reponse en tout cas !