Microsoft 365 Format texte, calcul sur date

  • Initiateur de la discussion Initiateur de la discussion Piment
  • Date de début Date de début

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 !

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

Dernière édition:
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

Dernière édition:
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
 
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

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
 
- 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
Réponses
15
Affichages
1 K
Réponses
3
Affichages
579
Réponses
11
Affichages
2 K
Réponses
5
Affichages
883
Retour