Ajouter/Sauvegarder des valeurs issues d'un calcul précédent. [Fermé]

Signaler
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019
-
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019
-
Bonjour,

Je suis à la recherche d'une formule qui me permettrait de résoudre le problème que je présente dans le fichier excel que je joins à ce message.
J'ai essayé quelques formules mais sans succès.
Merci d'avance,
Cordialement,

https://www.cjoint.com/c/HLBj2lqEVYX

20 réponses

Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Bonjour,

Oui mais ce que tu demandes ne peut se faire que par VBA si tu as quelques notions !
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Bonjour,

Oui en cherchant sur les formus, j'ai cru comprendre qu'il faille passer par VBA. Maintenant, je ne suis pas encore experte dans ce domaine, et j'avoue avoir quelques difficultés à utiliser VBA.
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

alors clic droit sur l'onglet de ta feuille Feuil1/Visualiser le code et colle ce code, lorsque tu sélectionneras ta plage B4:B8 et Supp la plage s'éffacera et E9 s'additionnera

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nouveau As Single
If Not Intersect(Target, Range("B4:B8")) Is Nothing Then
If Application.Sum([B4:B8]) = 0 Then
With Application
.EnableEvents = False
.Undo
[E9] = [E9] + [B9]
[B4:B8] = ""
.EnableEvents = True
End With
End If
End If
End Sub

Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Merci beaucoup ! ça fonctionne !
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

si tu as besoin d'explication sur le code fait signe, en attendant je passe le statut de la discussion en résolu
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

D'accord.
Merci pour ton aide.
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

j'ai laissé traîner cette ligne dans le code qui ne sert à rien, supprime la
Dim Nouveau As Single
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

ok
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

La formule fonctionne parfaitement. Toutefois, j'aimerais apporter quelques modifications.
En effet, avec cette formule, le résultat obtenu en B9 s'ajoute à la valeur de la cellule E9 qui correspond au total précédent. Cet ajout est réalisé lorsque je supprime le contenu de la plage [B2:B8].
Désormais, je souhaiterais que l'ajout soit réalisé lorsque je supprime le contenu de la plage [A2:A8] (les valeurs qui s'ajoutent sont toujours celles de la plage [B2:B8]).

Cordialement,

https://www.cjoint.com/c/HLBnEnAVg1X
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

La formule fonctionne parfaitement. Toutefois, j'aimerais apporter quelques modifications.
En effet, avec cette formule, le résultat obtenu en B9 s'ajoute à la valeur de la cellule E9 qui correspond au total précédent. Cet ajout est réalisé lorsque je supprime le contenu de la plage [B2:B8].
Désormais, je souhaiterais que l'ajout soit réalisé lorsque je supprime le contenu de la plage [A2:A8] (les valeurs qui s'ajoutent sont toujours celles de la plage [B2:B8]).

Cordialement,

https://www.cjoint.com/c/HLBnEnAVg1X
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

voila je suis de retour
remplace l'ancien code par celui ci

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:A8")) Is Nothing Then
If Application.WorksheetFunction.CountA([A2:A8]) = 0 Then
With Application
.EnableEvents = False
.Undo
[E9] = [E9] + [B9]
[A2:B8] = ""
.EnableEvents = True
End With
End If
End If
End Sub


Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Re,

Je viens d'ajouter ta formule dans mon nouveau tableau. Je pense que les formules que j'ai rentrées dans les cellules, au préalable, viennent affecter cette dernière car le résultat que je trouve en C13 ne correspond pas à la somme de la plage [D3:D7] et de la précédente somme en C13.

https://www.cjoint.com/c/HLBrGcdj8pX

Merci d'avance,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,
Ton tableau n'a rien à voir avec la demande initiale et tes formules ne sont pas bonnes et tu as des références circulaires colonne D, c'est à dire que tu te sert de résultat dans le même résultat.

Colonne B tu saisis un n° qui te sert de diviseur en colonne C, Bizarre!

