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 :

Récupérer les dates de début et de fin d'une série de mesures


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut Récupérer les dates de début et de fin d'une série de mesures
    Bonjour,

    J'ai un automate qui me renvoie un 0 quand il est à l'arrêt et un 1 quand il fonctionne.
    Je n'arrive pas à faire en macro qui me permettrait de récupérer pour chaque série de 1, l'heure de début et l'heure de fin et l'afficher dans la colonne C ou D.
    Si vous avez un début de piste, merci d'avance.

    Cdlt
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Une piste :

    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 Test()
    Dim tb, DL As Long, i As Long
    With Sheets("Feuil1")
        DL = derlig_reelle(.Columns(1))
        tb = .Range("A2:D" & DL).Value
        '1ère valeur enregistrée comme début
        tb(1, 3) = tb(1, 1)
        For i = LBound(tb, 1) To UBound(tb, 1) - 1
            If tb(i, 2) <> tb(i + 1, 2) Then
                tb(i, 4) = tb(i, 1)
                tb(i + 1, 3) = tb(i + 1, 1)
            End If
        Next
        'dernière valeur
        If tb(i, 2) = tb(i - 1, 2) Then
            tb(i, 3) = ""
            tb(i, 4) = tb(i - 1, 4)
            tb(i - 1, 4) = ""
        End If
        .Range("A2").Resize(UBound(tb, 1), 4) = tb
    End With
    End Sub
    Private Function derlig_reelle(plage As Range) As Long
       If WorksheetFunction.CountA(plage) = 0 Then derlig_reelle = plage.Cells(1, 1).Row: Exit Function
       derlig_reelle = plage.Find("*", , , , , xlPrevious).Row
    End Function

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Autre piste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Recup()
        Dim DerLig As Long, i As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        Cells(2, "C") = Cells(2, "A")
        For i = 2 To DerLig
            If Cells(i, "B") <> Cells(i - 1, "B") Then
                Cells(i - 1, "D") = Cells(i - 1, "A")
                Cells(i, "C") = Cells(i, "A")
            End If
        Next i
    End Sub
    Cdlt

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Solution sans VBA.

    Si tu as Excel 2019 ou 365 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =MIN.SI.ENS(A2:A29;B2:B29;1)
    =MAX.SI.ENS(A2:A29;B2:B29;1)
    Pour les versions précédentes, deux formules matricielles (à valider avec Ctrl+Shift+Entrée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =MIN(SI(B2:B29=1;A2:A29;""))
    =MAX(SI(B2:B29=1;A2:A29;""))
    Ca peut aussi se faire avec une SOMMEPROD().

  5. #5
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut
    Bonjour,

    Merci pour les réponses rapides. Avec les 2 premiers codes, je vais pouvoir bricoler quelque chose je pense.
    Par contre je dois être nul mais impossible de faire fonctionner les formules de menhir.

    Cdlt

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    J'ai pourtant vérifié qu'elles fonctionnent.

    Quel est le symptôme du problème ?
    Quelle est ta version d'Excel ?
    Est-ce que tu as valider des deux dernières formules en tant que formules matricielles comme il est précisé ?

Discussions similaires

  1. [Calendrier] Récupérer les dates des vacances scolaires, c'est possible ?
    Par fayred dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 13
    Dernier message: 10/10/2016, 18h45
  2. [PHP 5.0] Retrouver les dates de début et fin de la semaine dernière.
    Par Kyvin dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2011, 09h29
  3. Récupérer les dates de l'année en cours sur SQL Server
    Par And_res dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/10/2008, 09h51
  4. Réponses: 11
    Dernier message: 05/06/2008, 11h04
  5. Réponses: 3
    Dernier message: 21/04/2008, 16h19

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