Mise à jour, l'une l'autr de 2 cellules en fonction de la dernière modifiée

Bonjour,

Je suis actuellement en train de faire un tableau qui devra être rempli par d'autres personnes. Afin d'entrer leur donnée dans ce tableau, je veux leur laisser le choix de le faire en valeur absolu ou en pourcentage (les fameuses 2 cellules du titre).

Dans cette idée, je voudrais que peu importe que la donnée soit entrée en absolu ou en relatif, l'autre se mette à jour en fonction de la dernière modification. Le but est que l'opérateur puisse avoir accès aux deux informations.

Au cas où je n'aurais pas été assez clair, je vais vous faire part d'un exemple. Disons que nous parlons d'une masse, la masse totale est de 56 kg, l'opérateur entre dans la case "pourcentage" 4.9%, il faut que la case "masse" lui affiche 2.744 kg. De même dans l'autre sens s'il entre 5.6 kg dans la case "masse", il faut que la case "pourcentage lui affiche 10%.

Voici le code utilisé actuellement (mon souci se trouve au niveau de l'événement ou de la condition je dirais).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ActiveCell = Range("E2") Then
Range("F2").Value = Range("E2").Value / Range("D2").Value
Else

End If

If ActiveCell = Range("F2") Then
Range("E2").Value = Range("F2").Value * Range("D2").Value
Else

End If

End Sub

La cellule E2 correspond à la masse, F2 au pourcentage et D2 à la masse totale.

Ce code fonctionne mais présente le gros défaut de devoir revenir cliquer sur la case modifiée pour que l'autre se mette à jour.

Si vous avez la réponse à mon problème, je vous en remercie d'avance !

Bonjour,

essaie ceci

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = "$E$2" Then
        Range("F2").Value = Range("E2").Value / Range("D2").Value
    ElseIf Target.Address = "$F$2" Then
        Range("E2").Value = Range("F2").Value * Range("D2").Value
    End If
    Application.EnableEvents = True
End Sub

Bonjour h2so4 !

Merci pour ton aide, ta solution fonctionne parfaitement.

J'avais essayé l'événement "Change" au lieu de "SelectionChange" mais j'ai tout simplement fait planté l'ordinateur

J'imagine que le problème venait tout simplement du fait que je n'avais pas utilisé ta commande "Application.EnableEvents", ce serait trop demander que d'avoir l'explication de la logique que tu as utilisé pour cette ligne ?

Bonjour

application.enableevents permet d'activer ou de désactiver la gestion des événements dans excel.

l'événement change se déclenche chaque fois qu'il y a une modification de cellule, si la gestion des événements est activée.

dans la macro tu modifies une cellule, donc tu déclenches la macro dans laquelle tu modifies une cellule et tu es parti dans un déclenchement en cascade qui fait planter excel voire ta machine. la parade c'est de désactiver la gestion des événements au début de l'exécution de la macro et de la réactiver à la fin.

Décidément, clair, concis et efficace, un grand merci pour tes réponses !

En te souhaitant une agréable journée !

Rechercher des sujets similaires à "mise jour autr fonction derniere modifiee"