et Colonne F avec cette formule qui ne veut rien dire que veux tu faire
MAX(2;C3*(D3+C$15)*E3)

Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Je m'excuse pour ces imprécisions. Voici le tableau original que j'ai construis. C'est un tableau qui pourrait me servir pour une bonne gestion financière aux jeux simples pour les courses de chevaux. J'ai sûrement des formules un peu "bizarres" mais j'ai essayé de m'en sortir toute seule. En voyant les intitulés de chaque colonne, tu comprendras peut être mieux ce que je désire faire.

voici ce que je souhaiterais réaliser :
- Dans la cellule C13, je souhaiterais avoir la somme de la plage [F3:F7] qui s'ajoute à chaque nouvelle partie (sujet de mon premier message). Comme tu peux le voir, le tableau se remplit à chaque fois qu'on indique les côtes. A chaque nouvelle partie, on les efface et on en rajoute de nouvelles. Idem pour les gains. Je souhaite obtenir en C14, la somme de la plage [G3:G7] qui se cumule au fur et à mesure des nouvelles parties.

J'espère être assez claires et précises dans mes explications.
Merci de ta compréhension,

https://www.cjoint.com/c/HLBtbRXWjNX
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Bonjour,

cellule C13 tu as une formule =F8 qui ne pose pas de problème et que l'on remplace par le code VBA, mais en cellule C14 tu as cette formule =SI(B3="";0;I3*F3) qui sera effacée par le code VBA, et dans tes dernières explications post 16 en C14, la somme de la plage [G3:G7] qui se cumule au fur et à mesure des nouvelles parties ce qui est contradictoire avec la formule.
à contrôler, en attendant remplace le code par celui ci et on en reparle

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A3:B7")) Is Nothing Then
If Application.WorksheetFunction.CountA([A3:B7]) = 0 Then
With Application
.EnableEvents = False
.Undo
[C13] = [C13] + [F8]
[C14] = [C14] + [G8]
[A3:B7] = ""
.EnableEvents = True
End With
End If
End If
End Sub

Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Merci pour tes explications.
J'essaye ça !
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Bonjour,

J'ai inséré le code VBA. Ça fonctionne.
Merci pour ton aide.
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

si tes attentes sont satisfaites, passe le statut de la discussion en résolu
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

J'ai encore une question. Je souhaiterais faire un "bouton" qui efface automatiquement les valeurs des plages [B3 : B7] et [I3 : I7] quand j'appuie dessus. J'ai essayé de faire une macro mais lorsque je l'affecte au bouton, le code VBA ne semble plus fonctionner car les sommes présentes en F8 et G8 ne s'ajoutent pas dans les cellules C13 et C14.
Merci d'avance pour ton aide,
Cordialement,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

je pense que c'est une bonne idée et j'y ai pensé, un bouton qui active le code que l'on vient de faire, efface les données en B, I et peut être en A non !

et es ce qu'il ne serait pas sage de confirmer l'action avec un mot de passe avant de tout effacer et le cumul.

Je serais de retour dans la soirée
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Tu as raison. Le bouton doit pouvoir effacer les colonnes A, B et I (les données qui sont rentrées manuellement).
Par contre, je ne pense pas qu'il soit nécessaire d'ajouter un mot de passe.
Bien cordialement,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

Tu commences par effacer le code dans les propriétés Private Sub Worksheet_Change
de ta feuille
Ensuite sur ta feuille de calcul tu dessines un bouton ActiveX CommandButton1/double clic pour accéder au VBA et tu colles ce code pour avoir ce genre de résultat


Private Sub CommandButton1_Click()
If Application.WorksheetFunction.CountA([A3:B7]) = 10 Then
[C13] = [C13] + [F8]
[C14] = [C14] + [G8]
Union([A3:B7], [I3:I7]) = ""
End If
End Sub

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Re,

J'ai essayé d'appliquer tes consignes mais ça ne fonctionne pas. Pourtant, j'ai effacé le code VBA en cliquant sur "visualiser le code". J'ai effacé le code, crée un bouton activex, double clic sur celui-ci pour coller le code que tu proposes dans le message précédent.

Peut être que je m'y prends mal ...

Voici le tableau avec le bouton que j'ai crée et le code que j'ai collé.

https://www.cjoint.com/c/HLCugHJ21XX

Cordialement,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

Regarde en G8 tu as cette formule =SI(B8="";"";(F8*B8))
alors que tu devrais avoir =SOMME(G3:G7)

