Connaitre les chiffres qui sont additionné

Bonjour,

Je voudrais tout d'abord remercier les gens qui vont me lire et ceux qui vont me répondre.

Je voudrais faire la somme de plusieurs cellules mais sans dépasser une valeur.

Je voudrais que cette somme s'approche le plus de ma valeur.

Ensuite je voudrais ressortir quelles cellules ont été aditionné entre elles.

Exemple :

Je veux que ma valeur ne dépasse pas 165 en faisant la somme de certaines cellules mais de facon automatique

8

15

22

37

45

52

60

67

112

75

Ensuite qu'il me ressorte que pour avoir 165 (environ mais pas supérieur) en 3 fois (toujours en 3 fois) j'ai les solutions : 67+60+37 ou 75+52+22+15 ou 112+45+8 .

De plus 165 est en réalité la moyenne des nombres ci dessus fois leurs nombres/ 3

Merci de me tenir au courant si vous savez comment s'y prendre.

Salut Jeremie,

Il me semble que tes explications laissent passablement de questions ouvertes

D'abord où est ton fichier ? En l'absence de celui-ci, j'ai essayé d'en créer un moi-même. Dans la colonne A, tu peux placer autant de chiffres que tu veux. Est-il possible qu'il y ait plusieurs fois le même chiffre ? J'ai considéré que non. A voir si jamais.

Quand tu places des nouveaux chiffres dans la colonne A, la colonne E est actualisée. Est-ce bien correct que le maximum considéré en E5 doit être arrondi à l'unité supérieure ????? Ces calculs pourraient être cachés (en masquant les colonnes D et E par exemple) ou intégrés dans le code VBA. A voir.

Si tout est OK jusque là, tu peux lancer la recherche de résultats (ou on pourrait lancer cette recherche à chaque modification de la colonne A, à voir pour la troisième fois ) : Les résultats correspondant à ton attente - selon ce que j'ai compris - apparaissent dans les colonnes G à J. J'ai limité le nombre de résultats montrés à ceux correspondant au maximum calculé en E5 et jusqu'à 10 % de moins (par exemple entre 165 au maximum et 10 % de moins, soit 149).

Pour l'instant des "doublons" apparaissent (par exemple 8 + 45 + 112 et 8 + 112 + 45). Ca pourra être corrigé par la suite, selon les réponses à recevoir de ta part.

A te relire.

EDIT DU 19 AOÛT à 8 heures 25 : Mon fichier comporte des erreurs de logique Répond déjà aux questions posées et je verrai comment éliminer ces problèmes.

105jeremie-v2.zip (10.75 Ko)

Salut ,

Ci joint mon fichier, je te prie de m'escuser j'avais pas fait attention qu'il ne fallait pas dépassé 200Ko.

J'ai supprimé beaucoup de formules pour pas dépasser 200Ko

Oui, il est possible qu'il y ait plusieurs fois le même chiffre.

Je vais te joindre le fichier en essayant de répondre à tes questions.

Les commantaires sont à partir de la ligne 47.

Merci encore,

Ouf, ça se corse, comme dirait Tino ! Je vais essayer de voir ça ce soir.

Tu travailles apparemment sans arrondi, donc normalement avec des chiffres à 13 décimales après la virgule.

Serait-il possible d'arrondir tes chiffres à 1, 2, 3,4,5 ............. chiffres après la virgule ?

C'est super sympa de ta part!

Oui on peut arrondir à deux chiffres après la virgule!

Si tu as des idées hésite pas de me les transmettre on est toujours plus fort a deux!

Merci

Bonjour

En étroite collaboration avec Yvouille voilà la recherche de nos cogitations

A tester

Salut Jérémie, Salut Banzai,

@ Banzai

Je n'ai quand même pas fait grand chose pour ta solution, si ce n'est t'appeler à l'aide, puisque je trouvais que tu avais déjà présenté des solutions similaires Comme je te l'ai dit hors Forum, j'ai tenté de trouver une solution par formules ; je pense y être arrivé, je me permets alors de placer ma solution également.

@ Jérémie

Selon moi Banzai n'a pas remarqué qu'il pourrait également y avoir des chiffres en X29 et X30. Fait tes essais et fait-lui part de tes remarques si des corrections sont nécessaires.

Bon dimanche à vous tous.

Bonjour,

Merci à vous deux pour vos réponses.

Je les tests dés lundis et vous tiens au courant.

Bon dimanche,

Bonjour à tous!

Alors merci encore pour vos programmes.

J'ai changé quelques petits détails suite à des bugs. (a titre indicatif bien sur )

Premier : si on avait pas de valeur en X10 à x30 , le programme buggait (résolu), j'ai changé dans ses cellules "" par 0.

Deuxieme: s'il n'y avait pas de valeur dans une cellule il mettait une couleur (résolu)

For Each c In Worksheets(ActiveSheet.Name).Range("x10:x30")

If c.Value = 0 Then

c.Interior.ColorIndex = xlNone

End If

Next c

J'ai préféré mettre une macro avec un onglet plutot qu'un bouton sur la feuille.

Cependant j'ai encore un petit souci, je voudrais que ma macro se mette à jour automatiquement.

Ainsi dés le changement d'une cellule la macro se met a jour.

Comment puis je faire?

J'ai fait :

Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "d17:i37" Then

Repartition 'étant le programme

End If

