Microsoft 365 Format texte, calcul sur date

Piment

XLDnaute Occasionnel
bonjour à tous,
Je reviens vers vous afin de solliciter une fois de plus votre aide.
Lorsque je rentre un Code Postal dans mon tableau à l'aide de mon UserForm, lors de l'inscriptiondans le tableau, il m'affiche donnée en format texte. Comme lui indiqué que le format doit être numérique, puisque c'est du nombre qui est entré?
Autre problème que je n'arrive pas à résoudre: Comment calculer le temps écoulé entre deux Heures en (Heure d'Arrivée-Heure de Départ)? Le résultat doit être en numérique puisque je vais utiliser le résultat pour le multiplier par le coût de l'heure.
Milles merci pour vos réponses.
A très vite.
 

Pièces jointes

  • Essai CL .xlsm
    123.2 KB · Affichages: 12
Dernière édition:

JHA

XLDnaute Barbatruc
Bonjour à tous,

Une formule pour le second point de ta demande si tu as toujours le même format texte.
En "N2"
VB:
=MOD((TEXTE(GAUCHE(M2;2);"00")&":"&TEXTE(DROITE(M2;2);"00"))-(TEXTE(GAUCHE(L2;2);"00")&":"&TEXTE(DROITE(L2;2);"00"));1)

Concernant le code postal, est-ce gênant du teste ou du numérique?
Dans le tableau, c'est un nombre.
Formule en "F2" pour recherche de la ville.
VB:
=INDEX(CodesPostaux[Ville];EQUIV([@[Code Postal]]*1;CodesPostaux[[Code ]];0))

JHA
 

Pièces jointes

  • Essai CL .xlsm
    89.1 KB · Affichages: 3
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour,

Pour le format du code postal, quand tu charges la valeur à partir du UserForm:
Cellule.Value = CLng(me.TextBox1.Text)
Cellule.NumberFormat = "00000" ou Cellule.NumberFormat = "00 000" selon ce que tu veux.

Pour les heures qui sont chez toi dans des formats différents (String 15H30 ou Date 15:45) il faut d'abord que tu choisisses quel format tu utilises de manière générale dans ton fichier. Ensuite pour calculer le coût du temps passé sur la base d'un coût horaire il faut transformer les heures en décimal puis faire la différence et multiplier par le coût horaire.

TempsString = 15H30 => en décimal 10.50
TempsSingle = Heure + (Minutes / 60) par exemple 15 + 30/60 = 15.50
TempsSingle = Left(TempsString, 2) + Right(TempsString, 2) / 60

TempsDate = 15:45 => en décimal 10.75
TempsSingle = Hour(TempsDate) + Minute(TempsDate) / 60
 

Piment

XLDnaute Occasionnel
Autant pour moi, j'ai omis de joindre le fichier.
Bonjour,

Pour le format du code postal, quand tu charges la valeur à partir du UserForm:
Cellule.Value = CLng(me.TextBox1.Text)
Cellule.NumberFormat = "00000" ou Cellule.NumberFormat = "00 000" selon ce que tu veux.

Pour les heures qui sont chez toi dans des formats différents (String 15H30 ou Date 15:45) il faut d'abord que tu choisisses quel format tu utilises de manière générale dans ton fichier. Ensuite pour calculer le coût du temps passé sur la base d'un coût horaire il faut transformer les heures en décimal puis faire la différence et multiplier par le coût horaire.

TempsString = 15H30 => en décimal 10.50
TempsSingle = Heure + (Minutes / 60) par exemple 15 + 30/60 = 15.50
TempsSingle = Left(TempsString, 2) + Right(TempsString, 2) / 60

TempsDate = 15:45 => en décimal 10.75
TempsSingle = Hour(TempsDate) + Minute(TempsDate) / 60
Merci d'avoir répondu à ma demande.
J'attire ton attention sur le fait que je suis totalement novice en vba.
Aussi, je n'ai pas réussi à mettre en oeuvre ta solution.
Ce que je voudrais c'est que la TextBox "Total heures" affiche automatiquement le résultat entre "Heure Départ" et "Heure d'Arrivée".
Si tu pouvais me renvoyer le fichier corrigé, cela me permettra de comprendre le process, et pouvoir ainsi le reproduire si besoin.
Merci milles fois
 

Pièces jointes

  • Essai CL .xlsm
    123.2 KB · Affichages: 5

Piment

XLDnaute Occasionnel
Bonjour à tous,

Une formule pour le second point de ta demande si tu as toujours le même format texte.
En "N2"
VB:
=MOD((TEXTE(GAUCHE(M2;2);"00")&":"&TEXTE(DROITE(M2;2);"00"))-(TEXTE(GAUCHE(L2;2);"00")&":"&TEXTE(DROITE(L2;2);"00"));1)

Concernant le code postal, est-ce gênant du teste ou du numérique?
Dans le tableau, c'est un nombre.
Formule en "F2" pour recherche de la ville.
VB:
=INDEX(CodesPostaux[Ville];EQUIV([@[Code Postal]]*1;CodesPostaux[[Code ]];0))

JHA
Merci d'avoir répondu à ma demande.
J'ai testé ta solution, mais elle ne fait pas le calcul lorsque j'insère une nouvelle ligne dans le tableau.
Ta solution est intéressante mais j'aurais aimé que lorsque les heures de départ et les heures d'arrivée sont saisies dans l'UserForm, le "Total Heures" s'affiche automatiquement.
Concernant le Code Postal, là aussi, j'aurais aimé pouvoir éviter les formules directement dans les cellules. Une fois saisie dans l'UserForm, les cellules du tableau se mettent à jour.
Est-il possible d'utiliser la fonction "DateDiff" dan un code vba? Si oui comment faire.
Merci milles fois
 

Discussions similaires

Réponses
26
Affichages
810
Réponses
3
Affichages
310
Réponses
11
Affichages
1 K

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG