Conversion nb décimal en heure:min

Bonjour,

Je cherche à convertir un nombre décimal en heure:min dans un code VBA.

Set cell_remplir = Range(ligne_rech).Offset(0, 4)
         'Conversion nb décimal en H:M
         ?????
         Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir

J'ai essayé cell_remplir=cell_remplir * 24. Mais cela ne marche pas vraiment. Merci d'avance de m'aider.

Salut Malitiosus,

Voici un exemple avec la donnée numérique en C2 et calcul de la donnée hh:mm:ss en C3 :

Sub Conversion()
    Range("C3").FormulaR1C1 = "=(RC[-1]/ 86400)*3600" 'colle la formule qui convertie ta donnée
    Range("C3") = Range("C3").Value 'supprime la formule, ne garde que le résultat
    Range("C3").NumberFormat = "[h]:mm:ss;@" 'formatage de la cellule au format hh:mm:ss
End Sub

Edit :

J'aurais dû mieux expliquer le problème. En fait, je développe un formulaire de recherche avec une listview. A partir de 3 critères de recherche, les réponses s'affichent dans une listview à partir du bouton "Rechercher". Je récupère les données externes d'un fichier d'une BD (liste des personnes). Voici le code complet de mon formulaire de recherche :

'Définition de la plage de recherche sur la feuille active
    Dim C
    Dim i As Integer
    Dim numero_ligne
    For Each C In Range([A2], [A65536].End(xlUp))

        'Critères de recherche
        If C.Offset(0, 8) Like "*" & Recherche_client.TXT_Nom.Text & "*" And C.Offset(0, 9) Like "*" & Recherche_client.TXT_Prénom.Text & "*" And C.Offset(0, 10) Like "*" & Recherche_client.TXT_DateN.Text & "*" Then
             'On place l'adresse de la variable de ligne_rech
             Dim ligne_rech
             Dim cell_remplir
             ligne_rech = C.Address
             If ligne_rech <> "$A$1" And C <> "" Then
                  With Classeur.ActiveSheet
                       'On remplit la première colonne de la listview
                       Recherche_client.LIST_Clients.ListItems.Add , , C.Offset(0, 8)

                       'On remplit les colonnes de la listview en partant de la gauche
                       Set cell_remplir = Range(ligne_rech).Offset(0, 9)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 10)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 3)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 4) 'Colonne de l'heure RDV
                       'Ligne à remplir?
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 6)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 0)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 1)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 5)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                       Set cell_remplir = Range(ligne_rech).Offset(0, 7)
                       Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir
                  End With
             End If
             'On ajoute 1 à LR pour la prochaine ligne de réponse (lign_rech)
             LR = LR + 1
        End If
    Next C

La ligne à remplir est dans une boucle. J'ai essayé d'écrire R[ligne_rech]C[0], sans succès. Merci et désolé, Gaz.

Re-bonjour !

Normal que R[ligne_rech] ne fonctionne pas puisque ici on a besoin d'un chiffre, d'un n° de ligne. Or ta variable ligne_rech n'est en réalité pas une ligne mais une adresse complète, ligne + colonne (du genre "A1")

Du coup effectivement R[ligne_rech] ne peut pas fonctionner en l'état

Essaie de mettre juste RC, puisque si j'ai bien compris tu veux repartir de la même cellule que celle qui contient ta donnée numérique

---> cell_remplir.FormulaR1C1 = "=(RC/ 86400)*3600"

Pour info si besoin :

Pour récupérer l'adresse de la cellule en entier : C.Address

Pour récupérer juste le n° de ligne de la cellule : C.Row

Pour récupérer juste le n° de colonne de la cellule : C.Column

Pour ton exemple ce serait plus facile avec le fichier :/

Bonjour,

J'ai mieux compris le code que tu proposes ainsi que mes erreurs mais dans la dernière ligne, l'erreur '424' persiste :

Set cell_remplir = Range(ligne_rech).Offset(0, 4) 'Heure RDV
         'Conversion nb décimal en H:M
         cell_remplir.FormulaR1C1 = "=(RC/86400)*3600"
         cell_remplir = cell_remplir.Value
         cell_remplir.NumberFormat = "[h]:mm" 'Erreur '424'
         Recherche_client.LIST_Clients.ListItems(LR).ListSubItems.Add , , cell_remplir

Faut-il une variable particulière? Mon fichier étant protégé, je ne peux pas le partager.

Quelqu'un peut m'aider, s'il vous plaît?

Si tu mets le numberformat que j'ai mis en exemple, tu as cette erreur ?

Non. Sinon, le format que tu as proposé est le bon (vérifié sur la feuille). Pourquoi @ d'ailleurs?

Donc si tu n'as pas ce message avec mon format et que c'est le bon, c'est OK ?

Pour le @ je ne saurais te dire : j'ai fait "enregistrer une macro", j'ai changé le format de ma cellule, et j'ai récupéré le code dans le module.

Les solution les plus simples sont souvent... les plus simples

J'ai mal vu ta question... En fait, il y a toujours cette erreur '424'. En essayant de résoudre ce problème, je suis allé voir "Format de la cellule" de la colonne "HeureRDV". Ces cellules ont pour format 13:50:55 dans l'onglet "Heure".

Rechercher des sujets similaires à "conversion decimal heure min"