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 :

Excel VBA: macro et "temps réel" [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Excel VBA: macro et "temps réel"
    Bonjour,

    Pour un projet à la fac, mon tuteur souhaite que j'utilise Excel et VBA pour traiter des données. Avant de me lancer là dedans, je souhaite avoir votre avis sur la faisabilité de la chose.

    Je dispose d'un classeur Excel avec plusieurs feuilles. Il y a plusieurs macros, ces macros utilisent des fonctions, bref, c'est très complet.

    En parallèle de ce classeur, il y a une chambre de combustion sur laquelle sont placés des capteurs (pression, température, O2, Co2...). Les mesures de ces capteurs sont relevées toutes les T secondes par le logiciel AMR Wincontrol, en moyenne c'est toutes les T=15 s. Ce logiciel est capable d'exporter directement ces mesures dans un Excel. Il suffit de lui spécifier le nom du classeur Excel, le feuillet puis ligne de début et il ajoute les lignes les unes à la suite des autres.

    Mon travail consiste d'abord à importer dans le premier classeur les données des capteurs fournies par le logiciel. Je ne pense pas jusque là que ça pose trop de problèmes, une macro suffira, mais je voudrais savoir si cela peut se faire de manière automatique: l'intérêt serait en effet de lancer des expériences dans la chambre de combustion et d'observer "en direct" ce qu'il se passe grâce à l'Excel.

    Formulé autrement, est-il possible de créer une macro, qui une fois lancée va exécuter automatiquement certaines actions à chaque nouvelle ligne arrivée dans le feuillet qui reçoit les données de mes capteurs?

    Est il également possible de créer un graphique qui va automatiquement ajouter des points correspondant aux nouvelles valeurs arrivant dans le feuillet qui reçoit les données des capteurs?

    Je pense qu'un logiciel de traitement de données en temps réel du genre MatLab ou Simulink se prêterait mieux à mon travail, mais il se trouve que l'Excel qui effectue les calculs est assez costaud, il existe depuis un bon bout de temps et je n'ai pas le temps de tout refaire sous un autre logiciel...

    Merci beaucoup de m'avoir lu, j'espère que certains d'entre vous auront des réponses pour moi

    Bonne soirée.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il faut ajouter une macro évènementielle dans la feuille d'injection des mesures. Pour cela, il faut créer une zone nommée "DernierParametre" dont l'aire est la colonne du dernier paramètre pour une mesure. Cette macro peut lancer les macros rafraîchissant les TCD et les graphiques.

    Si on ne veut pas que les macros soient lancées à chaque mesure, on ajoute un compteur de mesures permettant de lancer le rafraîchissement toutes les N mesures.

    Le classeur joint contient, la macro évènementielle et un module standard.

    Dans le module de feuille

    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
    Private Sub WorkSheet_Change(ByVal ZZ As Range)
     
       If ZZ.Count > 1 Then Exit Sub
     
       Application.ScreenUpdating = False
     
       On Error Resume Next
       If Not Application.Intersect(ZZ, Range("DernierParametre")) Is Nothing Then
            NombreDeMesures = NombreDeMesures + 1
            If NombreDeMesures = 10 Then
                Call MacroMiseAJourDesTcdEtDesGraphiques
                NombreDeMesures = 0
            End If
       End If
     
       Application.ScreenUpdating = True
     
     
    End Sub
    Dans le module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public NombreDeMesures As Long
     
    Sub MacroMiseAJourDesTcdEtDesGraphiques()
     
           MsgBox ("J'enclenche les programmes de mise à jour !")
     
    End Sub
    Cordialement.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Excel VBA: macro et "temps réel"
    Rebonjour à tous,

    Me revoilà après avoir mis mes idées sur vba et malgré vos conseils, je tombe sur un os:

    J'ai travaillé avec un userform.

    J'ai donc
    -un userform
    -une feuille dans laquelle arrivent les données, la feuille 1
    -une feuille excel avec plein de calculs, la feuille 2


    Dans mon Userform, pour un capteur on demande à l'utilisateur de renseigner:

    -dans un premier champ la colonne de la feuille 1 d'où vont être issus les données à insérer dans la 2
    -dans un second champ la cellule de la feuille 2 dans laquelle il faut insérer les données issus de la feuille 1.

    J'ai donc adapté et collé le premier code dans le module de la feuille 1 et le second dans un module standard, le même que celui d'où je lance mon Userform. J'ai lancé ta macro et mon userform, renseigné mes champs, puis j'ai modifié des valeurs dans la feuille 1. J'ai bien l'instruction d'"Enclenchement des programmes de mise à jour", mais rien ne change dans la feuille 2.

    Voyez-vous où pourrait-être le problème dans ma démarche?

    Merci beaucoup.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si chaque item d'une mesure doit être traité par N calculs qui seront ensuite mémorisés dans la feuille 2, il suffit de demander à l'utilisateur quelle mesure il veut traiter avec un ListBox multiselect (ou un liste à liste) et lui demander de pointer tout ou partie des Items de calcul avec des CheckBox.

    Sinon, dès lors que toute mesure doit finalement être traitée, on ajoute une colonne Traité dans la feuille 1. Si la cellule n'est pas renseignée, elle doit être traitée. Dans ce cas, on lance une macro avec un bouton et on alimente les différentes colonnes de la feuille 2, on marque Traité en fin de processus dans la cellule et on passe à l'enregistrement suivant.

    D'autre part, si des séries de mesures doivent être traitées selon plusieurs modèles, il faut lister les modèles dans un ListBox éventuellement multiselect ou plus simplement avec des boutons spécifiques. Dans ce cas, on a autant de colonnes "Traité" que de modèles de traitement.

    Si votre travail doit servir ensuite sur plusieurs postes, pensez tout de suite à coder dans une macro complémentaire .xla ou .xlam (voir la diapo jointe). Les fichiers servent à stocker les données, les différents calculs sont accessibles depuis le menu Compléments d'Excel. C'est très puissant, cela permet de diffuser les nouvelles versions très rapidement à tout un réseau d'utilisateurs, et d'appliquer de nouveaux modèles de calculs sur d'anciennes mesures.

    Nb : Pour la clarté des explications, mettez votre code et votre fichier en ligne, sinon vous risquez que personne ne vous réponde.

    Cordialement.
    Dernière modification par Invité ; 07/05/2013 à 07h15.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Excel VBA: macro et "temps réel"
    Bonjour et merci de votre réponse éclair.

    J'avoue être un peu perdu...
    Pour que vous voyez où j'en suis et où je veux en venir, je vous joint mon travail.
    Ce sera plus clair pour essayer de me guider...



    Et voilà la bête Book7mai.zip

    Merci beaucoup!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour Paul,

    Comme suite à notre discussion, ci-joint, le fichier test.

    Rappel du processus mis en oeuvre :

    • Un automate alimente la feuille Mesures selon une fréquence définie.
    • Une macro évènementielle alimente une boite noire après l'injection de la valeur sur le dernier capteur d'une mesure.
    • Les items des mesures dans La boite noire sont alimentés par des formules Index Equivalent depuis la feuille Mesures.
    • Les résultats dans la feuille Mesures sont aussi des formules Index Equiv dépendant de la boite noire.
    • Une simple modification de la mesure dans la boite noire, donne les résultats dans la feuille mesure.
    • Avant chaque traitement d'une nouvelle mesure, les résultats de la mesure en cours dans la feuille mesure sont transformés de formule en valeur.


    Il ne te reste plus qu'à tester le fonctionnement en mode partagé avec ton automate. J'ai quelques craintes....

    Cordialement.

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

Discussions similaires

  1. [Mission/Télétravail] Consultant Développeur Freelance Excel VBA Macros Tableau croisé finance etc
    Par Pythonesque dans le forum Demandes
    Réponses: 0
    Dernier message: 18/06/2013, 00h16
  2. VBA et EXCEL et MACRO
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 14/11/2005, 18h00
  3. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51

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