Comment afficher mes résultats d'un tableau sur une feuille
Résolu/Fermé
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
-
5 mars 2015 à 17:25
Paf - 6 mars 2015 à 13:44
Paf - 6 mars 2015 à 13:44
A voir également:
- Comment afficher mes résultats d'un tableau sur une feuille
- Tableau croisé dynamique - Guide
- Comment faire un tableau - Guide
- Tableau ascii - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Comment supprimer une feuille sur word - Guide
8 réponses
Bonjour ,
on déclare un tableau Dim tab_TCL(9) à une dimension
mais dans :
On utilise UBound(Ta_TCL, 2) soit le nombre d'élément de la deuxième dimension du tableau Ta_TCL, qui a priori n'existe pas; et s'il s'agissait d'une erreur de frappe pour tab_TCL, ce dernier n'a qu'une dimension.
Par ailleurs,pour reporter un tableau dans une feuille, il est plus simple d'utiliser Resize.
a priori
A+
on déclare un tableau Dim tab_TCL(9) à une dimension
mais dans :
Range(Cells(2, 7), Cells(UBound(tab_TCL, 1), 1 + UBound(Ta_TCL, 2))) = tab_TCL
On utilise UBound(Ta_TCL, 2) soit le nombre d'élément de la deuxième dimension du tableau Ta_TCL, qui a priori n'existe pas; et s'il s'agissait d'une erreur de frappe pour tab_TCL, ce dernier n'a qu'une dimension.
Par ailleurs,pour reporter un tableau dans une feuille, il est plus simple d'utiliser Resize.
a priori
Cells(2, 7).Resize(UBound(tab_TCL)) = tab_TCL
A+
Re,
en relisant le code, je me pose quelques questions:
à partir de
on remplit le tableau tab_météo qui après ne sert plus à rien
on cherche les solutions d'une équation , sans les exploiter
puis on remplit avec des valeurs de 0 à 9 le tableau tab_TCL qu'on copie ensuite dans une feuille.
Il semble qu'il manque quelque chose ?
Dite ce que vous voulez faire et joignez un fichier avec des données non sensibles,
A+
en relisant le code, je me pose quelques questions:
à partir de
'Enregistrement des valeurs dans le tableau
For i = 0 To 9
on remplit le tableau tab_météo qui après ne sert plus à rien
on cherche les solutions d'une équation , sans les exploiter
puis on remplit avec des valeurs de 0 à 9 le tableau tab_TCL qu'on copie ensuite dans une feuille.
Il semble qu'il manque quelque chose ?
Dite ce que vous voulez faire et joignez un fichier avec des données non sensibles,
A+
Je n'ai pas mis le code en entier.
En fait, mon tab_météo je le réutilise pour quelques valeurs dans le reste du programme que je n'ai pas mis.
Les valeurs TCL, PMV et PPD que je cherche à afficher dans la feuille excel je vais les utiliser par la suite pour étudier les plages de confort.
En ayant modifié mon code avec les remarques juste avant, cela ne fonctionne toujours pas. Je pense qu'il y a d'autres choses qui ne fonctionnent pas.
Je remets le code
En fait, mon tab_météo je le réutilise pour quelques valeurs dans le reste du programme que je n'ai pas mis.
Les valeurs TCL, PMV et PPD que je cherche à afficher dans la feuille excel je vais les utiliser par la suite pour étudier les plages de confort.
En ayant modifié mon code avec les remarques juste avant, cela ne fonctionne toujours pas. Je pense qu'il y a d'autres choses qui ne fonctionnent pas.
Je remets le code
ub Synthese()
'Ecriture de la ligne de titre
Range("A1") = "Mois"
Range("B1") = "Jour"
Range("C1") = "Heure"
Range("D1") = "Température extérieur"
Range("E1") = "Pression saturante"
'Mise en forme de la ligne de titre
Range("A1:E1").Interior.Color = 13434879
Range("A1:E1").Font.Bold = True
Range("A1:E1").Font.Color = 25
Range("A1:E1").Borders.Weight = 2.5
'Copie des cellules
Worksheets("Données Calcul TCL").Range("A2:E8761").Copy
Worksheets("Résultat").Activate
Worksheets("Résultat").Range("A2").Select
Worksheets("Résultat").Paste
'Nom des colonnes de Résultat
Range("G1") = "FCL"
Range("H1") = "TCL"
Range("I1") = "PMV"
Range("J1") = "PPD"
'Mise en forme des colonnes de Résultat
Range("G1:J1").Interior.Color = RGB(255, 204, 204)
Range("G1:J1").Font.Bold = True
Range("G1:J1").Font.Color = 0
Range("G1:J1").Borders.Weight = 2.5
'Déclaration des variables pour calcul TCL
Dim mét As Integer
Dim travail As Integer
Dim ICL As Single
Dim FCL As Single
Dim temp_ext As Single
Dim temp_moy_parois As Single
Dim pression_vap_sat As Single
Dim vitesse_relative_lair As Single
Dim TCL As Single
Dim coef_transfert_chaleur As Single
'Valeurs des variables
mét = Worksheets("confort thermique").Cells(7, 6)
travail = Worksheets("confort thermique").Cells(8, 6)
ICL = Worksheets("confort thermique").Cells(9, 6)
temp_moy_parois = Worksheets("confort thermique").Cells(12, 6)
vitesse_relative_lair = Worksheets("confort thermique").Cells(14, 6)
coef_transfert_chaleur = 12.1 * (vitesse_relative_lair) ^ (1 / 2)
'Calcul du rapport surface habillée par rapport à la surface du corps nu FCL
If ICL <= 0.078 Then
FCL = 1 + 1.29 * ICL
Else: FCL = 1.05 + 0.645 * ICL
End If
FCL = Application.WorksheetFunction.Round(FCL, 2)
Worksheets("Résultat").Cells(10, 15) = FCL
'Déclaration tableau données météorologique
Dim tab_météo(9, 1)
'Enregistrement des valeurs dans le tableau
For i = 0 To 9
tab_météo(i, 0) = Range("D" & i + 2)
tab_météo(i, 1) = Range("E" & i + 2)
'Calcul de TCL
' On se ramène a une équation du deuxième degré ax²+bc+c=0
' Déclaration des variables a,b et c
A = -3.96 * 10 ^ -8 * 447174 * ICL * FCL
B = -(3.96 * 10 ^ -8 * 81385668 * ICL * FCL + ICL * FCL * coef_transfert_chaleur + 1)
C = 35.7 - 0.028 * (mét - travail) - 0.0000000396 * ICL * FCL * (273 ^ 4 - (temp_moy_parois + 273) ^ 4) + ICL * FCL * coef_transfert_chaleur * tab_météo(1, 0)
'Calcul de delta
Delta = B ^ 2 - (4 * A * C)
' Recherche des solutions
Select Case (Delta)
Case Is > 0
X1 = (-B - (Delta) ^ 0.5) / (2 * A)
X2 = (-B + (Delta) ^ 0.5) / (2 * A)
X1 = Application.WorksheetFunction.Round(X1, 2)
X2 = Application.WorksheetFunction.Round(X2, 2)
Case Is = 0
X0 = -B / (2 * A)
X0 = Application.WorksheetFunction.Round(X0, 2)
Case Else
MsgBox ("impossible de calculer la température avec ce programme !")
End Select
'Valeur de TCL
If X1 > X2 Then
TCL = X1
Else: TCL = X2
End If
Dim tab_TCL(9) As Variant
For TCL = 0 To 9
tab_TCL(TCL) = TCL
Next TCL
Cells(2, 7).Rezise(UBound(tab_TCL, 1)) = tab_TCL
Worksheets("Résultat").Cells(11, 15) = TCL
'Calcul du PMV :
PMV = (0.303 * Exp((-0.036 * mét)) + 0.028) * ((mét - travail) - 0.00305 * (5733 - 6.99 * (mét - travail) - tab_météo(1, 1)) - 0.42 * ((mét - travail) - 58.15) - 0.000017 * mét * (5867 - tab_météo(1, 1)) - 0.0014 * mét * (34 - tab_météo(1, 0)) - 0.0000000396 * FCL * ((TCL + 273) ^ 4 - (temp_moy_parois + 273) ^ 4) - FCL * coef_transfert_chaleur * (TCL - tab_météo(1, 0)))
PMV = Application.WorksheetFunction.Round(PMV, 2)
Worksheets("Résultat").Cells(12, 15) = PMV
'Calcul du PPD:
PPD = 100 - 95 * Exp(-0.03353 * PMV ^ 4 - 0.2199 * PMV ^ 2)
PPD = Application.WorksheetFunction.Round(PPD, 2)
Worksheets("Résultat").Cells(13, 15) = PPD
'Afficher Valeur TCL, PMV et PPD dans la feuille de calcul Résultat
Next
'Fin des travaux
Cells.EntireColumn.AutoFit
Range("G2").Select
End Sub
re,
quand je dis "dite ce que vous voulez faire", je parlais au niveau du code.
notamment avec
j'ai bien compris que TCL va contenir la solution minimum
mais ensuite
TCL devient une variable pour la boucle puis le tableau va contenir les valeurs 0,1,2,3,.....,8 et 9. Puis ce tableau sera copié sur la feuille et cela 10 fois (boucle For i = 0 To 9)
Je ne comprend pas bien ce que vous cherchez à faire.
et sans un classeur support pas évident de tester d'éventuelles solutions
A+
quand je dis "dite ce que vous voulez faire", je parlais au niveau du code.
notamment avec
If X1 > X2 Then
TCL = X1
Else: TCL = X2
End If
j'ai bien compris que TCL va contenir la solution minimum
mais ensuite
Dim tab_TCL(9) As Variant
For TCL = 0 To 9
tab_TCL(TCL) = TCL
Next TCL
TCL devient une variable pour la boucle puis le tableau va contenir les valeurs 0,1,2,3,.....,8 et 9. Puis ce tableau sera copié sur la feuille et cela 10 fois (boucle For i = 0 To 9)
Je ne comprend pas bien ce que vous cherchez à faire.
et sans un classeur support pas évident de tester d'éventuelles solutions
A+
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
Modifié par Prunett le 5/03/2015 à 20:32
Modifié par Prunett le 5/03/2015 à 20:32
Dans ma résolution d'équation, j'obtiens deux valeurs et je m'intéresse qu'à la plus grande des deux valeurs. Je voulais utiliser la fonction maximum, mais je n'arrivais pas à la trouver sur VBA du coup j'ai fait cette boucle.
Je voulais à la base faire mon programme en entier et créer un tableau final avec TCL, PMV et PPD pour pouvoir afficher toutes ces valeurs dans ma feuille excel.
Je joints le classeur excel.
https://www.cjoint.com/?3CfuRZnsI4h
Merci beaucoup en tout cas,
If X1 > X2 Then
TCL = X1
Else: TCL = X2
End If
Je voulais à la base faire mon programme en entier et créer un tableau final avec TCL, PMV et PPD pour pouvoir afficher toutes ces valeurs dans ma feuille excel.
Je joints le classeur excel.
https://www.cjoint.com/?3CfuRZnsI4h
Merci beaucoup en tout cas,
Paf
>
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
5 mars 2015 à 21:04
5 mars 2015 à 21:04
heu oui j'ai inversé pour le mini et le maxi, mais ça b'explique toujours pas ce que vous voulez en faire puisque à peine déterminé TCL est 'écrasé' par les valeurs 0,1,2,...
j'essaie de regarder la PJ
j'essaie de regarder la PJ
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
>
Paf
Modifié par Prunett le 5/03/2015 à 21:23
Modifié par Prunett le 5/03/2015 à 21:23
Je ne veux pas écraser mes valeurs. Je veux pouvoir utiliser TCL dans la suite de mes calculs et ensuite je voudrais que ces valeurs s'affichent dans ma feuille EXCEL,car pour la suite, je vais devoir les comparer à une constante pour déterminer si on est en condition de confort ou non.
Mais pour cette partie, je comptais faire un autre module, de peur de tout écraser.
Je ne sais pas si je plus clair.
En fait, je voulais un tableau qui reprennent toutes les valeurs de TCL et qui les affichent dans Excel
Mais pour cette partie, je comptais faire un autre module, de peur de tout écraser.
Je ne sais pas si je plus clair.
En fait, je voulais un tableau qui reprennent toutes les valeurs de TCL et qui les affichent dans Excel
Re,
Pour revenir au sujet de cette discussion, pour copier le tableau dans la feuille: il faut utiliser resize et non rezice !!! et Application.Transpose pour mettre le tableau vertical.
je voulais un tableau qui reprennent toutes les valeurs de TCL
Bien qu'étant dans une boucle (For i= 0 to 9)(pourquoi 9 ?) le calcul de TCL se fait sur des données fixes (prises en feuille "confort thermique") , à chaque itération on aura une seule valeur de TCL ( identique à la précédente). N'ayant qu'une valeur (par itération) difficile d'en faire un tableau 9 élément !
Faut il un TCL par ligne de donnée de la feuille "Résultats" ?
Comment se calcule le TCL les éléments de calculs sont pris où ?
A+
Pour revenir au sujet de cette discussion, pour copier le tableau dans la feuille: il faut utiliser resize et non rezice !!! et Application.Transpose pour mettre le tableau vertical.
Cells(2, 7).Resize(UBound(tab_TCL, 1)) = Application.Transpose(tab_TCL)
je voulais un tableau qui reprennent toutes les valeurs de TCL
Bien qu'étant dans une boucle (For i= 0 to 9)(pourquoi 9 ?) le calcul de TCL se fait sur des données fixes (prises en feuille "confort thermique") , à chaque itération on aura une seule valeur de TCL ( identique à la précédente). N'ayant qu'une valeur (par itération) difficile d'en faire un tableau 9 élément !
Faut il un TCL par ligne de donnée de la feuille "Résultats" ?
Comment se calcule le TCL les éléments de calculs sont pris où ?
A+
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
5 mars 2015 à 22:00
5 mars 2015 à 22:00
Pour le TCL certes la valeur est identique pour chaque ligne. Ils se calculent avec la résolution de l'équation du second degré.
Certaines valeurs sont prises dans confort thermique (premières variables définies), d'autres sont calculées entre elles, sauf pour la valeur de la température qui elle est prise dans le tableau
température est ==>
pression est ==>
Certes pour le TCL, je n'ai pas forcément besoin d'avoir sa valeur pour chaque ligne en revanche pour le calcul du PMV et du PPD si.
Enfin pour le PMV et le PPD les valeurs varient en fonction de la température et de la pression qui varient toutes les heures et sont sur ma feuille excel Résultat.
Je souhaiterai rajouter un morceau de code me permettant de calculer PMV et PPD (qui utilisent la valeur de TCL) et les afficher dans la feuille Résultat.
Le calcul est ok normalement (il fonctionne sur la feuille confort thermique où toutes les variables sont définies comme des constantes). Dans mon module Synthèse, j'ai essayé de définir un tableau pour les colonnes température et pression que je réutilise dans la formule.
Après j'avais pris jusqu'à 9 pour voir si cela fonctionnait avant de lancer mon programme sur les 8760 lignes.
Certaines valeurs sont prises dans confort thermique (premières variables définies), d'autres sont calculées entre elles, sauf pour la valeur de la température qui elle est prise dans le tableau
'Déclaration tableau données météorologique
Dim tab_météo(9, 1)
'Enregistrement des valeurs dans le tableau
For i = 0 To 9
tab_météo(i, 0) = Range("D" & i + 2)
tab_météo(i, 1) = Range("E" & i + 2)
température est ==>
tab_météo(i, 0) = Range("D" & i + 2)
pression est ==>
tab_météo(i, 1) = Range("E" & i + 2)
Certes pour le TCL, je n'ai pas forcément besoin d'avoir sa valeur pour chaque ligne en revanche pour le calcul du PMV et du PPD si.
Enfin pour le PMV et le PPD les valeurs varient en fonction de la température et de la pression qui varient toutes les heures et sont sur ma feuille excel Résultat.
Je souhaiterai rajouter un morceau de code me permettant de calculer PMV et PPD (qui utilisent la valeur de TCL) et les afficher dans la feuille Résultat.
Le calcul est ok normalement (il fonctionne sur la feuille confort thermique où toutes les variables sont définies comme des constantes). Dans mon module Synthèse, j'ai essayé de définir un tableau pour les colonnes température et pression que je réutilise dans la formule.
Après j'avais pris jusqu'à 9 pour voir si cela fonctionnait avant de lancer mon programme sur les 8760 lignes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re
pour qu'on ait une seule valeur de TCL par itération:
Rajouter dans
'Déclaration des variables pour calcul TCL
Supprimer
et remplacer par
déplacer
A+
pour qu'on ait une seule valeur de TCL par itération:
Rajouter dans
'Déclaration des variables pour calcul TCL
Dim Tab_TCL(9)
Supprimer
Dim tab_TCL(9) As Variant
For TCL = 0 To 9
tab_TCL(TCL) = TCL
Next TCL
et remplacer par
Tab_TCL(i) = TCL
déplacer
Cells(2, 7).Resize(UBound(Tab_TCL, 1)) = Application.Transpose(Tab_TCL)après le dernier Next de la sub
A+
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
5 mars 2015 à 23:13
5 mars 2015 à 23:13
Merci, cela fonctionne :)
Cependant, j'ai une autre question : les valeurs du PMV et du PPD varient qu'est ce que je dois modifier dans mon code pour les afficher.
Je dois d'abord déclarer mes variables
Mais je code ça de cette manière, cela ne veut pas dire que ça affichera qu'un seul résultat ?
Et la dernière ligne de code
Est ce que dans ce cas là, je ne dois pas les mettre dans ma boucle For...Next ?
B
Cependant, j'ai une autre question : les valeurs du PMV et du PPD varient qu'est ce que je dois modifier dans mon code pour les afficher.
Je dois d'abord déclarer mes variables
Dim tab_PMV(9)
Dim tab_PPD(9)
Mais je code ça de cette manière, cela ne veut pas dire que ça affichera qu'un seul résultat ?
Et la dernière ligne de code
Cells(2, 8).Resize(UBound(Tab_PMV, 1)) = Application.Transpose(Tab_PMV)
Cells(2, 9).Resize(UBound(Tab_PPD, 1)) = Application.Transpose(Tab_PPD)
Est ce que dans ce cas là, je ne dois pas les mettre dans ma boucle For...Next ?
B
Re,
pour PMV et PPD, c'est comme pour TCL comme vous le présentiez.
déclaration des tableaux en début de Sub
puis, exemple pour PMV: (à adapter pour PPD)
remplacer
par
et après le next
Plutôt que de faire un tableau par type de donnée, on pourrait envisager un seul tableau regroupant toutes les données puis faire une seule copie de ce tableau sur la feuille. Mais ce ne sera pas pour ce soir
A+
pour PMV et PPD, c'est comme pour TCL comme vous le présentiez.
déclaration des tableaux en début de Sub
puis, exemple pour PMV: (à adapter pour PPD)
remplacer
'Calcul du PMV :
PMV = (0.303 * Exp((-0.036 * mét)) + 0.028) * ((mét - travail) - ....
PMV = Application.WorksheetFunction.Round(PMV, 2)
Worksheets("Résultat").Cells(12, 15) = PMV
par
'Calcul du PMV :
PMV = (0.303 * Exp((-0.036 * mét)) + 0.028) * ((mét - travail) -...
PMV = Round(PMV, 2) 'c'est pareil et plus court
tab_PMV(i) = PMV
et après le next
Cells(2, 8).Resize(UBound(Tab_PMV, 1)) = Application.Transpose(Tab_PMV)
Plutôt que de faire un tableau par type de donnée, on pourrait envisager un seul tableau regroupant toutes les données puis faire une seule copie de ce tableau sur la feuille. Mais ce ne sera pas pour ce soir
A+
Dernière remarque pour aujourd'hui
dans
C = 35.7 - 0.028 * (mét - travail) - 0.0000000396 * ICL * FCL * (273 ^ 4 - (temp_moy_parois + 273) ^ 4) + ICL * FCL * coef_transfert_chaleur * tab_météo(1, 0)
ne serait ce pas plutôt tab_météo(i, 0) ?, sinon C aura toujours la même valeur
bonne nuit
dans
C = 35.7 - 0.028 * (mét - travail) - 0.0000000396 * ICL * FCL * (273 ^ 4 - (temp_moy_parois + 273) ^ 4) + ICL * FCL * coef_transfert_chaleur * tab_météo(1, 0)
ne serait ce pas plutôt tab_météo(i, 0) ?, sinon C aura toujours la même valeur
bonne nuit
Prunett
Messages postés
30
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
12 mai 2015
6 mars 2015 à 09:17
6 mars 2015 à 09:17
Merci beaucoup !
Cela fonctionne, j'avais laissé cette erreur tab_météo(1,0) au lieu de tab_météo(i,0).
Je suis intéressée pour réaliser un seul tableau. Je pensais bien que c'était réalisable mais je me perds un peu dans la déclaration des variables et son utilisation.
En tout cas, merci beaucoup, cela fonctionne !
Cela fonctionne, j'avais laissé cette erreur tab_météo(1,0) au lieu de tab_météo(i,0).
Je suis intéressée pour réaliser un seul tableau. Je pensais bien que c'était réalisable mais je me perds un peu dans la déclaration des variables et son utilisation.
En tout cas, merci beaucoup, cela fonctionne !
Re bonjour
à vérifier, un seul tableau pour les 3 données,
https://www.cjoint.com/?3CgnYxvkg3C
n'étant pas inscrit je ne peux insérer de lien.
Bon Courage
à vérifier, un seul tableau pour les 3 données,
https://www.cjoint.com/?3CgnYxvkg3C
n'étant pas inscrit je ne peux insérer de lien.
Bon Courage