Message en fonction du contenu d'une cellule

Bonjour,

Dans un fichier Excel, je voudrais afficher un message si la valeur max d'un ensemble de cellules est différente de la valeur d'une autre cellule.

L'ensemble des cellules dont on doit trouver la valeur max, résulte de la somme d'une cellule calculée automatiquement et d'une cellule saisie manuellement (voir le fichier joint, cela sera plus simple).

Mon problème est que je voudrais que le message s'affiche, que lorsque la saisie des cellules remplies manuellement est terminée.

Si quelqu'un a une idée.

Merci d'avance pour votre aide.

9exemple.xls (17.00 Ko)

Salut Sergio,

quelque chose comme ça ? En postulant que l'on puisse calculer d'emblée le nombres de lignes à remplir manuellement!

J'imagine, par exemple, que les cellules en colonne D sont remplies directement...

Private Sub Worksheet_Change(ByVal Target As Range)
'
iRow = Range("D" & Rows.Count).End(xlUp).Row
'
If Range("C" & iRow) > 0 Then
    iFlag = 0
    For x = 1 To iRow
        iFlag = iFlag + Cells(5, x)
    Next
    If iFlag <> Cells(7, 23) Then MsgBox "Les valeurs ne sont pas égales!"
End If
'
End Sub

A+

Bonjour curulis57,

Merci pour ta réponse, mais j'ai un petit soucis, lorsque je colle ton code, il ne se passe rien. As-tu une idée, ou bien faut-il que je complète ton code ?

Je ne te cache pas que mes connaissances en VBA sont très limitées.

Merci d'avance pour ton aide.

Salut Sergio,

ça ira mieux ainsi!

A+

Re-bonjour curulis57,

Désolé mais je n'y arrive toujours pas.

Y-a-t'il une autre solution sans passer par une boîte de dialogue ? est-ce que le message ne pourrait pas s'afficher dans une cellule ?

Merci encore pour ton aide.

Salut Sergio,

ça marche très bien ici !

il va falloir que tu m'expliques ton projet en long et en large! Utilise des données bidon mais procure-moi un fichier complet (pas besoin de 30.000 lignes, non plus) avec les tenants et aboutissants.

Je n'ai pas envie de chipoter et de tourner en rond par petites touches dans le brouillard sans comprendre où aller!

  • à quoi ça sert ? Ça ne me regarde pas, diras-tu, mais il me faut un fil conducteur !
  • d'où viennent les données ? Où vont-elles ? Pourquoi ?
  • comment ça se calcule très précisément ? Y a-t-il des exceptions ? Il y en a toujours !
  • emplacement des tableaux à prévoir et leur évolution ?
  • ...

Sans quelque chose de consistant, et avec toute la sympathie dont je suis capable, je laisserai tomber !

A+

re-bonjour curulis57,

Ci-joint l'onglet de mon classeur Excel qui nous intéresse. Ce que je voudrais c'est que le message d'erreur qui est en I390, ne s'affiche que lorsque les cellules de la colonne X auront été saisies, c'est à dire dans le fichier joint, il faudrait que le message n’apparaisse que lorsque la cellule X114 aura été saisie (pour un autre projet cela pourrait être la cellule X180, par exemple et sachant que les cellules de saisie sont toujours du début de la feuille, vers la fin).

Si tu pouvais me dépanner cela m'arrangerait beaucoup.

Merci encore.

12exemple1.zip (58.83 Ko)

Bonjour Sergio,

j'ai presque tout compris mais peux-tu préciser au béotien que je suis quels sont les résultats (cellules) qu'il faut comparer ?

Faut-il rechercher un MAX dans une autre colonne ?

Sois PRECIS et COMPLET, please!

Ce qui est évident pour toi ne l'est pas forcément pour les autres, surtout dans un domaine aussi pointu!

A part ça, je pense que c'est facile à faire!

A+

Bonjour curulis57,

Merci de bien vouloir t'occuper de mon petit problème.

Dans la feuille Excel que je t'ai envoyée, on doit comparer le max de la colonne X à la valeur de la cellule AA396.

Le max de la colonne X est donné par le max de la colonne Y (qui est en Y345) - G391.

Les cellules de la colonne X (X15, X26, X37, X48, ...) sont saisies manuellement.

Mon problème est que le message qui est en I390, s'affiche tout le temps et si la saisie des cellules X15, X26, X37, ... est bonne, il va disparaître.

Ce que je souhaiterais c'est que ce message s'affiche uniquement s'il y a discordance entre le max de la colonne X et la valeur de la cellule AA396, lorsque la saisie de la colonne X est terminée.

La saisie des cellules de la colonne X (X15, X26, X37, ...) varie en fonction de chaque projet, mais on commance toujours par la saisie de la cellule X15.

J'avais essayé quelque chose du style :

=SI(G390="";0;REPT("Attention le circuit le plus défavorisé qui a été choisi est différent du circuit le plus défavorisé qui alimente la colonne montante prise en compte dans le calcul des pertes de charge !";(SOMMEPROD(N(W15:W344<>0))=SOMMEPROD(N(Y15:Y344<>0)))*(MAX(X15:X344)<>AA396)))

Mais je n'y arrive pas.

Si tu as la solution ...

Merci encore

Salut Sergio,

bon, si je me limite à tes explications, stricto sensu, c'est incompréhensible!

En interprétant ton langage de scientifique, dis-moi si j'ai bien compris!

Il faut donc comparer (MAX colonne X) <> (MAX colonne Y - AA396) ---> 1,22238 - (1,53340 - 0,31) = -0,00102 ?

Donc, affichage du message car pas équivalent.

J'ai bien compris? Sinon, on recommence, hein, no souci!

Au passage, faut-il prévoir une vérif en cours d'encodage pour forcer un encodage chronologique?

A+

Bonsoir curulis57,

On compare la valeur qui est dans la cellule G390 à la valeur de la cellule AA396. S'il y a une différence le message doit s'afficher (voir la formule qui est en I390).

Dans la feuille Exemple1, le calcul est juste, c'est juste une question d'arrondi.

Dans mon projet :

1.75228 (Y346) - 0.31102 (G391 avec 5 décimales) = 1.44126 (G390 avec 5 décimales) et je compare cette valeur à AA396 (1.44126)

Mais le message doit s'afficher lorsqu'on a fini de saisir les cellules de la colonne X (cellules en fond jaune sur la feuille Exemple1).

Suivant l'importance de l'affaire, on saisit les cellules X15, X26, X37, et ainsi de suite. Le nombre de cellules saisies dans la colonne X est variable, suivant l'importance du projet.

Pas de contrôle d'encodage.

Merci encore.

Bonjour Sergio,

j'ai finalement compris que je n'avais rien à essayer de comprendre !

Bref, voilà ton fichier : il suffisait de quelques lignes que tu trouveras dans Worksheets_Change()

Pour que tu puisses essayer, j'ai supprimé les deux dernières valeurs dans X (toutes 2 = 1,22238).

Tu encodes et tu testes grandeur nature.

Espérant que tout aille nickel!

Avec plaisir!

Bon travail!

A+

8pertedecharge.xlsm (107.89 Ko)

Bonjour curulis57,

Ça marche nickel.

Merci encore pour ton aide.

Très bonne journée

Rechercher des sujets similaires à "message fonction contenu"