3 colonnes interdépendantes

Bonjour,

Je souhaiterai avoir dans la colonne A le taux horaires, colone B le salaire mensuel, colonne C le salaire annuel et qu'en remplissant une des 3 cases, peu importe laquelle, les 2 autres se remplissent.

Je vous remercie par avance de votre aide.

Bonsoir Bonnin et

Merci de remplir ta signature pour que l'on puisse connaitre ta version Excel
et une petite présentation ICI serait la bienvenue

Avec un petit code VBA dans Feuil1

14bonnin-exemple.xlsm (14.87 Ko)

@+

Bonjour,

Merci beaucoup BrunoM45. Je ne dois pas être assez calée en Excel pour être sur ce forum. J'ai bien suivi une petite formation sur les macros il y a quelque temps mais ne les ayant pas utilisées de suite, j'ai tout oublié. Je vois bien le résultat sur le fichier Excel mais je ne sais toujours pas comment arriver à cela par moi-même .

Si vous pouvez m'expliquer là tant mieux, mais si je dois plutôt m'atteler à lire les cours VBA, dites le moi, pas de soucis .

(pour l'instant, je n'arrive même pas à trouver où modifier mon nom sur le forum... pour vous situer mon niveau en informatique )

Bonsoir,

Bon quelques explication alors, même si ce n'est pas mon habitude

Comme tu veux pouvoir modifie n'importe quelle des colonnes, il faut procéder avec VBA

Dans VBAProject (ALT+F11) on va mettre du code dans "Feuil1"
Et on va utiliser l'évènement "Change" qui dit à Excel qu'à chaque changement, il doit exécuter le code

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Lig As Long
  If Target.Count > 1 Then Exit Sub
  ' Récupérer le numéro de ligne
  Lig = Target.Row
  ' si on vide une cellule, on les vide toutes
  If Target.Value = "" Then Range("A" & Lig).Resize(1, 3).ClearContents
  ' Désactiver les évènements
  Application.EnableEvents = False
  ' Selon la colonne saisir
  Select Case Target.Column
    Case 1  ' Taux horaire
      ' Inscrire les éléments
      Range("B" & Lig).Value = Range("A" & Lig).Value * 151.67
      Range("C" & Lig).Value = Range("B" & Lig).Value * 12
    Case 2  ' Salaire mensuel
      Range("A" & Lig).Value = Range("B" & Lig).Value / 151.67
      Range("C" & Lig).Value = Range("B" & Lig).Value * 12
    Case 3  ' Salaire annuel
      Range("B" & Lig).Value = Range("C" & Lig).Value / 12
      Range("A" & Lig).Value = Range("B" & Lig).Value / 151.67
  End Select
  ' Réactiver les évènements
  Application.EnableEvents = True
End Sub

Au début on teste s'il n'y a bien qu'une cellule de modifiée, si on sort de la procédure (pour éviter les erreurs)

If Target.Count > 1 Then Exit Sub

On récupère le numéro de ligne sur laquelle la saisie a été fait

Lig = Target.Row

Ensuite, si un valeur est effacée, alors on les efface toutes

If Target.Value = "" Then Range("A" & Lig).Resize(1, 3).ClearContents

Ensuite, on désactive les évènements, puisse que l'on va effectuer des modification (sinon boucle infinie et plantage)

Application.EnableEvents = False

Ensuite, selon la colonne qui est modifiée, on effectue le changement dans les 2 autres

Select Case Target.Column

"Select case", indique à Excel sélectionne la "case" selon le numéro de colonne "Target.Column"

Voilà, j'espère que ce sera plus clair pour toi

Bonjour,

Oui c'est beaucoup mieux mais je me rends compte que j'ai besoin de prendre du temps pour lire les cours VBA, parce que la ça reste un peu du chinois pour moi. Moi qui espérais pouvoir m'en sortir avec une fonction Si... lol

Merci beaucoup.

Re,

Tu peux, si tu ajoutes 3 colonnes supplémentaires

Les 3 premières seront pour la saisie, les 3 autres pour le calcul

@+

Rechercher des sujets similaires à "colonnes interdependantes"