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 dans une variable txt la valeur affichée d'un temps d'une cellule [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut Récupérer dans une variable txt la valeur affichée d'un temps d'une cellule
    Bonjour à toute et à tous,

    Je rencontre une difficulté par rapport aux formats de temps.
    Je m'explique: Je dois copier à partir de différentes sources des valeurs de chronométrage de courses à pied

    Parfois la cellule source est au format texte (ex affiche une contenu égal à 01:05:54) et là pas de problème pour l'usage que j'en veux. Je copie la valeur de cette cellule au moyen d'une macro qui la colle dans une autre cellule dans le même format.

    Mais parfois la cellule source d'Excel est au format horaire avec un affichage hh:mm:ss et une fois copiée lorsque la macro la colle dans l'autre cellule au format text, je me retrouve avec une valeur numérique inexploitable pour le but recherché (je sauvegarde ensuite la page excel au format csv pour alimentation d'une base de données).

    Est-ce que quelqu'un saurait comment sauvegarder uniquement le contenu de l'affichage (par conversion) comme du texte et non le contenu date de la cellule ?

    Pour résumer, j'ai besoin de savoir comment transformer le contenu date d' une cellule date en un texte prenant l'apparence d'un format de date hh:mm:ss.

    Merci à celles et ceux qui voudront bien se pencher sur mon problème

    n.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Intéresse-toi à ce qu'est la propriété Text d'une cellule. Et utilise-la.

  3. #3
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Merci (mais je ne suis pas certain d'avoir compris la réponse )

    J'ajoute que je n'ai pas la maitrise de la page excel source.

    Je ne fais que copier celle-ci pour la coller dans un classeur excel (collage en respectant la mise en forme de la feuille de destination). les colonnes temps ne sont pas collées systématiquement au même endroit du classeur contenant les macros, je dois, après collage, au moyen d'une serie de questions préciser les colonnes contenant les noms, prénoms, ... temps...etc).
    merci d'avance.
    n.

  4. #4
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Bonjour,

    Il y a surement plus simple et plus propre mais enfin quand on a deux mots de langage, on fait avec:

    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 conversion()
     Dim heures As String
     Dim minutes As String
     Dim secondes As String
     Dim celultime As Integer
     Dim colonne As String
     
     colonne = InputBox("Colonne à traiter ", "Colonne ?")
      destination = InputBox("Colonne de destination", "Colonne ?")
     
     celultime = Cells.Find("*", , , , , xlPrevious).Row
     
     For iii = 1 To celultime
     heures = Hour(Cells(iii, colonne))
      minutes = Minute(Cells(iii, colonne))
     secondes = Second(Cells(iii, colonne))
     If heures < 10 Then heures = "0" & heures
     If minutes < 10 Then minutes = "0" & minutes
      If secondes < 10 Then secondes = "0" & secondes
     
       Cells(iii, destination) = heures & ":" & minutes & ":" & secondes
     
       Next iii
     
    End Sub

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Regarde (en appliquant ce que je t'ai dit plus haut à propos de la propriété .text.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    colonne = "j"
    Destination = "L"
    Columns(Destination).NumberFormat = "@"
    For Each c In Columns(colonne).SpecialCells(xlCellTypeConstants)
     Columns(Destination).Rows(c.Row).Value = c.Text
    Next
    je suis même à peu près certain de ce que le formatage suffit seul, et que marcherait également ceci, tout bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    colonne = "j"
    Destination = "L"
    Columns(Destination).NumberFormat = "@"
    Columns(colonne).Copy Destination:=Columns(Destination)

  6. #6
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Bonjour et merci,

    Effectivement les deux solutions fonctionnent pour peu que j'ajoute une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(colonne).NumberFormat = "[$-F400]h:mm:ss AM/PM"
    (pour forcer l'affichage hh:mm:ss de la colonne source qui m'affiche par ex "0,042418981").

    Je vais essayer de me documenter car tout cela est bien mystérieux pour moi.

    Merci donc

    Hélas, il arrive au sein des même résultats de courses que les temps des coureurs sont parfois des données texte (ex 01:10:05, 01.10.05 ou 1h10'05") et parfois des données temps (avec affichage de type hh:mm:ss) . Je suppose qu'il s'agit de retouches manuelles de la part de chronométreurs amateurs après réclamations.

    Je dois donc traiter individuellement chaque cellule de temps collée en fonction de son type de contenu et de son format d'affichage. Donc un traitement par colonne n'arrange pas mes affaires mais merci infiniment, je vais creuser pour voir si une adaptation à chaque cellule est possible (en remplaçant "Columns()" par un "Range()" ?).

    n.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/03/2010, 15h59
  2. Réponses: 5
    Dernier message: 04/12/2008, 16h58
  3. Pause dans un programme lorsqu'une variable change de valeur.
    Par Jérôme Lambert dans le forum Visual Studio
    Réponses: 5
    Dernier message: 21/10/2008, 12h26
  4. récuperer dans une variable ce que AWK affiche
    Par Marcolinho dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/06/2007, 12h36
  5. Réponses: 2
    Dernier message: 19/04/2007, 16h26

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