Incrémenter une variable de la différence entre deux cellules

mortaurat

XLDnaute Nouveau
Bonjour,
Je programme en VBA depuis aujourd'hui (après avoir fait beaucoup de C), et j'epprouve quelques difficultés avec des opération simples du genre:
Code:
hausse = hausse + Cells(j, 5).Value - Cells(j - 1, 5).Value 'on incremente hausse de la difference
j'ai une magnifique erreur1004, pouvez vous m'expliquer pourquoi ?

Merci
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Incrémenter une variable de la différence entre deux cellules

Bonjour mort aux rats, et bienvenue sur le forum

ta ligne semble correcte mais...........

- si tu est dans une boucle For.......Next vérifie que la valeur de J soit un entier positif
- les contenus des cellules J,5 et J-1,5 sont-ils numériques ????

à+
Philippe
 

mortaurat

XLDnaute Nouveau
Re : Incrémenter une variable de la différence entre deux cellules

Oui ils sont de type numérique.
J'ai eu la même erreur ce matin en ecrivant:
Cells(i + 19, 7) = (Cells(i + 7, 5).Value + Cells(i + 8, 5).Value + Cells(i + 9, 5).Value + Cells(i + 10, 5).Value + Cells(i + 11, 5).Value + Cells(i + 12, 5).Value + Cells(i + 13, 5).Value + Cells(i + 14, 5).Value + Cells(i + 15, 5).Value + Cells(i + 16, 5).Value + Cells(i + 17, 5).Value + Cells(i + 18, 5).Value + Cells(i + 19, 5).Value) / 13

J'ai du faire:
Cells(i + 19, 7) = Application.WorksheetFunction.Sum(Cells(i + 7, 5).Value, Cells(i + 8, 5).Value, Cells(i + 9, 5).Value, Cells(i + 10, 5).Value, Cells(i + 11, 5).Value, Cells(i + 12, 5).Value, Cells(i + 13, 5).Value, Cells(i + 14, 5).Value, Cells(i + 15, 5).Value, Cells(i + 16, 5).Value, Cells(i + 17, 5).Value, Cells(i + 18, 5).Value, Cells(i + 19, 5).Value) / 13
Pour régler le probléme.
mais pour une différence.

le code entier de la sub est:
Sub RSI14()
Dim i, j, k, rang, hausse, baisse As Integer
Dim nom_action As String

j = 0
k = 1

Sheets("codeAction").Activate 'on se place sur la page codeAction
nom_action = Cells(k, 3) 'reçoit le nom de la premiere action

While nom_action <> "" 'tant qu'il n'y a pas de case vide
i = 20 'on met i à 20
Sheets(nom_action).Activate 'va sur la page de l'action concernée

'calcul RSI et affichage dans la sheet de l'action
Cells(6, 8) = "RSI14"

While Cells(i + 20, 5) <> ""
'le principe est de regarder à chaque fois, les 14 valeurs precedentes, on regarde si c'est des hausse ou des baisses et on incremente la variable en fonction
While (j < 14)
If (Cells(i - j, 5) > Cells(i - j - 1, 5)) Then 'si hausse
hausse = hausse + Cells(j, 5).Value - Cells(j - 1, 5).Value 'on incremente hausse de la difference
End If

If (Cells(i - j, 5) < Cells(i - j - 1, 5)) Then 'si baisse
baisse = baisse + Cells(j, 5) - Cells(j - 1, 5) 'on incremente hausse de la difference
End If
Wend

Cells(i, 8) = 100 - 100 / (1 + hausse / baisse)

j = 0
i = i + 1
baisse = 0
hausse = 0
Wend
Sheets("codeAction").Activate 'on se place sur la page codeAction
k = k + 1
nom_action = Cells(k, 3) 'reçoit le nom d'une autre action s'il y en a une
Wend 'end while

End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Incrémenter une variable de la différence entre deux cellules

Re,

ci-dessous, il semble y avoir un problème
Sheets(nom_action).Activate

essaie de remplacer par ceci:
Sheets("nom_action").Activate

à+
Philippe

Edit: Quelle est la ligne en surbrillance au moment du blocage ?
 
Dernière édition:

mortaurat

XLDnaute Nouveau
Re : Incrémenter une variable de la différence entre deux cellules

Euh non car nom_action est une variable contenant le nom de l'action que j'étudie.
c'est donc bien Sheets(nom_action).Activate
Ensuite, je vais sur la sheet de l'action, et je peut prendre ses cours et faire mes calculs normalement.
Sauf qu'il y a apparement un problème de type avec cette ligne:
hausse = hausse + Cells(j, 5).Value - Cells(j - 1, 5).Value 'on incremente hausse de la difference
 

mortaurat

XLDnaute Nouveau
Re : Incrémenter une variable de la différence entre deux cellules

Alors j'ai une théorie, et elle est bigrement fourbe !
C'est que les valeurs numériques sont sous la forme 6.5 et non 6,5. Or il doit prendre le '.' pour un caractère.
D'où l'erreur.
Comment je peut régler ça ?

Ce qui m’ennuie, c'est que les cours de mes actions sont directement récupérés d'internet... donc le ',' ou '.' ne dépend pas de moi.
 

Fred0o

XLDnaute Barbatruc
Re : Incrémenter une variable de la différence entre deux cellules

Bonsoir mortaurat, Philippe.

Tu peux essayer ceci :
VB:
hausse = hausse + CDbl(Replace(Cells(j, 5).Value, ".", ",")) - CDbl(Replace(Cells(j - 1, 5).Value, ".", ","))

A+
 

Discussions similaires

L
Réponses
2
Affichages
907
remercieme,nt à marco57
R

Statistiques des forums

Discussions
312 203
Messages
2 086 191
Membres
103 152
dernier inscrit
Karibu