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
@+
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 SubAu 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 SubOn récupère le numéro de ligne sur laquelle la saisie a été fait
Lig = Target.RowEnsuite, si un valeur est effacée, alors on les efface toutes
If Target.Value = "" Then Range("A" & Lig).Resize(1, 3).ClearContentsEnsuite, on désactive les évènements, puisse que l'on va effectuer des modification (sinon boucle infinie et plantage)
Application.EnableEvents = FalseEnsuite, 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
@+