Microsoft 365 inPROUTbox fonctionne si texte et ne fonctionne pas si date

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 !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous les participants de ces fils 🙂, Bonjour le Forum 🙂,

Il y a quelques temps, j'avais posté ici :

Je remercie encore tous ls participants.
J'avais utilisé le code de job75 (Gérard) qui me convenait le mieux.
Je l'utilise depuis des mois il c'est nickel 🙂, il fonctionne parfaitement quand il s'agit de textes.

J'ai besoin aujourd'hui de l'utiliser en "clic droit" pour ça pas de souci.
Voici ce qui me pose problème :
Vous le verrez dans les cellules "C19 : D22", j'ai des dates que j'ai fréquemment à modifier.
Dans mon "usine à gaz" hyper verrouillée et protégée, pour ce faire, je suis obligé de faire des manipulations qui me prennent du temps.

Je souhaite faire mes modifs "en automatique avec "l'inPROUTbox".
Mais "l'inPROUTbox" ne prend pas la date avec les "espaceespace00:00:00" :
soit : il ne prend pas "espaceespace00:00:00" si pas d'heure dans la date,
soit : il ne prend qu'un seul espace avant l'heure "espace00:00:00" si heure dans la date,
alors que j'ai besoin de 2 espaces.
Auriez-vous la solution ?
Je joins le petit fichier test...
Grand merci à vous,
🙂
 

Pièces jointes

Dernière édition:
Re,
J'ai le droit à un second essai ? 🙄
VB:
Private Sub OkButton_Click()
Dim V, Nb, D, H
V = Trim(TextBox1) & " "
Nb = Application.Search(" ", V)
D = Mid(V, 1, Nb): H = Trim(Mid(V, Nb))
ActiveCell.Value = D & "  " & H
Unload Me
End Sub
Ca à l'air de couvrir toutes les configurations.
 
re
Bonjour Lionel
encore une fois tu veux injecter une date + heure avec un format dans une cellule
cette date ne sera alors pas calculable
d'autant plus par exemple avec le dernier essaie de @sylvanu ( que je salue au passage ) quand on double click sur la cellule le double espace se retransforme en simple espace

donc
au lieu de faire ça (mille excuses @sylvanu)
VB:
Private Sub OkButton_Click()
Dim V, Nb, D, H
V = Trim(TextBox1) & " "
Nb = Application.Search(" ", V)
D = Mid(V, 1, Nb): H = Trim(Mid(V, Nb))
ActiveCell.Value = D & "  " & H
Unload Me
End Sub
ce qui donne ceci
demo.gif



je ferais donc plutot ceci
VB:
Private Sub OkButton_Click()
    With ActiveCell
        .Value = CDate(Application.Trim(TextBox1))
        .NumberFormat = "dd/mm/yyyy  hh:mm:ss"
    End With
    Unload Me
End Sub
c'est simple comme un bonjour
le numberformat contient 2 espace de séparation

c'est l'avantage d'utiliser cdate qui reconnais les date tout court et les date avec time
le application.trim est là pour le cas ou tu mettrais 36 espaces entres les deux il régule a 1 espace de séparation et trim en même temps
en gros je tape "
10/05/2023 05:50:20 "
le application trim me le transforme en "10/05/2023 05:50:20"
et cdate me le reconnait en date + time
qui avec le number format sur la cellule devient ce que tu souhaite
et tes dates restent calculable
 
Re Lionel, bonsoir Patrick,
C'est vrai que c'est plus "fin".
J'ai essayé de coller au mieux à la demande.
Avec cette macro quand on entre 01/01/23 on obtient "01/01/2023 00:00:00" et pour 12:00 on obtient "00/01/1900 12:00:00".
Après, tout dépend de Lionel et de son besoin.
 
Bonsoir Lionel, sylvanu, Patrick,

Pourquoi pas ceci :
VB:
Private Sub OkButton_Click()
Dim dat As Variant
dat = Replace(Replace(TextBox1, " ", "/"), "//", " ")
If IsDate(dat) Then ActiveCell = CDate(dat) Else ActiveCell = ""
Unload Me
End Sub

Private Sub UserForm_Initialize()
TextBox1 = Format(ActiveCell, "dd mm yy  hh:mm")
'-----
End Sub
 

Pièces jointes

Bonjour @Usine à gaz 🙂,

Bon avec une inPROUTbox, je vais me lâcher en espérant ne pas en faire des caisses.

