Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Utilisation de la fonction texte() en vba

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 !

thespeedy20

XLDnaute Occasionnel
Bonjour à tous

je dois convertir une colonne en format texte avec personnalisation..

sur une cellule j'utilise la fonction texte : =texte("A1";"hh:mm")

j'aimerais pouvoir automatiser cette fonction sur toute une colonne en vba.

avec l'enregistreur de macro, j'obtiens ceci : ActiveCell.FormulaR1C1 = "=TEXT(RC[-5],""hh:mm"")"

Pouvez-vous me donner un petit coup de main...

Merci d'avance

Oli
 
Solution
Autre version optimisée :
VB:
Option Explicit

Private Sub Job(cel As Range)
  Dim chn$: If cel = "" Then Exit Sub
  chn = Format(Hour(cel), "00") & ":" & Format(Minute(cel), "00")
  cel.NumberFormat = "@": cel = chn
End Sub

Sub conversion()
  Dim dlg&, lig&
  dlg = Cells(Rows.Count, 6).End(3).Row: Application.ScreenUpdating = 0
  For lig = 2 To dlg: Job Cells(lig, 6): Job Cells(lig, 7): Next lig
End Sub
soan
Bonsoir Oli,

Pour une cellule, par exemple D5, essaye : [D5].NumberFormat = "hh:mm"

Pour toute la colonne A : Columns(1).NumberFormat = "hh:mm"

Sinon, tu as aussi : MsgBox Format([D5], "hh:mm")

soan
 
Ton fichier en retour ; clique sur ton bouton
➯ tes 2 colonnes sont en Format Texte.

Tu peux vérifier sur la feuille le format des cellules
des colonnes F et G ; regarde aussi le code VBA.


----------------------------------------------------------

Mais je ne pense pas que ce soit le résultat attendu !
alors envoie un autre fichier avec des heures qui
soient significatives : pas que des 00:00 !


soan
 

Pièces jointes

Désolé pour le retard. (c'était moins facile que prévu, mais cette fois ça devrait aller !)

Code:
Option Explicit

'H2S : Hour To String

Private Function H2S(HM As Date) As String
  H2S = Format(Hour(HM), "00") & ":" & Format(Minute(HM), "00")
End Function

Sub conversion()
  Dim chn$, dlg&, lig&: dlg = Cells(Rows.Count, 6).End(3).Row: Application.ScreenUpdating = 0
  For lig = 2 To dlg
    With Cells(lig, 6)
      If .Value <> "" Then chn = H2S(.Value): .NumberFormat = "@": .Value = chn
    End With
    With Cells(lig, 7)
      If .Value <> "" Then chn = H2S(.Value): .NumberFormat = "@": .Value = chn
    End With
  Next lig
End Sub
Edit : j'ai optimisé le code VBA ; voir mon post #10

soan
 

Pièces jointes

Dernière édition:
Ajout : tu pourras voir que pour des heures qui commencent par 0
comme 08:30, le zéro du début sera conservé après conversion ;
idem pour les minutes.

(même si ton fichier exemple ne contient pas de telles heures)

Si tu as besoin d'une autre adaptation, n'hésite pas à demander ! 🙂


soan
 
Dernière édition:
Autre version optimisée :
VB:
Option Explicit

Private Sub Job(cel As Range)
  Dim chn$: If cel = "" Then Exit Sub
  chn = Format(Hour(cel), "00") & ":" & Format(Minute(cel), "00")
  cel.NumberFormat = "@": cel = chn
End Sub

Sub conversion()
  Dim dlg&, lig&
  dlg = Cells(Rows.Count, 6).End(3).Row: Application.ScreenUpdating = 0
  For lig = 2 To dlg: Job Cells(lig, 6): Job Cells(lig, 7): Next lig
End Sub
soan
 

Pièces jointes

- 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

  • Question Question
Microsoft 365 comptage d'heures
Réponses
6
Affichages
496
Réponses
20
Affichages
815
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…