Calcul d'une liste déroulant en évitant référence circulaire

Bonjour,

Suite à un projet pour les cours, je me retrouve confronté à un problème.

En effet, j'aimerais appliquer un calcul à toutes les valeurs d'une liste déroulante (heure de régénération) en même temps et en évitant le bouclage. Je pourrais ainsi obtenir un graphique et obtenir le rendement maximum de mon installation. Pour le moment je suis obligé de dérouler toutes les valeurs de la liste une par une pour obtenir le bon résultat. Voulant sauvegarder les valeurs cela m'entraîne le bouclage. Cela me permettrait considérablement de gagner du temps.

Je ne sais pas trop comment mieux l'expliquer je pense qu'à l'aide de la pièce jointe vous comprendrez mieux mon problème.

Autre problème dû au forum, mon fichier comporte les besoins d'un logement par pas de 5min sur une année ce qui me fait un fichier de 15 Mo que je ne sais pas comment réduire. Pourriez-vous m'indiquer un moyen de vous envoyer la pièce jointe s'il vous plaît.

Je vous envoie pour le moment un imprim' écran de la situation avec en jaune ce que j'aimerais effectuer

Cordialement,

Yann K.

imprim ecran du probleme

Bonjour,

1) Tu vas dans http://cjoint.com/

2) Tu cliques sur [Parcourir] pour sélectionner ton fichier

3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]

4) Au bout de quelques secondes s'affiche le lien en bleu souligné ; tu le sélectionnes et tu fais "Copier"

5) Tu reviens dans la discussion, et, dans ton message de réponse, tu fais : "Coller".

Cordialement.

Merci de votre réponse rapide, voilà le lien cjoint.

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

Cordialement,

Yann K.

Bonsoir,

Ci-joint une proposition à tester, en VBA.

Principe :

  • alimentation automatique successive de toutes les valeurs de 0 à 23 (en C6)
  • les 3 formules font le travail (B28, B29, B30)
  • récupération des résultats fournis par les formules et copie dans le tableau final (colonnes G, H, I).

Bonne soirée

Bouben


EDIT

En pièce jointe, le fichier (vidé du 2ème onglet pour une question de volumétrie)

Bonsoir,

Je ne maîtrise pas le VBA, auriez vous une solution que avec Excel. Sinon comment dois je proceder en VBA ?

Cordialement,

Yann K.

Bonsoir,

De mon côté, pas de solution sans VBA.

Pour mettre la macro dans le fichier :

ALT+F11 et copier le code suivant :

Public Sub MAJ()

    Dim iDerLig As Integer
    Dim iLig As Integer

    iDerLig = Range("F" & Rows.Count).End(xlUp).Row

    For iLig = 2 To iDerLig
        Range("Horaire").Value = Range("F" & iLig).Value
        Range("G" & iLig).Value = Range("Tx_Elec").Value
        Range("H" & iLig).Value = Range("Tx_Therm").Value
        Range("I" & iLig).Value = Range("Tx_Total").Value
        DoEvents
    Next iLig

End Sub

Cela utilise 4 cellules nommées (CTRL+F3 pour créer les noms)

copieecran

Bouben

Bonjour,

pas trop approfondi ton tableau pour le comprendre mais si c'est un calcul itératif voulu et normal tu peux le cocher dans les options Formules avec nombre max d'itération à 1 par exemple.

A toi de voir si les résultats suivent en fonction de l'action réalisée.

Mais s'il te faut automatiquement toutes les valeurs de ta liste pas guère de salut en dehors de vba comme te l'a montré bouben.

eric

Bonsoir,

J'ai effectué par un système de copier/coller votre méthode. Or lorsque j'affecte un autre fichier de besoin (voir lien cjoint), l'ensemble des taux de consommation gardent les valeurs du précédent fichier et ne changent pas automatiquement.

Aurez-je oublié d'effectuer une manipulation ? Toujours en jaune les points à modifier.

Lien cjoint : https://www.cjoint.com/c/FJxwqWRhG2u

Cordialement,

Yann K.

