Interaction entre noms et formule VBA
Bonjour à tous,
J'aimerais savoir s'il est possible d'utiliser des valeurs assignées à des noms dans les feuilles excel au sein d'une "sub" VBA.
Les cellules sont mise à jour grâce à un WonderWare qui fournit des valeurs de capteurs. Et qui dit capteur dit mesure pas précise à 100%. D'où ma demande.
L'idée serait ensuite que je filtre ces valeurs pour certaines (minimum/maximum).
C'est à dire que je filtre la valeur contenue dans la cellule entre 0.997 bar et 1.03 bar pour une pression par exemple.
Pour les autres, j'aimerai les utiliser en entrée de fonctions définies dans des modules spécifiques en VBA (un rendement par exemple).
Je pense pouvoir appeler ces fonctions dans une sorte de Sub, en lui fournissant en argument les valeurs des noms définis sur Excel justement.
Le soucis c'est que je ne trouve pas le moyen d'instancier une seule fois mes constantes (soit dans excel à l'aide des noms, soit des constantes globales dans VBA) et pouvoir faire intéragir l'ensemble.
J'espère que c'est suffisamment clair.
Merci d'avance pour votre aide.
Maxime
Bonjour,
J'espère que c'est suffisamment clair.
Pas du tout !
Utiliser des plages Excel nommées ne pose aucun problème en VBA.
Pour ce que tu souhaites, il faut le traduire de façon claire et l'illustrer... et essayer d'avoir un minimum de précision dans le langage utilisée...
Par exemple "Formules VBA n'a aucun sens dans ton titre ! Les formules, c'est l'apanage du tableur. On peut se servir de VBA (même si je trouve cela absurde la plupart du temps) pour insérer des formules dans Excel, mais il n'existe pas de formule VBA !
On instancie des objets, des éléments appartenant à une classe, mais des constantes, je voudrais bien savoir comment !
Une procédure est Sub, Function ou Property, mais sorte...
Module spécifique, c'est forcément un module qui n'est pas Standard, et placer une fonction (soit procédure Function) dans un module, pour s'en servir il vaut mieux que ce soit dans un module Standard.
Cordialement.
Je vais préciser mon propos. Désolé pour la perte de temps.
Je joins un fichier qui est un extrait de mon fichier source.
Ici il y a 3 feuilles qui composent ce classeur.
La première ("Formulas GT") me sert à calculer un facteur correctionnel en fonction de la pression (pas utile de développer) .
La deuxième ("Efficiency") affiche mon calcul de rendement compresseur en fonction des mesures de la troisième feuille ("Raw Data").
Je fais ça pour mon entreprise et l'idée c'est d'automatiser le tout sur VBA pour pouvoir enregistrer les rendements en fonction du temps (donc rafraîchir automatiquement les données de la feuille "Raw Dara" grâce au Serveur de Base de Données.
Là j'aimerai savoir si les constantes que j'ai instanciées dans Excel (AmbPressure, AmbPressureDesign,...,OutletTempCompGT1) peuvent être utilisées dans une sub VBA afin de les filtrer.
C'est à dire que dans le cas de la pression, j'aimerai la borner entre une valeur minimale et maximale.
Je pense avoir trouvé comment appeler la valeur associée au nom AmbPressure par exemple : Range.("AmbPressure").Value
Le soucis c'est que je ne sais pas comment en retour changer la valeur de AmbPressure après avoir filtré. Je ne suis pas sûr que cela fonctionne avec le même nom d'ailleurs.
Par ce qu'après avoir filtré la grandeur, j'aimerai utiliser sa valeur filtrée dans le reste de mes calculs.
J'aimerai pouvoir faire mes calculs sur VBA tout en affichant les résultats + les valeurs après filtre sur ma feuille Excel dans le même temps.
J'espère que c'est clair à présent.
Merci en tout cas,
Maxime
Le propre d'une constante... est d'être constante. Toi qui veut les faire varier, on va finir par se perdre... Je crois qu'il faudrait revenir aux fondamentaux ! Quelles sont les données de départ ? Que doit-on faire avec ? A quel résultat doit-on arriver ?
Pour l'instant je ne vois pas très bien ce qu'il en est.
Vu que mes données se mettent à jour automatiquement, la constante changera aussi et c'est plus simple dans VBA de faire appel à une constante nommée explicitement plutôt qu'à une cellule donnée.
L'instruction recherchée en VBA etait :
variable programme = Range("Nom de la constante").Value
Puis l'inverse une fois mon programme terminé :
Range("Nom de la constante").Value = résultat programme
et aussi : Cells(ligne,colonne).Value = résultat programme
Cordialement.
Vu que mes données se mettent à jour automatiquement, la constante changera aussi et c'est plus simple dans VBA de faire appel à une constante nommée explicitement plutôt qu'à une cellule donnée.
Oui (plus simple) quand il s'agit d'une vraie constante... sinon c'est une variable !
Une plage permet à la fois une modification facile de la valeur, et sa conservation, aussi facile... Mais rien n'empêche si l'utilisation le justifie d'initialiser des variables à ces valeurs dès l'ouverture...
Mais là on reste toujours dans des généralités déconnectées...