IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Probleme excel VBA code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Par défaut Probleme excel VBA code
    Bonjour a tous,

    Je suis nouvellement stagiaire au sein d´une entreprise et mon chef me demande de resoudre un probleme a l´aide de l´editeur VBA d´excel. Le soucis est que je n´ai jamais utilise cet outil et que j´ai toujours nage en informatique
    Une petite aide serait donc la bienvenue Quel est le programme que je dois realiser sous visuel basic afin de repondre au probleme suivant demande par mon chef ? :


    On possede une cuve qui est alimente par un tuyau de debit 10 m cube par heures. Ce tuyau peut etre ouvert ou ferme a l´aide d´une vanne.

    L´eau sort de cette cuve par un autre tuyau a raison de 5 m cube par heures qui peut egalement etre ferme ou ouvert.

    Le but de la demarche est de savoir le nombre d´eau present dans la cuve en temps reel dans tout les cas possibles d´ouverture des vannes. ( ex: les deux vannes sont ouvertes, ou seulement l´une des deux est ouverte, ou aucune ...)

    Voila en vous remerciant (tres) grandement d´avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Salut,

    Il doit manquer un paramètre, c'est la quantité d'eau initialement présent dans la cuve.
    Si tu colles le code suivant dans un module VBA, tu pourras appeler directement la fonction GetVolEauSuivantEtatVannesA depuis Excel comme une autre formule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Enum ETAT_VANNE
        VANNE_OUVERTE = 1
        VANNE_FERMEE = 0
    End Enum
     
    ' Retourne le volume d'eau en m^3 suivant l'état des vannes à une durée après l'ouverture / fermeture des vannes 
    Public Function GetVolEauSuivantEtatVannesA(QEauInitialMCube As Double, _
                             vArrive As ETAT_VANNE, vSortie As ETAT_VANNE, dureeHeure As Double) As Double
        GetVolEauSuivantEtatVannesA = QEauInitialMCube
        If vArrive = VANNE_OUVERTE Then
            GetVolEauSuivantEtatVannesA = GetVolEauSuivantEtatVannesA + 10 * dureeHeure
        End If
        If vSortie = VANNE_OUVERTE Then
            GetVolEauSuivantEtatVannesA = GetVolEauSuivantEtatVannesA - 5 * dureeHeure
            If GetVolEauSuivantEtatVannesA < 0 Then GetVolEauSuivantEtatVannesA = 0
        End If
    End Function

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut probleme excel VBA
    Bonjour bluemonkey,

    Il ne reste à espérer que la cuve est hermétique sinon bonjour les dégats. Mais comme on ne connait pas la capacité de la cuve notre responsabilité est dégagée ...

    Reste à savoir également qui signalera (automatisme ou pas) l'ouverture ou pas des vannes. le demandeur précise en temps réel or je suppose que les gens ne seront pas en permanence devant l'écran pour informer le programme de l'état des vannes.

    Mais l'objet de mon intrusion est tout autre :
    Je connais sub, function, property mais pas public enum. C'est quoi ? C'est la deuxième fois en peu de temps que je vois cette expression sur ce site ? Peut-être étais-tu également l'auteur de la première fois.

    Cordialement.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour nibledispo,

    Les Enum permettent de créer un groupe de constantes.
    De cette manière tu peux les retrouver plus facilement à partir du nom que tu as donné au groupe.
    voir FAQ Enum

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut probleme excel VBA code
    re... BlueMonkey

    merci de la réponse. je regarde dès mon retour le lien que tu m'as remis.

    a+

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Par défaut
    Merci grandement de ta réponse ainsi que de sa rapidité blueMonkey !!

    Une derniere petite question, a quoi correspond/sert l'expression " As Double" utilisée dans le code ?

  7. #7
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut probleme excel VBA code
    bonsoir,

    ma contribution sur la base du travail casefayere et ta seconde demande.

    j'aimerai que rdurupt explique le PID que je suis certain d'avoir déjà rencontré dans un code. Cela me conduit à penser qu'il qu'il s'agit d'une méthode de calcul reconnue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    ' version nibledispo : considère la vanne sortie toujours ouverte comme demandé
    ' ce code ne gère pas la vanne arrivée d'eau fermée
    Sub cuve2()
    Const Debit_Arrive_Max As Double = 20
    Const Debit_Sortie As Double = 10
    Const Remplissage_Souhaite As Double = 2.5
    Const QEauInitialMCube = 1
    Const dureeHeure = 0.008 'periode en heure de passage dans boucle (environ 30 s)
    Dim GetVolEau As Double
    Dim temps As Single
    temps = 0
    GetVolEau = QEauInitialMCube
    vanne_ouverte = 1                ' il s'agit de la vanne d'arrivée d'eau
    Do While vanne_ouverte = 1
        If GetVolEau >= 2.5 Then     ' volume d'eau stabilisé dans cuve
          Debit_Arrive = Debit_Sortie
        End If
     
       If GetVolEau < 2.5 And GetVolEau > 1.8 Then
          Debit_Arrive = Debit_Arrive_Max * (Remplissage_Souhaite - GetVolEau) / 0.7 'débit_arrive dégressif de 20 à 12m3
          If Debit_Arrive <= 12 Then Debit_Arrive = 12 ' débit_arrive > debit sortie
          'sinon le volume n'atteind jamais 2.5m3 mais seulement 2.25m3
       End If
     
       If GetVolEau <= 1.8 Then 'debit_arrive max jusqu'à 1.8 m3 (choix arbitraire)
          Debit_Arrive = Debit_Arrive_Max
       End If
       With Sheets("feuil1") 'pour controle visuel
            GetVolEau = GetVolEau + (Debit_Arrive - Debit_Sortie) * dureeHeure
            Cells(1, 2) = Debit_Arrive
            temps = temps + dureeHeure
            Cells(2, 2) = GetVolEau
            Cells(3, 2) = temps + dureeHeure
       End With
    Loop
     
    End Sub
    cordialement.

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Salut,

    Le fichier ci-joint permet de visualiser en temps réel sur un graph le remplissage de la cuve.
    Il est possible de jouer sur les scrollbar pour ajouter le débit de sortie.
    Le débit d'entré en lui ajouté automatiquement avec la macro (mais visible au iveau de la scrollbar).
    Tu peux aussi jouer en temps réel sur la consigne de remplissage de la cuve ou l'état de la vanne de sortie.



    Pour lancer le simulateur, clique sur <Start simulation> sous les graphiques.

    A+
    Fichiers attachés Fichiers attachés

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    La méthode de calcul PID repose sur 3 facteurs :

    Proportionnel : qui ouvre la vanne en fonction du débit (je pompe 1 litre, je verse 1 litre)

    Intégrale : je pompe 10 litres combien te temps me faudra-t-il pour comblé et qu’arriver-t-il si je pompe encor 10 litres je dois remplir le réservoir plus vite qu’il ne ce vide (on ce base sur la vitesse à la quelle ce creuse l’écart entre ce qui est et ce qui dois)

    Dérivé : dépend de la capacité de remplissage, je dois anticiper l’arrêt du remplissage de la cuve pour soit ne pas déborder, ne pas dépasser la consigne, permettre un arrêt en douceur de la vanne.
    C’est le principe du flotteur dans la cuvette des toilettes.

    Logiquement je devrais faire un échantillonnage pour déterminer un indice de pondération pour corriger l’écart entre ce qui est théorique et ce qui est réellement.
    Placer une consigne à 3M3 par exemple en vérifier à intervalle régulier avec un pige le niveau de la cuve.
    L’indice de pondération ce fait en fonction du temps de remplissage et de 2 prise à 82% et 92% de la consigne.
    Ensuite on trouve des abaques pour le calcul PID proprement dit.
    Ce principe on le retrouve dans l’ABS des bagnoles, dans les châteaux d’eau de la Lyonnaise, sur le fauteuil roulant des handicapés….
    Dernière modification par Invité ; 28/06/2013 à 14h29.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Par défaut
    Je ne sais pas comment tous vous remercier, vous avez ete d´une aide plus que precieuse pour quelqu´un qui comme moi a toujours ete fache avec l´informatique.
    Merci a rdurupt , a nibledispo et a BlueMonkey dont l´affichage en temps reel des donnees sur graphe a litteralement schotche mon chef !

    Merci encore

    ( Y a-t-il un quelconque moyen que je vous rajoute des "pts de membres" suite a votre gentilesse ? )

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Re.

    Content que tu ai pu épater ton chef.

    Si tu veux aller plus loin avec VBA, tu peux regarder ce support de cours complet pour VBA d'Excel de Jean-Marc RABILLOUD

    Citation Envoyé par visteur21 Voir le message
    ( Y a t´il un quelconque moyen que je vous rajoute des "pts de membres" suite a votre gentilesse ? )
    Des points sont ajoutés/retirés à l'auteur d'un post, suivant les votes reçu sur ses posts.
    Pour voter, regarde les boutons associés aux posts sous chaque post.
    Ils te permettent de voter pour ou contre un post pour indiquer qu'il a été utile,
    ou au contraire que la solution ne fonctionne pas.

    Je te conseil de regarder aussi le bouton qui permet de passer le sujet en résolu (et qui au passage ajoute 1 pts à ton compteur)

    Pour plus d'explication voir :
    Aide à l'utilisation des boutons de Anomaly

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2012, 17h43
  2. Probleme avec Checkboxen dans EXcel VBA
    Par mimane_01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/05/2007, 15h02
  3. [VBA-E]Probleme macro VBA excel 2000 2003
    Par skichatchat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2007, 21h16
  4. EXCEL/ VBA Erreur sur le code VBA : rediriger l’erreur
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/12/2006, 16h28
  5. [VBA-E]Probleme dans mon code ??? merci de votre aide
    Par gregantibes dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/04/2006, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo