Simulation thermostat d'ambiance

CISCO

XLDnaute Barbatruc
Bonjour à tous

Je viens vous demander un gros coup de main. Coté formules, je me débrouille, mais coté VBA, je rame (J'ai bien travaillé avec du fortran ou du basic, mais c'était dans les années 80)... Comme là je ne peux pas faire avec des formules, je fais appel aux bonnes volontés et à la compétence de certains sur le forum...

Voila le "problème": J'aimerai bien faire sur excel une simulation de l'affichage d'un thermostat d'ambiance, avec toutes les fonctions correspondantes.

Vous trouverez donc sur le lien ci-dessous la doc de ce thermostat :


En pièce jointe, je met le tout début de mon travail, la "façade" de ce thermostat. Dans la réalité, il s'agit d'un écran tactile. Sur excel, il faudrait qu'en cliquant sur le pavé ou le bouton, on obtienne le même, ou presque le même résultat qu'avec le vrai thermostat.

Première question : Faut-il mieux utiliser des pavés, comme je l'ai dessiné sur le fichier ci-joint, ou des boutons ayant l'aspect désiré ?

Deuxième question : Comment faire ?

Toutes les propositions sont les bienvenues.

Merci d'avance.
 

Pièces jointes

  • Simul thermostat d'ambiance.xlsx
    19.6 KB · Affichages: 278
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Rebonjour à tous

Merci pour votre rapidité :)

@ kjin
Merci pour ton aide.
Je dois afficher, ou non, une série de controls, de nombreuses fois, et à chaque fois pas forcément les mêmes. Je désire passer par un Sub affichage (optional A as Byte, optional B as Byte, C as Byte...) et une boucle dans ce sub du style

Code:
For i = 1 to 15
If i = A or i=B or i=C or i=D.... then Me("C"&i).visible=true else Me("C"&i)=false
next

Ainsi, pour afficher tel ou tel controls, et pas les autres, je mettrai une ligne du style :
Code:
Call affichage (8, 10, 11)
pour afficher les controls C8, C10 et C11, et effacer les autres.

Merci d'avance.

@ softmama
Merci pour ta proposition. J'essaye de l'adapter à ma macro. Comment est-ce que je dois définir, quel type je dois attribuer à ListeNb ?

@ plus
 
Dernière édition:

Fo_rum

XLDnaute Accro
Re : Simulation thermostat d'ambiance

Bonsoir,

Il est difficile de reprendre un code que l'on n'a pas construit, j'ai donc laissé le sujet de côté pour un temps.
Dans la série bricolage*, vois si la proposition jointe peut te donner des idées.
Code:
  For a = 0 To 2    'nombre d'éléments de l'Array-1
    Me("C" & Array(6, 8, 10)(a)).Visible = True
  Next
* (sans idée préconçue) pour moi, le Bricolage est un art.
Certains sont inspirés d'autres moins.
La production peut plaire ou pas. C'est une histoire de goût personnel :eek:.
 

Pièces jointes

  • ControlsVusPasVus.xls
    39.5 KB · Affichages: 109

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Bonjour à tous

Et si maintenant je veux faire la même chose avec des mots, comment est-ce que je dois procéder ?

Autrement dit, comment faire pour savoir si un mot appartient, ou pas, à une liste de mots ?

Merci d'avance.

@ plus

PS : Je crois que j'ai trouvé avec IsError(Application.Match(mot, Listemot, 0)) au lieu de IsError(Application.Match(Val(i), ListeNb, 0)), dans la proposition de Softmama (en supprimant Val donc).
 
Dernière édition:

Softmama

XLDnaute Accro
Re : Simulation thermostat d'ambiance

Bonjour,

Sans trop me fouler, je reprends strictement la macro que je t'ai proposée précédemment :
VB:
Sub test2()
Dim ListeMots, i as string
ListeMots = Array("Maison", "Arbre", "Pizza", "Fleur", "Soleil") 'La liste des mots ici
i = InputBox("Entrez un mot")
If IsError(Application.Match(i, ListeMots, 0)) Then
  MsgBox i & " n'est pas dans la liste"