Il y a quelques temps, bloqué de longs jours chez moi, je m'étais amusé à faire une fonction qui transforme un texte en date+heure qui soit assez permissive sur son écriture. Hé oui! C'est pathétique d'en arriver là.
La fonction s'appelle : TexteEnDateHeure(ByVal x) (utilisable sur feuille Excel ou VBA)
L'écriture de x est assez libre (surtout pour les séparateurs) :
Date texte ou nombre ou logique
la Fonction
en vraies date heure
remarque
c'est une date avec heure : 11 - 12 / 2023 6h23m56s
11/12/2023 06:23:56
29/02/2129 février 2021 n'est pas bissextile
29 02_______2024
29/02/2024 00:00:00
29 février 2024 est bissextile
le 15 du 3ème mois de 1978 à 12h25
15/03/1978 12:25:00
27 6 \ 1997 ---- 9 : 21 + ,6
27/06/1997 09:21:06
12 12,10
12/12/2010 00:00:00
31/12/1899date inférieure à la date min 01/01/1901 00:00:00
16092145
date supérieure à date max 31/12/9999 00:00:00
4452
09/03/1912 00:00:00
47894,19
15/02/2031 04:33:36
2,466782407
date inférieure à la date min 01/01/1901 00:00:00
29/02/2024
29/02/2024 00:00:00
01/01/1901 00:00:00
01/01/1901 00:00:00
02/01/1902 00:00:00
02/01/1902 00:00:00
11/01/1900 00:00:00
date inférieure à la date min 01/01/1901 00:00:00
01/01/1900 12:45:01
date inférieure à la date min 01/01/1901 00:00:00
02/01/1900 23:59:59
date inférieure à la date min 01/01/1901 00:00:00
03/12/1900 00:00:00
date inférieure à la date min 01/01/1901 00:00:01
01/01/1901 00:00:00
01/01/1901 00:00:00
30/12/9999 23:59:59
30/12/9999 23:59:59
31/12/9999 23:59:58
date supérieure à date max 31/12/9999 00:00:00
31/12/9999 00:00:00
31/12/9999 00:00:00
VRAI
Valeur logique
FAUX
Valeur logique


Bon on s'amuse comme on peut.
 

Pièces jointes

Dernière édition:
Bonjour sylvanu 🙂, Bonjour Patrick 🙂, Bonjour Gérard 🙂, Bonjour mapomme 🙂, le Forum 🙂

Encore merci pour vos solutions.

sylvanu : ta solution fonction "presque bien" lol : si heure dans la date (01/01/2023 08:00:00), c'est bon mais pas bon si pas heure dans la date (01/01/2023 00:00:00),

Patrick, ton code fonctionne tout bien,
Gérard, ton code fonctionne tout bien,

mapomme : Encore merci pour ton fichier qui va me prendre la tête tout le WE lol 🙃🤪
🙂
 
re
bonjour lionel
ben c'est assez simple comme code en fait
ce qu'il faut retenir dans ce que je te dis
les dates, les numérique transmis d'un userform vers des cellules doivent toujours êtres transmis dans leur type
et c'est seulement sur le numberformat qu'il faut agir

il faudrait que tu enregistre ça dans ta tête une bonne fois pour toute , ça doit devenir un réflexe
avec numberformat tu peux pratiquement faire tout ce que tu veux même afficher autre chose tout en gardant la valeur

regarde
VB:
Sub test()
    With [A1]
        .Value = CDate(Date)
        .NumberFormat = """LIONEL"""
    End With
End Sub
tu vois on vois bien "LIONEL" dans la cellule pourtant dans la barre de formule on vois bien le numérique de la date
demo.gif


et toi tu t’entête a vouloir formater des variables date ou numériques en vba
ce qui est absolument inutile 😉
🤣
 
Bonjour Lionel, Job, Mapomme, Patrick,
@patrick,
ce qui est absolument inutile
Ce qui n'est pas tout à fait exact.
Si on reprend l'intitulé de ce post, et que Lionel voulait détecter ensuite ce double espace pour d'autres calculs, alors le format ne conviendrait pas, puisque justement ce double espace est "virtuel".
Là encore, c'est une affaire d'application.
Vous pourriez rétorquer que cette configuration n'est guère probable, mais il y a certaines usines à gaz où c'est utile, comme par exemple un format pré défini demandé par un outil tiers.
 
- 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

Réponses
6
Affichages
72
Réponses
6
Affichages
417
Retour