Trouver le nombre x dont on connait la somme 1 à x

Bonjour,

Voilà,

Je connais un nombre N qui correspond à la somme des nombres de 1 à x.

Dans une cellule a1, ce nombre est indiqué.

Je souhaiterais que la cellule b1 me donne le nombre x.

Autrement dit, comment faire pour qu'excel réponde à l'équation:

2*cellule a1 = b1(b1+1) ?

Bonjour et bienvenue

En utilisant OUTILS ==> Valeur cible

Pour une valeur de 5 en A1 (donc A2 = A1*2 ==> 10)

En B3 la formule =B1*(B1+1)

capture

La valeur de B1 est modifiée

capture2

Amicalement

Nad

Ok super ça marche après quelques tâtonnements.

Maintenant, le truc c'est que je dois faire cette opération une petite centaine de fois.

J'ai chaque fois une valeur donnée N (la somme de 1 à X) en g34.

En h34 =g34*2

en I34 =j34*(j34+1)

En h34, j'ai donc la "valeur cible", la cellule à définir est en j34, et j'aimerais que la valeur à atteindre soit fixée à h34.

Comment faire pour ne pas chaque fois devoir passer par le petit utilitaire de valeur cible?

Re

Je ne comprends pas trop la valeur de G34 : " La somme de 1 à X"

Est-ce qu'il y a une formule en G34 ?

Dans le fichier joint, tu as 2 possibilités (Macros) :

1 - Si la valeur de G34 est entrée manuellement, la macro se déclenche seule (tu peux supprimer le Module1 et le bouton CALCULER)

2 - Si tu as une formule en G34, clique sur le bouton CALCULER (tu peux supprimer le code dans Feuille1)

18titigrominet.zip (14.04 Ko)

Nad

C'est une valeur.

Merci, ça m'a aidé à comprendre.

Maintenant ma dernière question sera: dans le dernier tableau j'ai une série de lignes (qui comprennent toujours le même schéma, à savoir

en g (de 34 à 105), une valeur N.

En H (de 34 à 105), la valeur N*2, en I, la formule (j[de cette ligne]*([j de cette ligne]+1)) et en J[de cette ligne] le résultat cible.

)

Comment adapter la macro automatique à toutes ces lignes à la fois?

Re

Le code modifié :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G34:G105")) Is Nothing Then
lg = ActiveCell.Row
Range("I" & lg).GoalSeek Goal:=Range("H" & lg), ChangingCell:=Range("J" & lg)
End If
End Sub

Amicalement

Nad

Est-ce que je mets ça dans une macro tel quel?

Je l'ai fait mais il ne se passe rien. Je cherche à l'exécuter dans le menu des macros, mais cette macro n'apparaît pas (bien qu'elle soit dans visual basic)...

J'suis vraiment pas doué avec ces macros

Re

Elle est à placer dans la feuille concernée (click droit sur le nom de la feuille ==> Visualiser le code)

Elle s'exécute dès que tu entres une valeur dans la plage G34:G105

13titigrominet.zip (15.15 Ko)

Nad

Nad, merci bien.

J'ai comparé le premier fichier que tu m'as envoyé avec le second.

Dans le premier, quand je remplace la cellule G34 par un nombre quelconque, tout se met à jour automatiquement. C'est donc exactement ça que je veux comme tu l'avais bien compris.

Dans le second (celui avec la plage entière), c'est assez étrange.

Par exemple, je remplis G40 (puisque tu avais déjà rempli G34 à G39 [€t pourtant les lignes 37 à 39 n'ont pas leur résultat calculé automatiquement?]) et suivants avec les valeurs suivantes (G40:G43) (pour l'essai uniquement) : 10, 20, 500, 5000.

Rien ne s'affiche.

Par contre, si je remplis dans l'ordre G43:G40... quand je mets en G40 la valeur 10, c'est la formule de la ligne 39 qui s'active...

Si, les cellules G40 à 43 étant remplie comme précédemment indiqué, je reremplis la case G42 avec 500 (il y a déjà 500), c'est la ligne 41 qui se met à jour.

J'ai essayé de regarder à partir de ta formule sur le fichier où ça fonctionne parfaitement (le premier fichier avec une seule ligne) pour l'adapter mais j'arrive à rien, malgré que excel a une aide intéressante sur des mots aussi incompréhensibles que "range", "intersect", "not"...

Oké c'est bon.

j'ai trouvé un moyen de faire:

Dans le code de la page j'ai mis:

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 7 Then
        If Target.Row > 2 And Target.Row < 111 Then Call TradeScore

    End If
    End Sub

Dans le module

Sub TradeScore()
    Dim lg As Integer
    lg = 1
    Application.ScreenUpdating = False 'This hides the visual process and speeds up
                                        'the execution

    Do
        lg = lg + 1
        If lg = 111 Then Exit Do

    Range("H" & lg).GoalSeek Goal:=Range("I" & lg), ChangingCell:=Range("J" & lg)
    Loop
    Application.ScreenUpdating = True

End Sub

Je me suis basé sur un post en anglais. Il semble que ça fonctionne dès que je change quelque chose en G, ce qui était le case (et pour ceux qui se demandent, oui, j'ai modifié l'ordre des champs entretemps).

Bonjour

Nouveau fichier corrigé.

J'ai ajouté le fait que les formules s'inscrivent si la cellule de la colonne G est remplie.

Amicalement

Nad

Rechercher des sujets similaires à "trouver nombre connait somme"