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 :

Création d'un tableau à partir des différentes valeurs d'une même cellule et de l'heure de relevé de la cellul [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Création d'un tableau à partir des différentes valeurs d'une même cellule et de l'heure de relevé de la cellul
    Bonjour à tous,

    Ceci est mon premier message sur un forum ( grande première) et j'aimerais avoir un petit peu d'aide.
    Cela fait 2 jours que j'essaye de faire un code qui me permettrais de récupérer les différentes valeurs que peut prendre une même cellule, et récupérer le temps de relevé de cette valeur et de créer un tableau qui mettrais côte à côte ces valeurs en fonction de l'heure de relevé.

    Etant très très grand débutant en VBA j'ai essayé de faire un code mais qui ne marche pas car j'ai pris un petit peu de tout ce que j'ai pu trouver sur internet, le voici:

    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
    Sub marche()
            intervalle = TimeValue("01:00")
            NewTime = intervalle * (1 + Int(Now / intervalle))
            Application.StatusBar = "Prochaine capture : " & Format(NewTime, "h:mm")
            Application.OnTime NewTime, "Action"
    End Sub
     
    Sub Arret()
            Application.OnTime NewTime, "Action", False
            Application.StatusBar = "Arret capture : " & Format(NewTime, "h:mm")
    End Sub
     
    Sub Action()
            Dim LastRow As Long
            With Sheets("Feuil1")
                    LastRow = Range("a36565").End(xlUp).Row
                    If Now > .Cells(LastRow, 1) Then
                            Beep
                            .Cells(LastRow + 1, 1) = Now
                            .Cells(LastRow + 1, 2) = Sheets("Matin").Range("W5")
                            Call marche
                            ThisWorkbook.Save
                            Beep
                    End If
            End With
    End Sub
    Pour être honnête avec vous, je ne comprend pas tout ce qu'il y a dans ce code mais j'aimerai récupérer la valeur de la cellule W5 ( en %) toutes les heures et en faire un tableau.

    Merci beaucoup pour votre aide !

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour vba beginner,

    Tout simplement comme ceci :
    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
    Option Explicit
    Dim Tps As Date
     
    Sub Action()
        'Ton timer avec ton intervale (ici une seconde)
        Tps = Now + TimeValue("00:00:01")
        'Relance l'exécution
        Application.OnTime Tps, "Action"
     
        'Et fait ce que tu souhaites :
        '=> Avec la feuille "Matin"
        With Worksheets("Matin")
            'La dernière cellule non-vide (+1 ligne) de la colonne 1 est égale à l'heure actuelle
            .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Format(Now, "hh:mm:ss")
            'La dernière cellule non-vide (+1 ligne) de la colonne 2 est égale à C1 (de "Matin")
            .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = .Range("C1")
        End With
     
    End Sub
     
    Sub StopTempo()
        On Error Resume Next
        'Stopper la gestion de l'évènement OnTime en cours
        Application.OnTime Tps, "Action", , False
    End Sub
    N'hésite ps à revenir vers moi !

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour Kimy_Ire,

    Merci infiniment pour votre réponse qui marche très bien d'ailleurs.

    Le seul problème est que je n'arrive pas à stopper la macro même en affectant la macro stop tempo à un bouton stop.
    Ce que j'aurais aimé c'est que la macro se lance à 6h et qu'elle s'arrête par exemple 14h.
    Je vais devoir faire les 2 autres macros de 14h-22h et 22h-6h qui seront sur mes feuilles après-midi et nuit mais cela ne sera pas un problème même si mon niveau est très moyen.


    Dernière question, auriez-vous une idée de comment faire pour que dans mon histogramme, les bâtons de + ou = à 60% soit vert et ceux de - de 60% soit rouge ?

    Merci encore pour votre réponse qui m'a été d'une très grande aide et Merci de m'accorder de votre temps !

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Alors, il y a une méthode très simple qui consiste à faire 2 courbes (une en vert et l'autre en rouge).
    Tous les éléments >= à 60% sont récupérés dans la colonne C. Les autres sont à 0.
    Et de même dans la colonne D avec les autres (et inversement sur la condition).

    Puis après tu traces tes deux courbes avec les colonnes C et D.

    Sinon, tu peux gérer l'affichage de toutes tes barres, mais ça nécessite plus de travail.
    Voila.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses aussi rapides !
    Je n'y avais pas pensé du tout !
    Cette méthode me paraît de plus faisable !

    En ce qui concerne les heures à laquelle une macro est active, je pensais mettre cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub lancement() 
     
    Application.OnTime TimeValue("06:20:00"), ("Action"), True 
    Application.OnTime TimeValue("14:00:00"), ("Action"), False
    End Sub
    ( Je ne sais pas si vous pouvez encore répondre si je marque le message comme résolu c'est pour cela qu'il n'est pas encore marqué comme résolu)

    Cordialement, VBA Beginner.

  6. #6
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    J ne suis pas sur que tu ai tout bien compris.
    Et n'ayant pas saisi ce que tu souhaites vraiment, il me semble plus pertinent que tu te renseignes par toi-même.

    Je reste quoi qu'il en soit disponible pour tout complément.

    Tu peux clôturer le sujet. Nous pouvons continuer à écrire des posts après.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je m'explique mieux.

    Je travail dans une usine. Les opérateurs de l'usine possèdent un coefficient d'efficacité.
    Ce que je voulais faire c'est un graphique qui leur montre leur coefficient d'efficacité en fonction du temps.
    Ces opérateurs utilisent un fichier excel sur lequel ils renseignent leur travail.
    Lorsque lors coefficient d'efficacité est >=60% on est dans le vert et dans le rouge sinon.
    Cependant, il y a 3 équipes(Jour[6h-14h],Apm[14h-22h],Nuit[22h-6h]) qui utilisent le même fichiers excel mais des onglets(matin,apm,nuit) différents.
    Si je lance ma macro dès l'ouverture du fichier excel, même lorsque l'équipe de jour aura fini son travail, l'histogramme continuera d'être alimenté.
    C'est pour cela que j'aimerai que ma macro s’exécute seulement de 6h-14h sur l'onglet matin, 14h-22h sur l'onglet apm etc..

    J'ai lu le lien que vous m'avez envoyé, cependant, je n'arrive pas à trouver comment stopper ma macro ( à une heure donnée).

    Merci infiniment pour votre aide.

  8. #8
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Le lien est pourtant en français.
    Pour désactiver l'évènement prévu à 14H30 avant son exécution
    Bref, tu avais tout bon avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime TimeValue("14:00:00"), ("Action"), False
    Par contre, à 14h00 ça se désactive AVANT l'exécution. En d'autres termes, si tu veux la valeur de 14h00, désactive peut-être un peu après.

    Voila.
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  9. #9
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Oh en lisant ça, j'avais compris qu'avant même que ma macro s'active, elle sera désactivé.

    Ce qui n'est pas très logique je vous l'accorde

    Je vous remercie pour toutes vos réponses et à bientôt sur ce Forum !

    Cordialement, Vba Beginner.

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

Discussions similaires

  1. faire un tableau à partir des valeurs d'un Select
    Par Alexdezark dans le forum jQuery
    Réponses: 2
    Dernier message: 22/08/2009, 11h55
  2. Réponses: 7
    Dernier message: 24/10/2006, 11h11
  3. Réponses: 8
    Dernier message: 10/10/2006, 10h58
  4. [VBA] Obtenir l'index dans un tableau à partir de sa valeur.
    Par Julien Dufour dans le forum Access
    Réponses: 2
    Dernier message: 28/07/2006, 11h03
  5. Réponses: 5
    Dernier message: 21/05/2006, 13h23

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