j'ai ajouté une boite de dialogue à ton code, remplace le par celui ci

Private Sub CommandButton1_Click()
If Application.WorksheetFunction.CountA([A3:B7]) = 10 Then
[C13] = [C13] + [F8]
[C14] = [C14] + [G8]
Union([A3:B7], [I3:I7]) = ""
Else
MsgBox "des cellules entre A3 & B7 ne sont pas renseignées.", , "Procédure abandonnée !"
End If
End Sub
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Bonjour,

Le code fonctionne ! Cependant, il fonctionne quand toutes les cases des plages [A3:A7] et [B3:B7] sont renseignées.
Or, une partie ne renseigne pas forcément toutes les cases mais peut aller de 1 à 5 cases.

Cordialement,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

je te complète le code dans la soirée
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

ok. Merci
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

voila regarde comme cela
Private Sub CommandButton1_Click()
If Application.WorksheetFunction.CountA([A3:B7]) > 0 Then
If MsgBox("Etes-vous certain de vouloir archiver les données avant de les supprimer", vbYesNo, "Demande de confirmation") = vbYes Then
[C13] = [C13] + [F8]
[C14] = [C14] + [G8]
Union([A3:B7], [I3:I7]) = ""
End If
Else
MsgBox "Aucune valeur a archiver n'a été touvée.", , "Procédure abandonnée !"
End If

End Sub
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Re,

Tout fonctionne correctement.
Je te remercie chaleureusement pour ton aide !!
Bien cordialement,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

Ne trouves tu pas plus sympathique avec les boites de dialogues !

comme tes attentes sont satisfaites, je passe le statut de la discussion en résolu.
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Bonjour,

Oui l'idée des messages est très bien.
Par contre, après plusieurs utilisations, je me suis aperçue d'un problème concernant la cellule C14. Contrairement à la cellule C13 où le cumul de la mise se fait correctement, en C14, le système affiche des valeurs erronées et apparemment aléatoires.

Je reviens donc vers toi pour savoir si tu as une idée pour résoudre ce problème.
Je t'envoie le nouveau tableau.
https://www.cjoint.com/c/HLEqr4qtIBX

Merci d'avance,
Bien cordialement,
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

Non tout fonctionne parfaitement à condition que colonne colonne I tu saisisses des valeurs et C14 additionne correctement les valeurs de J8
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Re,

Je joins à ce message, un exemple où l'on voit que la cellule C14 n'a pas le bon cumul. Le problème est juste au niveau de la cellule C14. C13 fonctionne parfaitement.
Bien cordialement,

https://www.cjoint.com/c/HLEtLRNfIuX
Messages postés
17139
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 juillet 2020
4 129
Re,

Ah oui j'ai vu, mais cela ne vient pas du code mais de tes formules colonne F
=SI(C3="";"";MAX(2;C3*(D3+C$15)*E3))
ou MAX ne s'utilise pas comme cela, pour tester place une apostrophe devant cette ligne du code pour la neutraliser
'Union([A3:B7], [I3:I7]) = ""

active le code et tu verras que le 2 devient 3 ce qui donne bien 27 colonne J

déjà commence par contrôler cette formule colonne F

après on peut remédier au problème en inversant deux lignes du code comme cela
Private Sub CommandButton1_Click()
If Application.WorksheetFunction.CountA([A3:B7]) > 0 Then
If MsgBox("Etes-vous certain de vouloir archiver les données avant de les supprimer", vbYesNo, "Demande de confirmation") = vbYes Then
[C14] = [C14] + [J8]
[C13] = [C13] + [F8]
Union([A3:B7], [I3:I7]) = ""
End If
Else
MsgBox "Aucune valeur a archiver n'a été touvée.", , "Procédure abandonnée !"
End If
End Sub
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Bonjour,

La nouvelle formule fonctionne !!
Merci pour ton aide !
Messages postés
24
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
6 octobre 2019

Bonjour,

Je suis toujours sur mon tableau et j'essaye de l'améliorer. Cependant, je n'arrive pas à exécuter une action.
Ci-joint, le tableau avec les explications.
Si tu as une idée ....
merci d'avance,
https://www.cjoint.com/c/IJfqHzLFgiX