Hello again !
Puis je demander quelques infos sur comment vous avez fait pour résoudre cela aussi rapidement ? j'aimerais pouvoir le reproduire par la suite tant qu'à y être
Si je ne dis pas de bêtise, on veux que la somme de ces deux cellules rouges soit égale à 48 à chaque fois que l'on change une des deux valeurs.
Pour commencer on va repérer ces cellules, deux moyens de faire ici, soit on leur donne un nom, mais on va retenir leurs numéros de ligne et de colonne ^^
On peut commencer a taper du bon code ! => ATL + F11
On est maintenant dans le menu VBA
On veut exécuter le code quand il y a un changement de valeur dans ces cellules, il faut choisir le bon événement
=> on clic sur feuille1 => on change general par worksheet => et on prend l’événement Change.
Il ne reste plus qu'à taper ce que l'on veut faire
Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Target.Value) = True Then
If Target.Row = 3 And Target.Column = 7 And Target.Value <= 48 Then
Cells(4, 7).Value = 48 - Target.Value
ElseIf Target.Row = 4 And Target.Column = 7 And Target.Value <= 48 Then
Cells(3, 7).Value = 48 - Target.Value
ElseIf Target.Column = 7 And (Target.Row = 3 Or Target.Row = 4) And Target.Value > 48 Then
MsgBox ("Capacité dépassée !!!")
End If
Else
MsgBox ("Format !")
Target.Select
End If
End Sub
Explications :
Quand la valeur d'une cellule change, excel exécutera ce code, on va donc le restreindre avec des If
If IsNumeric(Target.Value) = True Then
=> Si la nouvelle valeur est un nombre on continu sinon => petit message ("Format!")
( permet de ne pas faire planter la macro si l'on tape une lettre ou un mot, pour être rigoureux on aurait même du vérifier si c'est un entier, mais un nombre à virgule ne planterait pas la macro à première vue ^^)
On vérifie ensuite si il s'agit d'une de nos deux cellules qui a changé
If Target.Row = 3 And Target.Column = 7 And Target.Value <= 48 Then
=> Si il s'agit de la cellule à la ligne 3 et à la colonne 7 ET que la nouvelle valeur ne dépasse pas 48 alors ...
Cells(4, 7).Value = 48 - Target.Value
On calcule la deuxième cellule !
On à le même type de code pour le cas ou on changerais la deuxième cellule
ElseIf Target.Row = 4 And Target.Column = 7 And Target.Value <= 48 Then
Cells(3, 7).Value = 48 - Target.Value
Il ne reste plus que le dernier cas, si l'on dépasse la capacité de 48
ElseIf Target.Column = 7 And (Target.Row = 3 Or Target.Row = 4) And Target.Value > 48 Then
MsgBox ("Capacité dépassée !!!")
End If
=> On regarde si la valeur qui change est à la 7eme colonne et à la 3eme OU 4eme ligne et si la valeur est supérieure à 48 petit message "Capacité dépassée !!!"
En espérant que ce soit clair