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

  • Initiateur de la discussion Initiateur de la discussion mortaurat
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mortaurat

Guest
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
 
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
 
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
 
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:
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
 
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.
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
4
Affichages
1 K
Nicolise
N
F
Réponses
5
Affichages
5 K
faenor86
F
C
Réponses
7
Affichages
13 K
Citronflexe
C
D
Réponses
3
Affichages
2 K
demonsares
D
S
Réponses
3
Affichages
854
steve1991
S
T
Réponses
22
Affichages
6 K
Thibault LB
T
B
Réponses
2
Affichages
2 K
Berna
B
H
Réponses
11
Affichages
37 K
HakunaMatata
H
Retour