End Sub

Mais rien ne se passe.

Merci pour votre aide.

Et encore un grand merci pour yvouille et banzai !

Bonjour

Jeremie44 a écrit :

If Target.Address = "d17:i37" Then

cela correspond à quoi ?

dans le fichier fourni c'est une zone à cheval sur le tableau et sur des cellules vides !!!!!

Ensuite pour anticiper Worksheet_Change ne réagit qu lors d'une modification (hors formule) d'une cellule

A suivre

En effet pour toi cest d10 à d30 je m'escuse.

Et comme je l'avais dit au début je ne pouvais pas mettre tout mes liens de calculs fautes de place (ko).

Si tu veux les cellules d10 à d30 modifient les cellules x10 à x30.

concernant worksheet_change j'ai remarqué aussi du coup je fait un calculate mais ca ne fonctionne pas non plus!!!

As tu une idée?

Bonjour

A essayer et à adapter à ta plage de cellules

Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Target, Range("D10:D30")) Is Nothing Then
    Repartition               'étant le programme
  End If
End Sub

Bonjour,

Merci pour ton programme mais cela ne veut pas fonctionner.

J'ai remis une partie du programme.

Je voudrais que la répartition se face automatiquement lorsque je change une valeur sur la colonne D.

Or je suis obliger de lancer la macro a chaque fois ( j'ai créer un onglet) pour que les couleurs se mettent à jour

Merci pour ton aide,

Amicalement,

33test-1.zip (13.95 Ko)

Bonjour

Le code que je t'avais donné il faut le mettre dans le code de la page

Clic droit sur le nom de l'onglet ----> Visualiser le code

Et dans cette zone tu y colles le code suivant (adapte la plage contrôlée ("D10:D30") à la bonne zone)

Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Target, Range("D10:D30")) Is Nothing Then
    Repartition               'étant le programme
 End If
End Sub

Ah !!

Je sais jamais quand on met des macro dans la feuille ou dans le module 1?

merci ton programme fonctionne.

Puis je te demander encore un peu d'aide ??

Je voudrais copier les couleurs de plusieurs cellules comment je m'y prends?

J'ai essayé plusieurs méthode dont :

For Each u In Worksheets(ActiveSheet.Name).Range("o17:o37")

For Each v In Worksheets(ActiveSheet.Name).Range("x17:x37")

u.Interior.ColorIndex = v.Interior.ColorIndex

Next v

Next u

Mais ca ne fonctionne pas.

merci encore.....

Amicalement,

Bonjour

Je ne comprends pas ce que tu veux faire

Le mieux joins un fichier ayant la structure réelle de ton vrai fichier

ET dedans tu y notes : ce que tu as et ce que que tu voudrais

Fais plusieurs exemples

A te lire

Problème précédent résolu.

Nouveau problème.:

Je ne sais pas comment fonctionne ton programme "répartition".

Or il faudrait que je passe ce programme sur 40cellules (20 actuellement)

Peux tu m'aider?

Pour moi ta macro "Tri tableau" n'est pas à modifié (si je ne me trompes pas)

J'ai fait cela :

Sub Repartition()

Dim J As Long

Dim Indice As Integer

Dim Nb As Integer

Dim K As Integer

Dim Coul(2) As Byte

Dim Sansformule

Sansformule = ActiveSheet.Name

If Sheets(Sansformule).Range("O39").Value = "Type" Then

'Pour deux pages

Dim Tablo1(40, 1)

Coul(0) = 4

Coul(1) = 8

Coul(2) = 6

Range("X17:X57").Interior.ColorIndex = xlNone

For J = 17 To 57

Tablo1(J - 17, 0) = Range("X" & J)

Tablo1(J - 17, 1) = Format(J - 17, "00")

Next J

Nb = 40

Do While Nb > 2

Tri_Tableau Tablo1

Tablo1(2, 0) = Tablo1(2, 0) + Tablo1(3, 0) 'Erreur à partir d'ici pourquoi

Tablo1(2, 1) = Tablo1(2, 1) & Tablo1(3, 1)

For K = 3 To Nb - 1

Tablo1(K, 0) = Tablo1(K + 1, 0)

Tablo1(K, 1) = Tablo1(K + 1, 1)

Next K

Nb = Nb - 1

Loop

Tri_Tableau Tablo1

For J = 0 To 2

Range("DL" & 17 + J).Interior.ColorIndex = Coul(J)

For K = 1 To Len(Tablo1(J, 1)) Step 2

Range("X" & 17 + Val(Mid(Tablo1(J, 1), K, 2))).Interior.ColorIndex = Coul(J)

Next K

Next J

For Each c In Worksheets(ActiveSheet.Name).Range("x17:x57")

If c.Value = 0 Then

c.Interior.ColorIndex = xlNone

End If

Next c

Merci pour ton aide

Bonjour

Je veux bien t'aider

Mais juste avec une macro qui me semble être la copie de celle qui fonctionne pas facile

Déjà il faut connaître le message d'erreur

Et si possible ( presque obligatoire) joindre le fichier dans lequel l'erreur s'est produite afin de tester

Fais un pas à pas et testes tes valeurs

A suivre

Merci encore a toi!

Suite à ce que tu m'as dit j'ai réglé mon problème.

Tout marche correctement.

Merci......

Rechercher des sujets similaires à "connaitre chiffres qui additionne"