VBA - Compléter chaine de caractère

psychofred0

XLDnaute Nouveau
Bonjour,

Je me permets de solliciter votre aide concernant un bout de code que je souhaite ajouter dans ma procédure.
Je vous explique, je récupère des données sous un outil de suivi des temps que j'exploite ensuite.
Cependant, lorsque le temps cumulé est inférieur à 1H cela ne fonctionne pas correctement puisque le format n'est pas reconnu par exemple.

Voici un exemple du format qu'Excel a :
- lorsque c'est > à 1H : 01:10:00
- lorsque c'est < à 1H : :58:00 --> Là le fait que le 0 ne soit pas inclus dans la chaine de caractère lors de l'import des données bloque le traitement.

Je souhaite savoir comment je pourrais faire pour que le VBA scanne l'ensemble des cellules des colonnes concernées et ajoute un 0 avant le : afin de compléter la chaine de caractère de manière à ce que je puisse exploiter les données "temps" par la suite ?

J'espère avoir été clair dans mon explication.

En vous remerciant par avance,

Bonne lecture :)
 

TooFatBoy

XLDnaute Barbatruc
Re : VBA - Compléter chaine de caractère

Bonjour,

Une possibilité serait peut-être de regarder si la chaîne de caractère commence par ":", auquel cas ajouter "0" ou "00" devant.

Ce qui donnerait, pour la cellule A1, un truc du genre :
If Left(Range("A1").Value, 1) = ":" Then Range("A1").Value = "00" & Range("A1").Value
 

DoubleZero

XLDnaute Barbatruc
Re : VBA - Compléter chaine de caractère

Bonjour et bienvenue sur XLD, psychofred0, bonjour, Marcel32, le Forum,

Un exemple avec ces quelques lignes :

Code:
Option Explicit
Sub Format_heure_adapter()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Left(Cells(i, 1), 1) = ":" Then Cells(i, 1) = "0" & Cells(i, 1)
    Next i
    Columns(1).NumberFormat = "[h]:mm:ss;@"
    Application.ScreenUpdating = True
End Sub

A bientôt :)
 

psychofred0

XLDnaute Nouveau
Re : VBA - Compléter chaine de caractère

Re bonjour,

Merci pour votre aide, je suis reparti de ce que vous m'avez proposé pour construire mon code.

Voici ce que cela donne :

Code:
Sub MEF_Format_Heure()
'Déclarer variable pour la DTC
Dim vNbLignesDTC
Dim vNumLigneDTC
'Déclarer variable pour la DTT
Dim vNbLignesDTT
Dim vNumLigneDTT
'Déclarer variable pour la DTG
Dim vNbLignesDTG
Dim vNumLigneDTG
vNbLignesDTC = Range("E8").CurrentRegion.Rows.Count
For vNumLigneDTC = 8 To vNbLignesDTC Step 1
    If Left(Range("E" & vNumLigneDTC).Value, 1) = ":" Then Range("E" & vNumLigneDTC).Value = "00" & Range("E" & vNumLigneDTC).Value
Next vNumLigneDTC

vNbLignesDTT = Range("I8").CurrentRegion.Rows.Count
For vNumLigneDTT = 8 To vNbLignesDTT Step 1
    If Left(Range("I" & vNumLigneDTT).Value, 1) = ":" Then Range("I" & vNumLigneDTT).Value = "00" & Range("I" & vNumLigneDTT).Value
Next vNumLigneDTT

vNbLignesDTG = Range("O8").CurrentRegion.Rows.Count
For vNumLigneDTG = 8 To vNbLignesDTG Step 1
    If Left(Range("O" & vNumLigneDTG).Value, 1) = ":" Then Range("O" & vNumLigneDTG).Value = "00" & Range("O" & vNumLigneDTG).Value
Next vNumLigneDTG
End Sub

J'ai testé et cela fonctionne à merveille.
Je suis encore novice dans la programmation, surtout sur les boucles...

Merci pour l'aide, cela va faire gagner pas mal de temps aux utilisateurs :)

Bonne journée, et bon WE... :p:p
 

Discussions similaires

Réponses
12
Affichages
601

Statistiques des forums

Discussions
312 748
Messages
2 091 612
Membres
105 008
dernier inscrit
fatimazahrabouaouda16@gma