Ecriture dans cellule

L

Ludwig

Guest
Bonjour à tous et à toues,

En piochant à droite à gauche, j'ai trouvé un code qui me permet de "forcer" l'écriture d'un TextBox cad mettre tous les x caractères un symbole ou mot. Mais je n'arrive pas à l'adapter pour faire la même chose dans une cellule.

Voici "mon" code:

Private Sub TextBox1_Change()

Dim FormatDate As String
FormatDate = TextBox1.Value
Select Case Len(FormatDate)
Case 2
FormatDate = FormatDate & "/"
End Select
Select Case Len(FormatDate)
Case 5
FormatDate = FormatDate & "/20"
End Select
TextBox1.Value = FormatDate
End Sub

Si un âme sensible passai par là, juste pour donner un coup d'oeil ou plus pourquoi pas. En fait un coup de main ne serai pas de refus...

Merci par avance et à bientôt

Ludwig
 
@

@+Thierry

Guest
Salut Ludwig, le Forum

Ce que tu peux faire dans un Control ActiveX de UserForm ou un ActiveX OLEObject sur feuille n'est pas forcément applicable à une cellule.

Dans ton cas l'évènement Change d'une TextBox ne réagit pas de la même manière (enfin plus exactement au même moment) que l'évènement "Worksheet_Change".

En effet le premier est inter-actif quand on tape, tandis que le second se déclenche à la sortie de la cellule...

Par conséquent, le code ci-dessus (qui vient de Ti si je ne m'abuse), n'est pas utilisable dans un cellule.

Ceci dit, il doit bien y avoir un moyen avec des Mid de faire construire ta syntax une fois que l'on est sorti de la cellule...

Exemple à mettre dans le Private Module de la Feuille en Question :

NB le format des cellule doit être le format "Standard"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TheString As String, TheDate As String
Dim Wrong As Boolean

If Wrong = False Then

If Not IsNumeric(Target.Value) Then Exit Sub
TheString = Target.Value

If Len(TheString) = 3 Then 'Format 0112 (le premier zéro est enlevé par Excel donc 3 digits)
TheDate = Mid(TheString, 1, 1) & "/" & Mid(TheString, 2, 3) & "/2002"
End If

If Len(TheString) = 4 Then
TheDate = Mid(TheString, 1, 2) & "/" & Mid(TheString, 3, 4) & "/2002"
End If

On Error GoTo ErrorHandler
Target.Value = CDate(TheDate)
End If

Exit Sub
ErrorHandler:
If Err = 13 Then Target = "": Target.Activate: Wrong = True
End Sub


Mais c'est "Just for the Fun", car tout dépend aussi du format des cellules (ici Standard pour que çà marche) Donc pour 3 caractères de moins à taper, je ne sais pas si çà en vaut la chandelle, car c'est très peu fiable.....

Bon Travail
@+Thierry
 
L

Ludwig

Guest
Bonjour Thierry,

En fait ce code je l'ai emprunté dans une de tes démos, USF-GestionContact. Rien ne t'échappe...

J'ai essayé tes lignes de code, mais ça ne marche pas...

Sinon, je pensai faire comme ça :

=GAUCHE(B1;2) & " / " & STXT(B1;4;2) & " / 20" & DROITE(B1;2)

mais là aussi ça coince. Le mois n'est pas correcte cad que '121004' me donne '12 / 00 / 2004', c'est dommage!!!

Comme tu dis, je ne sais pas si ça vaut la chandelle. Je pousse un peu pour voir ce que je peux faire. Mais cette fois ci je me contenterai de ce que j'ai déjà.

Dans tous les cas je te remercie beaucoup d'avoir pris le temps de répondre à ma question.

Encore merci à toi et aux autres participants.

Au fait une question. COMMENT faites vous pour afficher les gifs dans les posts. Vous vous éclatez avec ça et je dois dire que c'est ça m'amuse aussi.

Bref, bonne soirée et bon courage pour demain, c'est Lundi...

A bientôt

Ludwig
 
@

@+Thierry

Guest
Re Salut Ludwig,

Non je n'ai pas dit que çà ne marchait pas, j'ai dit que ce n'était pas fiable

Je te joins mon fichier de travail.

Pour poster des GIFs animés dans ce PHorum (Forum PHP) il faut faire ceci :


Tu peux aussi télécharger PostVL dans la partie XLD Goodies de ce site, mais attention aux ressources de ton système si tu fais beaucoup de multi-tâches simultanées.

Bonne soirée
@+Thierry
 

Pièces jointes

  • XLD-Evenementielle-Date-4digit.zip
    10.7 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 822
dernier inscrit
kader55