Cellule en mémoire

salsinats80

XLDnaute Nouveau
Bonjour,

Je suis novice en vba. Je ne connais que l'excel simple avec ses fonctions...

je souhaite mettre dans une cellule, la première valeur rencontrée d'une autre cellule inférieure à et qui change régulièrement dans la journée

ex :
cellule A1 = 10
Cellule B1 = 12 ; 13 ; 9 ; 10 ; 7 ; 8 ; 11 ; etc (au cours de la journée)
Dès que la cellule B1 < A1 mettre dans cellule C1 la première valeur de B1 rencontrée (ici : 9) et la conserver jusque D3="". (Il ne faut plus tenir compte des autres valeurs ensuite)
Au départ C1 est vide
D3 sera une valeur en fonction de C1 mais ce n'est pas important pour le moment.
Le fichier reste ouvert sans interruption toute la journée

Dans l'attente, merci et bonne journée
Stan
 

aalex_38

XLDnaute Nouveau
Re : Cellule en mémoire

Bonjour,

Tu peux ajouter un evenement change dans ta feuille, ça donne quelque chose comme ça, pour la première partie (le reste avec D3 j'ai pas tout saisi) :


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then
    Exit Sub
End If

If Target.Address = Range("B1").Address Then
    If Range("B1") < Range("A1") Then
        Range("C1") = Range("B1")
    End If
End If
End Sub
 

aalex_38

XLDnaute Nouveau
Re : Cellule en mémoire

Re,

Juste une précision, je ne sais pas si tu connais les procédures evenementielles, il faut les selectionner dans listes de l'editeur (worksheet et change) et la procèdure suivante s'écrit toute seule :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

J'ai modifié la procédure pour prendre en compte une modification de A1, on ne sait jamais :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then
    Exit Sub
End If

If Target.Address = Range("B1").Address Or Target.Address = Range("A1").Address Then
    If Range("B1") < Range("A1") Then
        Range("C1") = Range("B1")
    End If
End If
End Sub
 

salsinats80

XLDnaute Nouveau
Re : Cellule en mémoire

Re...

Je viens d'essayer.
Je ne sais pas si j'ai tout "bien fait" !
Ca marche sauf que dans c1 la valeur continue de changer en fonction de b1.
Je souhaite que dès que b1< a1 garder en mémoire la première valeur inférieure à a1 rencontrée, même si celle-ci change et qu'elle continue à être inférieure...
ex :
a1 = 10
b1 = 10 puis 15 puis 7 puis 6 puis 13 puis 4 etc...
b1 devra garder en mémoire 7 car 7 < 10 (première valeur < à 10)

Voilà
Merci d'avance

Stan
 

pedrag31

XLDnaute Occasionnel
Re : Cellule en mémoire

Bonjour a tous,

Pour reprendre le code d'Aalex_38, il te suffit d'ajouter le code en rouge:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then
    Exit Sub
End If

If Target.Address = Range("B1").Address Or Target.Address = Range("A1").Address Then
    If Range("B1") < Range("A1") [COLOR="Red"]And Range("C1")="" [/COLOR]Then
        Range("C1") = Range("B1")
    End If
End If
End Sub

Comme la cellule C1 au depart est vide, des qu'elle sera remplie avec le premier nombre inferieur a A1, le code ne prendra plus en compte ensuite les nouvelles valeurs inferieures...

Edit:

pourquoi 2 discussions strictement identique ...

En effet, merci Skoobi pour cette precision, je n'avais pas vu que tu avais deja resolu le pb dans l'autre post.
A salsinats80 : Il ne faut pas poster deux fois les memes choses parce que, comme c'est le cas ici, tu fais bosser des gens sur ton probleme pour rien alors qu'il a ete deja resolu par ailleurs. C'est egoiste sachant que "s'il avait fallu payer" pour ces conseils, tu n'aurais poste qu'une fois! :mad:


Bonne journee,:)
 
Dernière édition:

aalex_38

XLDnaute Nouveau
Re : Cellule en mémoire

Code:
A salsinats80 : Il ne faut pas poster deux fois les memes choses parce que, comme c'est le cas ici, tu fais bosser des gens sur ton probleme pour rien alors qu'il a ete deja resolu par ailleurs.

Je suis tout a fait d'accord, en plus je me suis donné le peine de chercher et de répondre alors que skoobi, l'avait déjà très bien fait.

Une perte de temps pour moi, bon c'est pas grave mais faut pas abuser :(
 

Discussions similaires