Formule de mise a jour automatique de calcul

Bonjour à tous,

Je dois créer un tableau dans lequel j’ai 2 cellules qui doivent se mettre à jour automatiquement en fonction de la valeur de l’une d’elles.

Je m’explique :

J’ai un hôtel qui sera composé de 48 chambres avec 2 types de chambres différents : les Suites et les Suites Junior

J’ai besoin de créer un tableau qui va me permettre de calculer les coûts en fonction du nombre de Suites ou de Suites Jr.

Sur ma ligne des Suites si j’en ai 12 il faut que ma ligne des Suites Jr se mette à jour automatiquement avec 36 ou si je dois avoir 20 Suites Jr, la ligne des Suites doit calculer automatiquement 28.

Suite 12 28

Suite Jr + 36 20

La fonction de calcul doit être valable sur les 2 lignes en même temps et faire en sorte que la capacité de 48 ne soit pas dépassée.

Auriez vous une idée de la formule à créer ? J'espère que mon explication est assez claire ...

En vous remerciant pour l'aide que vous pourrez m'apporter.

Cordialement

Sophie

Bonjour !

Désolé d'avance, je suis accro aux macro !

un petit fichier test pour voir si ça colle à vos attentes.

Bonne fin de semaie

194test-hotel.xlsm (14.04 Ko)

Sophie de Antibes,

peux-tu nous mettre un bout de fichier excel, cela permettrait d'éclaircir ta demande.

Bonsoir Guitouille,

Merci beaucoup, c'est exactement ce dont j'ai besoin !

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, cela semble tellement simple que c'en est presque gênant pour moi mais en même temps les forums sont là pour cela non ?

Si je prends le fichier et que je le colle dans le mien, forcément les valeurs ne suivent pas.

Bonsoir Steelson,

Effectivement, j'aurais du mettre un bout de fichier excel, je n'ai pas tous les bons réflexes ...

merci à tous pour votre aide précieuse.

Bonne soirée

Sophie


évidement avec la feuille de calcul, ça sera mieux ...

merci pour votre patience

Sophie

On peut le faire avec un curseur !

Mais je vote aussi pour la solution Guitouille

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

Bonjour à tous,

Désolée pour le retard de ma réponse ... je vous dis un grand merci pour les explications et pour le temps que vous avez pris pour m'aider !

Excel est un outil formidable lorsque l'on sait s'en servir.

Je vous souhaite une belle journée,

Sophie

Rechercher des sujets similaires à "formule mise jour automatique calcul"