Je sens le fromage ?

Bonjour,

Je n'avais pas vu votre message pardonnez moi, dans l'idéal oui je souhaiterai obtenir toutes les valeurs en même temps afin que le graphique heure de régénération/taux dautoconsommation se trace plus facilement. Si vous avez une autre idée ou si vous comprenez le VBA qu'il faudrait appliquer je vous en serai reconnaissant

En tout cas merci pour l'aide que vous m'accordez,

Cordialement,

Yann K.

Bonsoir,

Le dernier fichier ne contient ni les plages nommées, ni aucune macro.

Ci-joint le fichier mis à jour avec ces éléments. Modif : on va directement chercher les résultats des formules dans les cellules E13, E19, E25 (cellules nommées, en jaune).

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

Pour le prochain, je te laisse faire. Les explications sont dans mon post plus haut.

Bonne soirée

Bouben

Bonsoir,

J'ai compris votre méthode et ai réussi à l'appliquer à mon tableur. Seulement pourriez-vous juste m'expliquer brièvement la signification des lignes de codes que vous avez tapé dans VBA (cela me permettra de l'expliquer lors de ma soutenance et de le refaire si besoin). Existe-t-il un raccourci pour lancer la macro sans devoir effectuer alt f11 puis exécuter ?

En vous remerciant de votre aide,

Cordialement,

Yann K.

Bonsoir,

yannko a écrit :

J'ai compris votre méthode et ai réussi à l'appliquer à mon tableur

Ah, le 2ème fichier n'était toujours pas le fichier définitif

Si la méthode est comprise, je ne vois pas trop quoi ajouter

En 2 lignes :

  • on alimente la cellule "Horaire" de 1 à 23 (boucle)
  • on récupère les résultats et on les écrit dans les cellules des colonnes F à I.
  • il y a 7 lignes de code, quoi dire de plus

Pour lancer la macro : cf fichier que j'ai envoyé.

On crée un bouton, et on associe la macro au bouton.

Si besoin d'autres explications, voir les bases du VBA et des macros,

Bonne soirée

Bouben

Bonsoir;

Non malheureusement, j'ai encore quelques ajustements à faire mais c'est proche du but.

Oui en fait je parlais plutôt du code à proprement parler style ce que signifie iLig/iderLig mais je pense que je me pencherais sur les bases VBA si nécessaire. Pour le bouton, c'est réglé.

Je vois mon tuteur de projet demain j'aurais peut être une autre question sur le sujet mais en attendant je tiens vraiment à te remercier pour ton aide et je considère ma question résolue.

Bien cordialement,

Yann K.

Bonjour,

OK !

iDerLig et iLig sont des variables utilisées par le traitement

iDerLig : dernière ligne (de type Integer, pour la lisibilité, on ajoute un i devant : i = integer)

iLig : ligne (idem)

Bonne journée

Bouben

Bonsoir,

J'ai déjà posté un autre post sur le sujet mais je reviens vers toi car tu m'avais bien aidé et que tu connais déjà un peu mon programme.

Celui-ci arrive à son terme mais j'ai quelque petits problème d'optimisation.

Je souhaite calculer le besoin thermique sur 24h ce que j'ai fait grâce à VBA mais celui-ci se fait sur toute l'année par pas de 5min ce qui rend le calcul long. Je souhaiterai donc soit éviter le VBA, soit trouver un moyen que ça boucle que 288 fois (soit 24h * 12 pas de 5min). Ou du moins essayer que le programme tourne plus rapidement. Cela affecte en plus le bouton "lancer le calcul" que l'on avait créé ensemble qui tourne au ralenti.

Voici le lien cjoint : https://www.cjoint.com/c/FKjtKIBd4e5

Cordialement,

Yann

Bonjour,

Il s'agit d'un nouveau sujet, que tu as bien créé par ailleurs, et fait déjà l'objet de réponses.

Pour ne pas polluer le forum, ce sujet est clos.

Cdlt

Bouben

Rechercher des sujets similaires à "calcul liste deroulant evitant reference circulaire"