Menu

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

Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
- - Dernière réponse : sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
- 31 déc. 2018 à 14:01
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
Afficher la suite 

Votre réponse

19 réponses

Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
Bonjour,

Oui mais ce que tu demandes ne peut se faire que par VBA si tu as quelques notions !
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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.
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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

sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
Merci beaucoup ! ça fonctionne !
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
Re,

si tu as besoin d'explication sur le code fait signe, en attendant je passe le statut de la discussion en résolu
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
D'accord.
Merci pour ton aide.
Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453 -
Re,

j'ai laissé traîner cette ligne dans le code qui ne sert à rien, supprime la
Dim Nouveau As Single
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
ok
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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
Commenter la réponse de Mike-31
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
0
Merci
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
Commenter la réponse de sophie60400
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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


Commenter la réponse de Mike-31
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
0
Merci
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,
Commenter la réponse de sophie60400
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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)

Commenter la réponse de Mike-31
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
0
Merci
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
Commenter la réponse de sophie60400
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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

sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
Merci pour tes explications.
J'essaye ça !
Commenter la réponse de Mike-31
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
0
Merci
Bonjour,

J'ai inséré le code VBA. Ça fonctionne.
Merci pour ton aide.
Commenter la réponse de sophie60400
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
Re,

si tes attentes sont satisfaites, passe le statut de la discussion en résolu
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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,
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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,
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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...
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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,
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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,
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
Re,

je te complète le code dans la soirée
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
ok. Merci
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
Re,

Tout fonctionne correctement.
Je te remercie chaleureusement pour ton aide !!
Bien cordialement,
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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.
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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,
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
Re,

Non tout fonctionne parfaitement à condition que colonne colonne I tu saisisses des valeurs et C14 additionne correctement les valeurs de J8
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
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
Commenter la réponse de Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3453
0
Merci
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
sophie60400
Messages postés
20
Date d'inscription
jeudi 27 décembre 2018
Statut
Membre
Dernière intervention
31 décembre 2018
-
Bonjour,

La nouvelle formule fonctionne !!
Merci pour ton aide !
Commenter la réponse de Mike-31