2cellules égales si valeur de l'une change selon formule

bonsoir

la cellule F1 est la somme des cellules E22 + K22 (la formule =E22+K22 est inscrite dans la cellule F1 ).

Grâce à la macro suivante placée dans la feuille concernée , la valeur de la cellule F5 est égale à celle de la cellule F1.

Le problème c'est que ça fonctionne seulement si j'écris moi-même la valeur dans F1. La macro ne fonctionne pas si la valeur dans F1 change toute seule selon la formule qui y est inscrite (=E22+K22).

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = Cells(1, 6).Address Then

Cells(5, 6) = Cells(1, 6)

End If

end sub

comment faire pour que lorsque la valeur de F1 change sans que je change moi-même sa valeur, la macro fonctionne et donne à F5 la même valeur que F1?

J'ai essayé aussi avec "Worksheet_SelectionChange ", en vain ...

Bonsoir,

Erreur de cible ! F1 ne change pas ! E22 et K22 changent...

e22 et k22 sont eux memes les sommes d'une serie de cellules...

Cibler la source du changement !

j'ai bcp de cellules cibles, au moins une vingtaines..

J'ai essayé d'écrire plusieurs cellules cibles dans la ligne "if target address" mais il y a un problème avec la virgule..

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = (Cells(13, 2), Cells(13, 8), Cells(14, 2), Cells(14, 8)).Address Then

Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

End If

End Sub

Bonjour,

utilise l'événement calculate ...

Private Sub Worksheet_Calculate()

End Sub

merci Pierre

mais comment j'insère à l'intérieur la liste des cellules cibles?

les cellules cibles sont celles situées dans l'intervalle:

B13 à D21 et H13 à J21

j'ai bcp de cellules cibles, au moins une vingtaines..

Ce ne sont pas des cellules cibles mais les cellules source de changement qu'il faut cibler, remonter à partir de tes formules au celulles qui n'ont pas de formules et font varier ces résultats (les cellules dont le contenu change n'ont nécessairement pas de formule mais c'est changement qui fait varier les valeurs affichées par les formules). Une fois trouvées on regroupe ces cellules avec Union si nécessaire et on teste leur intersection avec Target...

On peut effectivement utiliser l'évènement calculate qui se déclenchera lors de recalculs (faisant éventuellement varier les résultats des formules), mais je ne le conseille jamais dans un tel cas car justement on ne peut pas cibler, et chaque recalcul, la procédure sera déclenchée et refera le calcul, qu'il y ait eu variation ou non...

je ne suis pas très avancé dans les macros..

les cellules origines du changement des calculs sont les suivantes:

B13 à D21 : b13, b14, b15, b16, b17, b18, b19, b20, b21

c13, c14, c15 etc c21

d14, d14, etc d21

et H13 à J21 : h13, h14, etc h21

i13, i14 etc i21

j13, j14, etc j21

j'ai pensé à écrire une ligne pour chaque cellule mais c'est énormement long et ça fait un bug et bloque excel qui s'éteint tout seul...

' If Target.Address = Cells(13, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

' If Target.Address = Cells(14, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

' If Target.Address = Cells(15, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

' If Target.Address = Cells(16, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(17, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(18, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(19, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(20, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(21, 2).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(13, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(14, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(15, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(16, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(17, 8).Address Then

'Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(18, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(19, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(20, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(21, 8).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(13, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(14, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(15, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(16, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(17, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(18, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(19, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(20, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(21, 3).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(13, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

' If Target.Address = Cells(14, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

' If Target.Address = Cells(15, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(16, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(17, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(18, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(19, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(20, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

'

' If Target.Address = Cells(21, 4).Address Then

' Cells(5, 6) = Cells(22, 5) + Cells(22, 11)

' End If

MFerrand a écrit :

j'ai bcp de cellules cibles, au moins une vingtaines..

On peut effectivement utiliser l'évènement calculate qui se déclenchera lors de recalculs (faisant éventuellement varier les résultats des formules), mais je ne le conseille jamais dans un tel cas car justement on ne peut pas cibler, et chaque recalcul, la procédure sera déclenchée et refera le calcul, qu'il y ait eu variation ou non...

Bonsoir,

et donc tu pense que le calcul ne s'effectuer pas avec l'événement Change pour chaque modification de cellules ? que ce soit la bonne ou pas ?

c'est identique au recalcul qui s'effectue sur chaque changement de cellule ou sur action sur F9 ...

Bonsoir,

Quand tu es amené à écrire un code répétitif et excessivement long, c'est que la solution est mauvaise ! Mieux vaut s'arrêter et réfléchir...

Selon ce que je lis dans tes indications le ciblage devrait s'effectuer sur :

If Not Intersect(Target, Union(Me.Range("B13:D21"), Me.Range("H13:J21"))) Is Nothing Then

Ce qui te fait une macro de 5 lignes, tout compris ! C'est préférable !!

pierre.jy, ne me fais pas dire ce que je ne dis pas ! L'évènement Change se déclenche à chaque modification du contenu d'une quelconque cellule de la feuille (ainsi que lors d'insertion ou suppression de lignes ou de colonnes) mais VBA indique la source du changement et on peut cibler la source à surveiller pour n'exécuter que si le changement affecte cette source.

Pour l'évènement Calculate il se déclenche à chaque fois qu'Excel recalcule, mais on ne peut cible la source qui a provoqué ce recalcul. On lancera donc l'exécution à chaque recalcul, donc inutilement dans la majorité des cas. On peut fort bien s'y résoudre si l'on n'a pas d'autre choix, mais je pense que si on peut l'éviter autant le faire.

Cordialement.

Bonjour,

tu peux aussi sélectionner ces fameuses cellules et nommer la sélection.

La ligne de MFerrand devient :

If Not Intersect(Target, [le_joli_nom_que_tu_as_choisi]) Is Nothing Then

L'avantage est que si ça évolue tu n'as pas le code à changer. Sur un déplacement de cellule par exemple le nom évolue tout seul. Et en cas d'ajout de cellules ça reste plus simple dans le nom.

eric

sa lé zoli !

merci a vous deux!!

Rechercher des sujets similaires à "2cellules egales valeur change formule"