Test IF dans une macro

Bonjour à tous,

Je souhaiterais créer une macro qui me permette de dessiner un camembert avec les trois portions définies sur la feuille Excel en PJ:

  • Consommation du Groupe Froid
  • Consommation du système de chauffe
  • Consommation des appareils annexes

J'aurais besoin de faire un test IF dans ma macro pour remplir les cases L7 et L8:

Exemple du test IF à réaliser pour remplir la case L7:

"SI la phase de la colonne B est 'a', 'b' ou 'c', ALORS faire la somme des cases de la colonne H "Consommation énergétique de la phase (kWh)" correspondantes aux phases 'a', 'b' et 'c' et inscrire la valeur de cette somme dans la case L7".

Je n'arrive pas à écrire ce code...

Je vous remercie beaucoup par avance,

Raphaëlle

Bonsoir,

On ne t'a pas encore dit que :

1) Ton fichier ne contenait pas de macro, ni morceau de macro que tu n'arrives pas à finir, ni brouillon de macro...

2 Qu'il ne contenait pas non plus de valeurs illustrant ton propos et permettant de visualiser le résultat que tu veux obtenir.

3) Qu'une colonne contient plusieurs cellules, qui peuvent contenir des valeurs diverses, et donc, jusqu'à plus ample informé, que la colonne B pourra avoir des a, des b et des c, simultanément. Donc qu'il convient d'être aussi précis et exhaustif que possible pour avoir des réponses susceptibles de répondre exactement à la question.

Et donc je te le dis

Cordialement

Ferrand

Bonjour MFerrand,

Si je n'ai pas écrit de macro, c'est bien parce que je n'arrive pas à la coder. D'où mon message sur ce forum d'ailleurs...

J'ai essayé de simplifier au maximum le fichier excel pour être compréhensible, je n'ai justement pas mis de valeurs pour rester générale, d'où l'utilisation des 'a', 'b', et 'c'.

Bien cordialement,

Raphaëlle

Ferrand,

Je vous remets en PJ le fichier excel certainement plus explicite, car contenant des valeurs réelles.

Aucune macro n'a encore été définie, le but étant justement de savoir s'il est possible de coder ce genre de chose.

Je souhaiterais créer une macro qui me permette par la suite de dessiner un camembert comprenant les portions 'Consommation du Groupe Froid (kWh)', 'Consommation du système de chauffe (kWh)' et 'Consommation des appareils annexes (kWh)' (les valeurs associées étant les cases L7, L8 et L9).

- La valeur correspondant à 'Consommation du Groupe Froid (kWh)' est la valeur de la case H3.

- La valeur correspondant à 'Consommation du système de chauffe (kWh)' est la somme des valeurs de la colonne H associées aux phases 'Phase de chauffe', 'Phase de maintien en température' et 'Phase de refroidissement'. Il s'agit ici de la somme 22+3+58+25, soit 108.

- La valeur correspondant à 'Consommation des appareils annexes (kWh)' est la somme des valeurs de la colonne H associées aux phases 'Utilisation de la pompe 1', 'Utilisation du surpresseur', 'Utilisation de la pompe 2' et 'Utilisation de la pompe 3'. Il s'agit ici de la somme 11+4+9+12, soit 36 .

L'objectif de mon message sur ce forum était avant tout de savoir si cela était codable dans une macro, en sachant que le nombre de colonnes du grand tableau (nombre de phases) n'est pas connu en avance.

En vous remerciant par avance,

Bien cordialement,

Raphaëlle

Bonsoir,

Illustré, cela devient plus clair ! Il ne s'agit donc pas de macro mais d'un calcul à faire par formules.

En L7 : [b]=SOMMEPROD((GAUCHE(B6:B13;5)="Phase")*H6:H13)

[/b]

En L8 : [b]=SOMMEPROD((GAUCHE(B6:B13;11)="Utilisation")*H6:H13)

[/b]

Cordialement,

Ferrand

Bonjour Ferrand,

Je vous remercie, cela marche parfaitement avec la fonction "SOMMEPROD" et je n'ai en effet pas besoin de créer une macro.

