Microsoft 365 InputBox : saisir ou modifier le contenu de la cellule cliquée à l'aide de l'InputBox

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un beau dimanche :)

Pour des besoins dans l'un de mes fichiers de travail, je voudrais saisir ou modifier le contenu de la cellule cliqué à l'aide de l'InputBox :

l'InputBox prenant le contenu de la cellule (vide ou non), je saisi dans l'InputBox,
1 - à la validation, la cellule cliquée prend la valeur de l'InputBox,
2 - si j'annule, la cellule cliquée garde sa valeur (vide ou non).

J'ai fait des recherches (peut-être mal cherché) et des tentatives sans trouver comment coder.
Auriez-vous la solution ?

Un grand merci à toutes et à tous,
Je mets un p'tit fichier test et je continue à chercher.
Amicalement,
lionel :)
 

Pièces jointes

  • inputBox_test.xlsm
    14.4 KB · Affichages: 14

TooFatBoy

XLDnaute Barbatruc
J'ai besoin qu'il prenne le tout "15.03.2022 00:00:00" pour pouvoir tout restituer modifié ou non.
Je viens de faire un test, et en saisissant 15.03.2022 00:00:00 il n'y a aucun problème, tout est parfaitement pris en compte. Du coup je pige pas trop la question. :(

Remarque, je n'ai essayé que dans la colonne F.
Mais il n'y a pas de raison pour que ça fonctionne différemment pour les colonnes C, D, et E.



Je détaille ici les deux choses que j'ai faites :

"15.03.2022 02:30:00" la proposition dans inPROUTbox est bien "15.03.2022 02:30:00",
J'ai donc mis 15.03.2022 02:30:00 dans une cellule de la colonne F.
J'ai double-cliqué dessus.
La fenêtre m'a bien affiché 15.03.2022 02:30:00 en entier.
J'ai validé.
La cellule affiche bien 15.03.2022 02:30:00 en entier.

Mais si j'ai "15.03.2022 00:00:00, inPROUTbox ne prend que ""15.03.2022" (il ne prend plus la suite " 00:00:00",
J'ai donc mis 15.03.2022 00:00:00 dans une cellule de la colonne F.
J'ai double-cliqué dessus.
La fenêtre m'a bien affiché 15.03.2022 00:00:00 en entier.
J'ai validé.
La cellule affiche bien 15.03.2022 00:00:00 en entier.

Franchement, je ne comprends pas pourquoi chez toi une partie du texte de la cellule est tronqué. 🤔
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
En fait j'ai fait plusieurs tests...

Au début j'ai testé directement, sans modifier le code ni les valeurs des cellules.
Là, effectivement la box n'affiche pas les heures nulles.
J'ai supprimé le CSTR et là la box affiche les heures nulles. (ou du moins c'est ce qu'il m'a semblé)

En suite, j'ai regardé la question de plus près et seulement là j'ai vu que tu ne parlais plus d'heures mais de texte, et j'ai donc pris en compte qu'il ne fallait pas prendre directement les valeurs dans les cellules puisque ce sont des dates, donc j'ai modifié le contenu comme expliqué en #31 et tout fonctionne comme expliqué en #31, que ce soit avec CSTR ou sans.


[edit]
Juste pour être sûr de ce que je te raconte, je viens de refaire tous les tests : date dans une cellule, texte dans une cellule.
Je n'y comprends rien !!! Maintenant, avec une date dans la cellule, j'ai le même problème que chez toi : avec ou sans CSTR c'est pareil, la box n'affiche pas les heures nulles !
Bref, je suis une grosse quiche qui ne pourra t'aider. Réellement désolé Yoyo. :( :( :(
[/edit]
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Mais Important : les heures doivent rester des heures et pas des textes.
Dans ce cas il ne faut pas saisir des . mais des / comme séparateur.
Mais ça, on en a déjà parlé pas mal de fois. ;)


Et du coup je te propose quand même un dernier essai de ma part :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim nom$

    If Not Application.Intersect(Target, Range("c6:f15")) Is Nothing Then
        Application.EnableEvents = False
        nom = inPROUTbox.value("saisir ,Modifier ou Annuler", "Ecrire, modifier et OK ou Annuler", format(Target.value, "dd/mm/yyyy hh:mm:ss"))
        If nom <> "" Then Target = CDate(nom)
        [a1].Select
        Application.EnableEvents = True
        Exit Sub
    End If

End Sub
Pour que ça puisse fonctionner il faut changer, dans le "Module 1", le nom de la macro "format" en autre chose.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Si Job est là, ou quelqu'un d'autre qui connait VBA, j'aurais une question...

Il me semblait qu'on pouvait utiliser quelque chose du genre Format(Target.value, "dd/mm/yyyy hh:mm:ss" mais mon VBE ne transforme pas "format" en "Format", donc je me dis qu'il ne reconnait pas "format" comme fonction interne.
En cherchant dans le code, j'ai trouvé une macro qui s'appelle "format"...

Première question : est-ce que "Format" existe bien en tant que fonction interne à VBA ?

Deuxième question : si "Format" est une fonction interne à VBA, pourquoi ce nom est-il accepté comme nom de macro ?
N'y a-t-il pas risque de confusion, même si une macro et une fonction interne sont bien deux choses différentes ?
 

Usine à gaz

XLDnaute Barbatruc
Si Job est là, ou quelqu'un d'autre qui connait VBA, j'aurais une question...

