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 :

Gestion de l'Heure avec VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable technique
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut Gestion de l'Heure avec VBA
    Bonjour a tous,
    Je travaille sur la récuperation de données issues d'un datalogger par le biais d'un document CSV que j'importe sur une feuille Excel. Le format est le suivant:
    25/02/2015 (en cellules A) 11:44:34 (en cellules B) 45 (Variable en cellules C ) et les quantités sont variables (Entre 1500 et 2000 données)
    Je souhaite selon les valeurs des minutes et secondes de stocker les variables dans des cases différentes.
    Si minutes et secondes (00:00 et 09:59) alors je deplace la variable en cellule D
    Si minutes et secondes (10:00 et 19:59) alors je deplace la variable en cellule E
    Si minutes et secondes (20:00 et 29:59) alors je deplace la variable en cellule F
    et cela jusqu'a (50:00 et 59:59) alors je deplace la variable en cellule I
    Je n'ai pas d'obligation sur les formats date et time, je n'exploite que les variables.
    Je remercie celui qui pourrait me sortir de cette ornière.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Je souhaite selon les valeurs des minutes et secondes de stocker les variables dans des cases différentes.
    Un petit code dans ce genre devrait te donner le résultat espéré.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim lig As Long, col As Integer
     
    For lig = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        col = (Right(Format(Cells(lig, 2), "hh:mm"), 2) / 10) + 4
        Cells(lig, col).Value = Cells(lig, 3).Value
    Next lig

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable technique
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Merci Anasecu mais j'ai un code d'erreur d'execution 13 qui apparait.

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Dans ce cas c'est que tes heures sont incorrectes : essaies de vérifier avec cette modification.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim lig As Long, col As Integer
     
    For lig = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If IsNumeric(Cells(lig, 2)) Then
            col = (Right(Format(Cells(lig, 2), "hh:mm"), 2) / 10) + 4
            Cells(lig, col).Value = Cells(lig, 3).Value
        Else
            Cells(lig, 4).Value = "Heure incorrecte"
        End If
    Next lig

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Responsable technique
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Bonjour Anasecu,
    Je me retrouve avec un nouveau message d'erreur, j'ai mis mon fichier en pièce jointe, je tourne depuis ce matin et je n'arrive pas a trouver la solution.
    Merci.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Tu nous avais demandé
    Citation Envoyé par AlainG06 Voir le message
    11:44:34 (en cellules B) 45 (Variable en cellules C )
    Je souhaite selon les valeurs des minutes et secondes de stocker les variables dans des cases différentes.
    Si minutes et secondes (00:00 et 09:59) alors je deplace la variable en cellule D etc
    Ton classeur n'a pas de variable en colonne C
    Ce n'est pas un CSV
    Tes données commencent en ligne 3
    tes titres de colonne ventilent des heures au lieu de minute

    Si tu avais remplacé la ligne 1 par la ligne 3 tu n'aurais pas eu d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For lig = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    mais tu n'aurais pas ventilé visiblement la colonne C qui est totalement vide (en ressemblant à la colonne D ?).

    Pour paraphraser Rémi Gaillard, je dirais « C'est en faisant n'importe quoi qu'on obtient n'importe quoi »

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    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
    Sub gb()
     Set f = ActiveSheet
     dern = f.Cells(Rows.Count, 1).End(xlUp).Row
     
     For i = 3 To dern
     
      Set c = f.Cells(i, 2)
      m = Minute(c.Value)
      col = Int(m / 10) + 3
     
      f.Cells(i, col).NumberFormat = "hh:mm:ss"
      f.Cells(i, col).Value = c.Value
     
     Next
     
    End Sub

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Responsable technique
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Merci Anasecu et Docmarti,
    La perceverance reste une stratégie de la vie quotidienne surtout quand ton quotidien met a jour certaines lacunes......
    Longue vie a ce forum,
    Les deux solutions sont efficaces mais je me suis un peu égaré dans ma demande initiale. Jai parlé de déplacer les variables sur la droite mais mon besoin et d'intégrer des cellules sur la gauche de la cellule "C" afin de décaler l'ensemble des valeurs "D et les suivantes" du nombre de cases correspondant aux minutes. Mon objectif étant de passer de ce modèle:
        Dates     Heures        Var1        Var2
    02/02/2015    09H02         928         543
    02/02/2015    09H12         998         545
    02/02/2015    09H22         918         345
    02/02/2015    09H32         198         525
    02/02/2015    09H42         298         515
    02/02/2015    09H52         298         565
    A ce modèle:
        Dates    Var1   0 à 9'  10 à 19'  20 à 29'  30 à 39'  40 à 49'  50 à 59'   Var2  0 à 9'  10 à 19'  20 à 29'  30 à 39'  40 à 49'  50 à 59'
    02/02/2015          928     998       918       198       298       298              543     545       345       525       515       565
    Avec autant de variables possibles.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Gestion d'une image avec VBA Access
    Par Marin d'Eau Douce dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/01/2012, 17h38
  2. gestion de la liaison série avec VBA
    Par riquet90 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/08/2008, 17h30
  3. Gestion liste avec VBA
    Par ricki69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2008, 23h43
  4. Gestion de micro coupures ADSL avec VBA
    Par Yohann_x dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/10/2007, 10h55
  5. Réponses: 3
    Dernier message: 13/08/2004, 18h52

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