En revanche, je n'avais pas mis toutes les phases possibles, et toutes ne commencent pas par "Phase" ou "Utilisation". J'ai regardé sur internet comment je pouvais rentrer ça dans la formule mais je n'ai vu aucun exemple ressemblant à mon problème.

Comment pourrai-je changer la formule pour que la valeur associée à la portion du camembert "Consommation du système de chauffe" corresponde à la somme des valeurs (de la colonne H) associées aux phases:

  • Phase de chauffe
  • Phase de maintien en température
  • Phase de refroidissement
  • Distillation
  • Séchage

En effet, ces phases ne commencent pas toutes par "Phase"...

Je vous ai remis le fichier en PJ.

En vous remerciant par avance,

Cordialement,

Raphaëlle

Bonjour,

Quelques possibilités de formules...

[NB- En utilisant des plages nommées on simplifie un peu l'écriture des formules.]

Bonne journée

Ferrand

Ferrand,

Je vous remercie beaucoup pour le temps consacré à mon problème ! Il est résolu désormais !

Bien cordialement,

Bonne journée,

Raphaëlle

Ferrand,

Juste un dernier petit problème...

J'ai bien nommé la colonne B "Phase" et la colonne H "Conso". Mais lorsque je rentre la formule avec SOMMEPROD, il me met #valeur dans la cellule correspondante...

Bien cordialement,

Raphaëlle

Tu as certainement inclus des cellules vides dans ta référence ?

Ferrand

Bonjour Ferrand,

Merci beaucoup pour votre précédent message.

Les formules marchent parfaitement =). Le problème est que je ne connais pas en avance le nombre de lignes correspondant à la colonne nommée "Phase" dans la première feuille. Et si je nomme toute la colonne B "Phase", il n'applique pas la formule car il considère que des cellules sont vides...

Je ne sais pas s'il existe un moyen de modifier la formule pour que cela marche quelque soit le nombre de lignes de la colonne nommée "Phase".

En vous remerciant par avance,

Bien cordialement,

Raphaëlle

La formule en SOMME(SI(.... acceptera les colonnes entières en B et H.

Mais ce n'est peut-être pas la meilleure solution. Quel est le nombre maximum de lignes qu'on peut escompter pour B et H ?

On pourra alors définir un champ dynamique sur une plage limitée...

Bonne soirée

Ferrand

Ferrand,

Il est impossible de connaitre le nombre de lignes du tableau par avance. Nous pouvons néanmoins déterminer un nombre de lignes maximum: 50 par exemple. Mais nous n'aurons jamais le nombre de lignes exact...

En vous remerciant encore,

Bien cordialement,

Raphaëlle

Aucune importance. Il suffit de réserver la zone et d'assurer qu'en dehors des données appartenant au tableau, il n'y aura rien d'autre dans les colonnes B et H à partir de la ligne 5 puisque les 4 premières ne sont pas assurées de ce point de vue. Un champ dynamique est un champ nommé qui s'adapte à la taille exacte des données qui y figurent. C'est la solution pour ne pas avoir à retoucher une formule en permanence.

Exemple :

Réf. pour le nom Phase : =DECALER(Feuil1!$B$6;;;NBVAL(Feuil1!$B$6:$B$300))

Réf. pour le nom Conso : =DECALER(Feuil1!$H$6;;;NBVAL(Feuil1!$H$6:$H$300))

Bonne soirée

Bonjour Ferrand,

J'ai bien défini les références pour les noms Phase et Conso comme vous me l'avez expliqué dans votre précédent mail.

J'ai utilisé la fonction SOMMEPROD pour déterminer mes valeurs.

Le vrai fichier Excel est en PJ. Les lignes du tableau de la feuille "reaction" sont définies grâce à la macro (et non rentrées directement à la main).

Mais malheureusement, la formule SOMMEPROD ne fonctionne pas...(#VALEUR....)

Je veux y arriver enfin...!!!!

Bien cordialement,

Raphaëlle

Problème de liaisons entre classeurs. Une pointe vers un classeur qui n'existe plus et est incassable.

Je n'ai pas le temps de refaire un classeur sans liaison. Si tu peux éliminer les liaisons, ça marchera, sinon refaire un classeur.

Cordialement

Ferrand

Rechercher des sujets similaires à "test macro"