Il me semblait qu'on pouvait utiliser quelque chose du genre Format(Target.value, "dd/mm/yyyy hh:mm:ss" mais mon VBE ne transforme pas "format" en "Format", donc je me dis qu'il ne reconnait pas "format" comme fonction interne.
En cherchant dans le code, j'ai trouvé une macro qui s'appelle "format"...

Première question : est-ce que "Format" existe bien en tant que fonction interne à VBA ?

Deuxième question : si "Format" est une fonction interne à VBA, pourquoi ce nom est-il accepté comme nom de macro ?
N'y a-t-il pas risque de confusion, même si une macro et une fonction interne sont bien deux choses différentes ?
Bonjour TooFatBoy merci pour ton #post36,
Dans mon fichier test "15.03.2022 00:00:00" les "." ne sont que le formatage de cellules :
1656831853391.png

Mais tu ne m'avais pas dit au #post31 que ça fonctionne chez toi ?
"Je viens de faire un test, et en saisissant 15.03.2022 00:00:00 il n'y a aucun problème, tout est parfaitement pris en compte. Du coup je pige pas trop la question. :("
Tu m'envoies ton fichier test pour que je vois chez moi ?
Merci à toi :)
 

job75

XLDnaute Barbatruc
Bonjour TooFatBoy, Lionel, le forum,
Première question : est-ce que "Format" existe bien en tant que fonction interne à VBA ?

Deuxième question : si "Format" est une fonction interne à VBA, pourquoi ce nom est-il accepté comme nom de macro ?
N'y a-t-il pas risque de confusion, même si une macro et une fonction interne sont bien deux choses différentes ?
Cette macro écrite seule va bien :
VB:
Sub a()
Format(40000.5123, "dd/mm/yyyy hh:mm:ss")
End Sub
Mais si l'on écrit :
VB:
Sub Format()
MsgBox Format(40000.5123, "dd/mm/yyyy hh:mm:ss")
End Sub
il y a erreur de compilation, il est facile de comprendre pourquoi !

A+
 

TooFatBoy

XLDnaute Barbatruc
Merci Job75 pour ta réponse, mais hélas je ne l'ai pas comprise, et chez moi les deux macros plantent. :(

Pour la première macro, il faut que j'affecte le "Format" à une variable pour qu'elle ne provoque pas d'erreur.

Pour la deuxième macro, j'ai une erreur de compilation, mais tu as dû te tromper car tu l'as nommée "Format".
Non, ça devait être fait exprès pour me montrer qu'on ne peut pas créer de macro portant le nom "format".
Mais ça c'est normal si "Format" est une fonction interne à VBA.



Je viens de constater qu'avec un classeur vierge je n'ai pas de problème avec "Format".
Si je saisi "format", lors de la validation de la ligne, c'est bien transformé en "Format", donc c'est bien reconnu comme fonction interne à VBA.

En revanche, avec le fichier de Yoyo, vu qu'il y a une macro qui s'appelle "format", si j'essaye d'utiliser la fonction interne de VBA, bien sûr ça plante...

Donc je comprends que je n'avais pas rêvé : la fonction interne à VBA "Format" existe bien.
Ce qui répond à la première de mes deux questions précédentes.

La deuxième question reste entière : mais devient plus précisément "comment yoyo a-t-il fait pour créer une macro nommée "format" dans son usine à gaz ?!?".
Est-ce parce qu'il a utilisé un Excel dans lequel la fonction interne "Format" n'existe pas ???
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bonjour Gérard :)
J'ai bien compris ton #Post38
Merci :)
Je crois que ça s'adressait plus particulièrement à moi, pour essayer de répondre à mes deux questions précédentes.


Bonjour @TooFatBoy merci pour ton #post36
#36 ne t'était pas vraiment adressé, puisque c'était une question que je posais (en particulier à Job75) par rapport au problème que j'ai rencontré dans ton classeur. ;)

En revanche, #35 était bien pour toi. L'as-tu testé ???
 

TooFatBoy

XLDnaute Barbatruc
Bonjour @TooFatBoy merci pour ton #post36
36 ne t'était pas vraiment adressé, puisque c'était une question que je posais par rapport au problème que j'ai rencontré dans ton classeur.)

En revanche, #35 était bien pour toi. L'as-tu testé ???

Et si tu sais répondre à la question en gras dans #40, je t'écoute avec grand plaisir.
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
"En revanche, #35 était bien pour toi. L'as-tu testé ???"
Oui et je t'ai répondu avec mon #post37 :)

Pour info :
"comment yoyo a-t-il fait pour créer une macro nommée "format" dans son usine à gaz ?!?"."
Le code Format n'est pas utilisé, je l'ai juste gardé pour test :)
 

TooFatBoy

XLDnaute Barbatruc
#37 n'a rien à voir.
Tu y dis que dans ton fichier les points servent au formatage, or je n'ai rien vu qui soit formaté avec des points dans ton fichier.
Les seules points que j'ai vus, sont dans ta question de #25.

Et ça ne dit pas si la macro que j'ai proposée fonctionne ni même si tu l'as testée.
Tu dis même que tu attends un fichier de ma part pour tester. ;)
 

Discussions similaires

Statistiques des forums

Discussions
315 134
Messages
2 116 613
Membres
112 811
dernier inscrit
shade1452