format texte en nombre suite à une extraction

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

  • extraction.xls
    368.5 KB · Affichages: 23

vgendron

XLDnaute Barbatruc
Bonjour

une petite méthode simple et rapide
ouvre ton fichier
selectionne la zone complete contenant des heures
selection de AG3
touche Shift (flèche vers le haut) + Clic sur B3 (ca selectionne la ligne)
shift maintenu enfoncé + double clic sur la bordure basse de la ligne selectionnée == Selection de toute ta zone jusquà la ligne 650

maintenant: Format/cellule/Heure
et voila
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, GG56000, vgendron

Une autre solution: Données/Convertir
1) Sélection de la colonne "Texte"
2) Données/Convertir->Délimité/Standard [x]
Et voilà ;)

PS: Je viens de tester en collant au préalable 39:18 dans une colonne préalablement formaté en Texte
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

et une autre :
sélectionner toute ta feuille (clic intersection n° ligne et n°colonne en haut à gauche)
Ctrl+h (Remplacer) ":" par ":", puis 'Remplacer tout'
sans saisir les " "
eric

PS : @vgendron, un format n'affecte que l'affichage d'un numérique, sans effet ici.
 

GG56000

XLDnaute Nouveau
bonjour à vous,
il y a un os dans vos méthode, cela ne prends pas en compte quand il y un - (moins) devant ??

exemple : si je sélectionne X3 (6:57) et X4 (-00:03) cela m'affiche 6:57 au lieu de 6:54 ???

Merci
 

Pièces jointes

  • extraction.xls
    341.5 KB · Affichages: 5

eriiic

XLDnaute Barbatruc
Bonjour,

il n'y a pas d'os dans nos méthodes, c'est juste qu'excel ne connait pas les heures négatives.
Il faudrait les traiter individuellement. Seulement excel afficherait #### pour les heures négatives, mais les opérations seraient correctes.
Ou bien les convertir après activation du calendrier 1904, mais avec les erreurs de date qui s'ensuivent : +4 ans et 1 jours dessus.
Il y a un choix à faire...
eric
 

eriiic

XLDnaute Barbatruc
En heures décimales tu veux dire.
Avec une macro :
VB:
Sub convertH()
    Const minDec = 1 / 60
    Dim datas, lig As Long, col As Long, signe As Boolean, tmp
    datas = [A1].CurrentRegion.Offset(2, 1).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 [B3].Resize(UBound(datas, 1), UBound(datas, 2))
        .Value = datas
        .NumberFormat = "0.00""h"";-0.00""h"";;@"
    End With
End Sub
eric
 

eriiic

XLDnaute Barbatruc
Déjà il faudra 'Enregistrer sous...' en choisissant le Type *.xlsm si tu veux garder les macros.
Alt+F11 pour aller dans VBE
Clic-droit dans le projet 'Insertion module...', y coller le code.
Ajouter le ruban Développeur si tu ne l'as pas (clic-droit dessus et 'Personnaliser le ruban', le cocher dans la liste de droite)
Ensuite tu ajoutes un bouton Formulaire, clic-droit dessus et 'Affecter à une macro'
eric
 
Dernière édition:

eriiic

XLDnaute Barbatruc
dans VBE, à gauche tu as la fenêtre Explorateur des projets
Sur le tien (du nom du classeur), c'est ici qu'il faut cliquer droit.

Puisque tu dis débuter, après tu iras dans Outils / Options cocher 'Déclaration obligatoire des variables'.
Ca parait hyper chiant au début de toutes les déclarer (et ça l'est, ensuite c'est réflexe), mais ça t'évitera des heures de recherche de bugs si par mégarde tu utilises la variable parom alors que c'est param que tu voulais. Tu auras beau relire 10 fois tu ne la verras pas.
Et tant qu'à les déclarer autant les typer au plus près du besoin.
As Double, As Long, A String, etc Fait une recherche sur les types variables vba et apprend ça par coeur.
Non seulement tu auras un gain de vitesse, mais ça peut aussi t'alerter sur certaines erreurs.

Ensuite tu iras dans Affichage ajouter les fenêtre Propriétés et Espions
Et quand tu auras de la dispo fait une recherche sur débogage vba, apprendre au minimum à poser un point d'arrêt, à faire du pas à pas et à espionner la valeur d'une variable ou d'une expression.
Tu ne verras pas passer les 6 mois de confinement... ;-)
eric
 

GG56000

XLDnaute Nouveau
Je pense me rapprocher du but, mais j'ai due "merder" à un moment je pense ?? (voir PJ)

et je ne suis pas en confinement c'est pour ça que mes boss me demandent d'améliorer plusieurs taches.... ;)
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
9
Affichages
792

Statistiques des forums

Discussions
315 095
Messages
2 116 162
Membres
112 674
dernier inscrit
AKD