Else
  MsgBox i & " est bien dans la liste !!!!!!!!!"
End If
End Sub
 

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Rebonjour à tous

@ Softmama.

En cherchant avec F1 sur Val, j'ai compris à quoi servait ce terme. Restait plus qu'à le supprimer dans ta précédente proposition pour que cela fonctionne avec des mots.

Encore Merci.

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Bonjour à tous

Petit à petit, ça avance... Et me voila devant un autre, petit, problème.

Pour faire fonctionner un label nommé fond0à5, j'ai un code d'une trentaine de lignes, dont une toute simple du style :
Code:
compteurfond0à5 = compteurfond0à5 + 1

Comme j'ai 4 labels du même genre, fond0à5, fond6à11, fond12à17 et fond18à23, et pour ne pas avoir à répéter 4 fois ces trentes lignes, j'ai défini le sub transparent(fond as String, début as byte, fin as byte). J'apelle ce sub par exemple avec Call transparent ("fond0à5", 0,12). Dans ce sub, je n'arrive pas à "traduire" la ligne de code ci-dessus. J'ai esayé avec :
Code:
"compteur"&fond="compteur"&fond+1
mais, bien sûr, cela ne fonctionne pas. De même avec des Application.evaluate...

Pourriez vous me dire comment faire ? Merci d'avance.

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Rebonjour

Une autre petite question : Comment faire pour transformer une heure au format "hh:mm" en nombre. Exemple : 00:05 donnerait 5, 00:07 donnerait 7.... Les heures en question vont de 00:00 à 00:09.

Encore une fois, merci d'avance

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

REbonjour à tous

Merci Kjin. Ca fonctionne nickel.

Pour ce qui est de mon avant dernière question...

Le début du code du Sub est :
Code:
Sub transparent(fond As String, vndébut As Byte, vnfin As Byte)

If compteurunephase = 0 And compteurdeuxphases = 0 Then Exit Sub
Me ("compteur" & fond).value = Me ("compteur" & fond).value + 1

mais cela ne fonctionne pas.

Le but est d'obtenir à la place de la dernière ligne, les 4 cas suivants :
* avec Call transparent("fond0à5",......) --> compteurfond0à5 = compteur0à5 +1
* avec Call transparent("fond6à11",....) --> compteurfond6à11=compteur6à11 +1
*avec Call transparent("fond12à17",...) --> compteurfond12à17=compteur12à17 + 1
* et avec Call transparent("fond18à23",...) --> compteurfond18à23=compteur18à23 + 1

@ plus
 

kjin

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Re,
Désolé CISCO, mais c'est toujours aussi nébuleux !
Code:
Me ("compteur" & fond)
C'est quoi ?
Tu indiques avoir des label Fond0, Fond1, Fond2...mais compteur ?
Il faut que tu expliques qui est un contrôle, une variable...
A+
kjin
 

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Rebonjour à tous

Excuses, mais ne soit pas désolé. C'est plutot moins qui ne suis pas assez rigoureux, n'étant pas assez au courant des finesses du VBA...

Les variables sont en fait compteurfond0à5, compteurfond6à11, compteurfond12à17 et compteurfond18à23. En pratique, je veux que le compteur concerné soit augmenté de 1 à chaque passage dans le Sub transparent (pavé as string,.....).

En fait je peux faire :
*un appel du style Call transparent ("fond0à5",...) et dans ce cas, il faut dans la ligne me posant problème quelque chose du style "compteur"&pavé="compteur"&pavé+1

*ou encore du style Call transparent ("compteurfond0à5",.....) et dans ce cas pavé= pavé + 1.

mais bon, comme je ne trouve pas la bonne syntaxe, cela ne fonctionne pas.

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Simulation thermostat d'ambiance

Bonjour à tous

J'ai trouvé une solution : J'incrémente le compteur avant d'appeler le sub transparent. Cela me donne par exemple

Code:
compteurfond0à5 = compteurfond0à5 + 1
Call transparent(compteurfond0à5,0,12)

et pour le sub
Code:
 Sub transparent(compteur as byte, début as byte, fin as byte)

@ plus
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16