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

Excel Discussion :

Manipulation de durée hors format standard


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Manipulation de durée hors format standard
    Bonjour à tous,

    Je travaille actuellement sur des extract que je dois manipuler afin de sortir des stats.

    Or petit problème : les durées extraites sortent sur un format qui, je pense, ne sont pas manipulables avec excel sans un post traitement de type formule ou macro.

    Ces extracts sont du type suivant :
    3d 18h 22m
    4h 53m
    22h 56m
    1d 1h 38m


    Pouvez vous m'aider à trouver un moyen de les sommer par une formule ou une macro ?

    Merci d'avance à tous,

    Antoine

    PS : je fais quelques macro simples mais là, celà dépasse mes compétences !

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 383
    Points : 659
    Points
    659
    Par défaut
    Bonsoir ajnitolp,

    Je te propose cela, qui te permet de récupére les jours, heures, et minutes, dans 3 variables.
    Après, à toi de manipuler ces variables comme tu le sens pour créer ton propre format.
    Cet exemple fonctionne si tu mets une de tes valeurs en cellule A1.

    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
    Sub JoursHeuresMinutes()
     
    Dim Séparation
    Dim NbElements As Integer
    Dim i As Integer
    Dim Jours as Integer
    Dim Heures as Integer
    Dim Minutes as Integer
     
    Séparation = Split(Range("A1").Value, " ")
    NbElements = UBound(Séparation)
     
    For i = 0 To NbElements
        If Jours = "" And Right(Séparation(i), 1) = "d" Then
            Jours = Left(Séparation(i), Len(Séparation(i)) - 1)
        ElseIf Heures = "" And Right(Séparation(i), 1) = "h" Then
            Heures = Left(Séparation(i), Len(Séparation(i)) - 1)
        ElseIf Minutes = "" And Right(Séparation(i), 1) = "m" Then
            Minutes = Left(Séparation(i), Len(Séparation(i)) - 1)
        End If
    Next i
     
    MsgBox Jours & " " & Heures & " " & Minutes
     
    End Sub
    Demain, je vais commencer par m'acheter des lunettes. Et après, je verrai bien.

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Ce que tu demandes nécessite l'intervention de code VBA.
    Je te propose ceci (exemple sur la cellule A1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    titi = Split(Range("A1").Text, " ")
    For i = 0 To UBound(titi)
      If titi(i) Like "#d" And i = 0 Then
        titi(i + 1) = Val(titi(i)) * 24 + Val(titi(i + 1))
        titi(i) = "@"
      Else
        titi(i) = CStr(Val(titi(i)))
      End If
    Next
    Range("A1").Value = Replace(Join(titi, ":"), "@:", "'")
    Qui transforme en heures et minutes, le tout mis en format texte
    Si cela te convient : traiter ainsi en boucle les cellules de la colonne concernée.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu auras remarqué que la solution implique l'utilisation de VBA (autre section de ce forum).
    Tu as donc reçu des réponses "adaptées", mais non correspondant forcément à ton besoin, qui est probablement plus technique, à savoir : obtenir des valeurs vraiment exploitables par Excel et/ou son VBA (calculs, etc ...)
    Des solutions plus "précises" et "techniques" existent, mais je pars personnellement du principe selon lequel les donner ici (section Excel) ferait qu'elles y seraient perdues puisque d'autres les chercheraient ailleurs (section VBA).
    A toi, donc, de voir si tu dois ou non présenter ce problème dans la section VBA de ce forum.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. format standard et TEXT dans VBA
    Par charlesssq dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2010, 14h07
  2. Manipulation des images au format Dicom
    Par Lost in dans le forum Images
    Réponses: 8
    Dernier message: 16/02/2008, 18h12
  3. [SQL2K]Convertion de date hors format prévu
    Par Monstros Velu dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/11/2007, 13h47
  4. Composant manipulant du texte au format RTF ?
    Par franckjava dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 11/06/2007, 22h27
  5. Calcul durée hors sam dim
    Par fab dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2007, 22h28

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