Boucle

Signaler
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
Me.vaSpread1.GetText 2, vaSpread1.ActiveRow, zVal
nVal = zVal
'Colonne 2 - somme des cellules de la ligne avant cellule active
For i = 3 To vaSpread1.ActiveCol - 1
    Me.vaSpread1.GetText i, Me.vaSpread1.ActiveRow, zVal
    nVal = nVal - zVal
Next i
Me.Label1.Caption = nVal
'Somme des cellules - somme des cellules de la ligne avant cellule active
Me.vaSpread2.GetText 3, Row, zVal1
nVal1 = zVal1
For k = 4 To Col
    Me.vaSpread2.GetText k, Row, zVal1
    nVal1 = nVal1 + zVal1
Next k
Me.Label2.Caption = (nVal1 - zVal)

Mon
probléme c'est au niveau du résultat que j'affiche dans le label2. J'ai
pas le bon résultat car je voudrai qu'il m'affiche le résultat de
nVal1( dans la première boucle)-zVal1(dans la deuxième boucle). Faut-il
imbriqué les boucles? Pouvez-vous m'aider?

12 réponses

Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

Pour info mon zval est un variant et nval1 est en double.Peut etre c'est pour ça qu'il le prend pas en compte?
Sinon devrai-je convertir?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ta première boucle tourne avec Me.vaSpread1.ActiveRow
la seconde avec Row (déclaré où ? donc surment 0, tu as pas du mettre d'Option Explicit ni de compilation systématique)

pas compris ce que tu cherches a obtenir....
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
en nettoyant un peu, on pourrais faire ce genre de code (a adapter a ce que tu souhaite faire)

Dim i As Long
Dim nSum As Double
Dim nCol2 As Double
Dim zVal As Variant
'Somme des cellules - somme des cellules de la ligne avant cellule active
For i = 3 To vaSpread1.ActiveCol - 1
vaSpread2.GetText i, vaSpread1.ActiveRow, zVal
nSum = nSum + zVal
Next i

vaSpread1.GetText 2, vaSpread1.ActiveRow, zVal
nCol2 = zVal

Me.Label1.Caption = FormatNumber(nCol2 - nSum, 2)
Me.Label2.Caption = FormatNumber(nSum, 2)
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

C'est plus propre mais le résultat dans le label2 est la somme des cellules du vaSpread2 alors que je souhaite avoir cette somme - la somme des valeurs des cellules dans le vaspread1 jusqu'à ActiveRow - 1.
J'espére que je suis clair. Tu me comprends?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
j'avais pas vu que tu jouais avec deux spreads.
je trouve que tu bidouille plus que tu ne programme... tu as toutes les billes, souvent et ne sais qu'en faire. va falloir se remonter un peu les manches si tu veux en faire ton boulot.

refais simplement une boucle, sur ton autre spread.
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

C'est pour ça que j'avais mis deux boucles comme ce que j'ai postulé plus haut.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
mais tu as fait ta soustraction finale avec zVal, qui est en fait, la valeur de la cellule se trouvant un cran (colonne) a gauche de la colonne active...

ne voulais tu pas utiliser nVal ?
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

C'est bien la soustraction "Me.Label2.Caption = (nVal1 - zVal)" que je veux mais les valeurs que j'obtiennes sont fausses c'est pour ça que je postule pour savoir ce qui cloche dans mon code.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
encore faudrait il savoir ce que tu souhaites obtenir d'autre...
tu dis que c'est ce que tu veux faire, mais les valeurs obtenues sont fausses... que pouvons nous savoir de la validité de ton code, si syntaxiquement, rien ne nous choque...

on n'a pas de visuel de ce que tu as, de ce que tu veux, de ce que tu souhaites...

difficile effort d'imagination, non ?

imbriquer les boucles, peut être, mais comme je ne suis pas sur d'avoir saisi ta volonté...
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

Peut etre que c'est un probléme de format parceque quant je mets un point d'arret pour voir les valeurs: les valeurs de zval sont mis entre guillemets comme un string et les valeurs de nval ne sont pas en guillemets.
Devrai-je convertir?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
non, zVal est un Variant, GetText renvoie surement le texte, sans se poser de questions.
quand tu fais nVal = zVal, VB fais un cast et cherche a interpreter zVal comme un Double
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

ok, merci. Je vais encore vérifier les valeurs que j'inscrits vu que le code est syntaxiquement ciorrect.
Merci encore de ta patience.