format texte en nombre suite à une extraction

  • Initiateur de la discussion Initiateur de la discussion GG56000
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GG56000

XLDnaute Nouveau
bonjour à tous,

voilà ma problématique, je sors un tableau suite à une extraction, mais tout les chiffres sont en format texte, comment puis je tout transformer en format heure (c'est à dire 39:18 pour 39 heures et 18 minutes) soit via un bouton car le nombre de colonne sera toujours le meme.

Merci d'avance
 

Pièces jointes

suite, voir au-dessus !

Ton fichier n'est pas pareil.
Tu démarrais en A1 et le tableau était isolé. Là tu démarres en U1 après d'autres données collées.

La macro adaptée :
VB:
Sub convertH()
    Const minDec = 1 / 60, repere As String = "Nom/prénom"
    Dim datas, lig As Long, col As Long, signe As Boolean, tmp, cel1 As Range
    Set cel1 = [1:2].Find(repere, , xlValues, xlWhole, , , , xlText)
    If cel1 Is Nothing Then MsgBox repere & " non trouvé en ligne 1": Exit Sub
    Set cel1 = cel1(1)
    col = Cells(1, Columns.Count).End(xlToLeft).Column ' dernière colonne
    lig = Cells(Rows.Count, cel1.Column + 1).End(xlUp).Row ' dernière ligne
    Range(cel1.Offset(1, 1), Cells(lig, col)).Select
    datas = Range(cel1.Offset(1, 1), Cells(lig, col)).Value
    For lig = 1 To UBound(datas, 1)
        For col = 1 To UBound(datas, 2)
            If InStr(datas(lig, col), ":") > 0 Then
                signe = Left(datas(lig, col), 1) = "-"
                If signe Then datas(lig, col) = Mid(datas(lig, col), 2)
                ' des heures >24 empêchent d'utiliser TimeValue pour la conversion
                tmp = Split(datas(lig, col), ":")
                datas(lig, col) = Round(tmp(0) + tmp(1) * minDec, 7)
                If signe Then datas(lig, col) = -datas(lig, col)
            End If
        Next col
    Next lig
    With cel1.Offset(1, 1).Resize(UBound(datas, 1), UBound(datas, 2))
        .Value = datas
        .NumberFormat = "0.00""h"";-0.00""h"";;@"
    End With
End Sub
eric
 
Bonsoir le fil, GG56000, eriiiic

Déjà il faudra 'Enregistrer sous...' en choisissant le Type *.xlsm si tu veux garder les macros.
Ctrl+F11 pour aller dans VBE
Juste pour infos
Ce n'est pas CTRL+F11
mais ALT+F11 pour accéder à VBE.
NB: CTRL+F11 insère une feuille macro XL4

•>eriiiic, c'était un petit coup de nostalgie ?
(Ah le bon temps de LIRE.CELLULE)
😉
 
Dernière édition:
Ah, c'est pour ça que j'en ai trouvé une dans son fichier.
Je me demandais par quels détours il en était arrivé là 😀
Bon, du coup je me suis senti obligé de corriger mon post
Bonjour le fil, David

•>eriiiic
Sauf erreur de ma part, tu gardes le ...ConTRôle, non?
J'ai point vu d'édition. 😉

NB: A moins que "corriger ton post", se fasse en cuir noir, avec un fouet en Option Explicit 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
941
Retour