Créer un correcteur d'orthographe dans des textboxs

zephir94

XLDnaute Impliqué
Bonsoir à tous,

Peut on mettre un correcteur d'orthographe au fur et à mesure de la saisie dans une textbox ?
Un peu comme la fenêtre du forum quand on écrit un message ?

L'enregistreur de macro appelle :

Code:
cells.CheckSpelling SpellLang:=1036

Bonne soirée à tous.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Créer un correcteur d'orthographe dans des textboxs

Bonjour zephir94, le forum,

Si l'on se contente d'une vérification ponctuelle c'est assez évident :

Code:
Private Sub TextBox1_KeyPress(ByVal K As MSForms.ReturnInteger)
'touche /
If K <> 47 Then Exit Sub
K = 0: [A1] = TextBox1
[A1].CheckSpelling SpellLang:=1036
TextBox1 = [A1]: [A1] = ""
End Sub
Fichier joint.

Bonne journée.
 

Pièces jointes

  • Orthographe TextBox(1).xlsm
    20.1 KB · Affichages: 63

job75

XLDnaute Barbatruc
Re : Créer un correcteur d'orthographe dans des textboxs

Re,

Vérification en cours de frappe, ça n'a toujours pas l'air d'une usine à gaz.

Le code de l'USF :

Code:
Private Sub TextBox1_KeyPress(ByVal K As MSForms.ReturnInteger)
t = TextBox1: p = InStrRev(TextBox1, " ")
Application.OnTime 1, "Orthographe"
End Sub
Le code dans Module1 :

Code:
Public t$, p% 'variables mémorisées

Sub USF()
UserForm1.Show 0
End Sub

Sub Orthographe()
With UserForm1.TextBox1
  If .Text = t & " " Then _
    If Not Application.CheckSpelling(Mid(t, p + 1)) _
      Then .SelStart = p: .SelLength = Len(t) - p
End With
End Sub
Fichier (2).

Edit : chez moi sur Excel 2013 le curseur devenait invisible...

A tout hasard j'ai mis la propriété EnterKeyBehavior de la TextBox à True...

A+
 

Pièces jointes

  • Orthographe TextBox(2).xlsm
    22.5 KB · Affichages: 59
Dernière édition:

job75

XLDnaute Barbatruc
Re : Créer un correcteur d'orthographe dans des textboxs

Re,

Fichier (3) qui combine les 2 solutions précédentes :

Code:
Private Sub TextBox1_KeyPress(ByVal K As MSForms.ReturnInteger)
Dim L%
t = TextBox1: L = TextBox1.SelLength
If K = 47 And L Then
  K = 0
  p = TextBox1.SelStart
  [A1] = Mid(t, p + 1, L)
  [A1].CheckSpelling SpellLang:=1036
  TextBox1 = Left(t, p) & [A1] & Mid(t, p + L + 1)
  [A1] = ""
Else
  p = InStrRev(TextBox1, " ")
  Application.OnTime 1, "Orthographe"
End If
End Sub
A+
 

Pièces jointes

  • Orthographe TextBox(3).xlsm
    23.2 KB · Affichages: 59
Dernière édition:

job75

XLDnaute Barbatruc
Re : Créer un correcteur d'orthographe dans des textboxs

Re,

Sur les fichiers (2) et (3), avec Excel 2010 et 2013, le curseur devient invisible...

j'ai mis la propriété EnterKeyBehavior de la TextBox à True, finalement sans effet.

J'ai essayé avec TabKeyBehavior et DragBehavior sans plus de succès.

Si quelqu'un a une idée ?

A+
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Créer un correcteur d'orthographe dans des textboxs

Désolé job75 :eek:,

j'ai répondu avec mon iPhone et en version mobile on ne peut pas corriger un message,
je n'ai pas eu la possibilité de modifier et de te présenter mes plus plates excuses avant maintenant
 

job75

XLDnaute Barbatruc
Re : Créer un correcteur d'orthographe dans des textboxs

Re,

Voici qui est beaucoup mieux.

Le code de l'USF du fichier (2 bis) :

Code:
Dim t$, espace As Boolean 'variables mémorisées

Private Sub TextBox1_KeyPress(ByVal K As MSForms.ReturnInteger)
t = TextBox1
espace = K = 32
End Sub

Private Sub TextBox1_Change()
Dim d%, p%
If Not espace Then Exit Sub
espace = False
With TextBox1
  For d = 1 To Len(.Text)
    If Mid(.Text, d, 1) <> Mid(t, d, 1) Then Exit For
  Next
  p = InStrRev(RTrim(Left(t, d - 1)), " ")
  If Not Application.CheckSpelling(RTrim(Mid(t, p + 1, d - 1 - p))) _
    Then .SelStart = p: .SelLength = d - 1 - p
End With
End Sub
Le code de l'USF du fichier (3 bis) :

Code:
Dim t$, espace As Boolean 'variables mémorisées

Private Sub TextBox1_KeyPress(ByVal K As MSForms.ReturnInteger)
Dim L%, p%
t = TextBox1: L = TextBox1.SelLength
If K = 47 And L Then
  K = 0
  p = TextBox1.SelStart
  [A1] = Mid(t, p + 1, L)
  [A1].CheckSpelling SpellLang:=1036
  TextBox1 = Left(t, p) & [A1] & Mid(t, p + L + 1)
  [A1] = ""
Else
  espace = K = 32
End If
End Sub

Private Sub TextBox1_Change()
Dim d%, p%
If Not espace Then Exit Sub
espace = False
With TextBox1
  For d = 1 To Len(.Text)
    If Mid(.Text, d, 1) <> Mid(t, d, 1) Then Exit For
  Next
  p = InStrRev(RTrim(Left(t, d - 1)), " ")
  If Not Application.CheckSpelling(RTrim(Mid(t, p + 1, d - 1 - p))) _
    Then .SelStart = p: .SelLength = d - 1 - p
End With
End Sub
Il n'y a plus de problème avec le curseur.

A+
 

Pièces jointes

  • Orthographe TextBox(2 bis).xlsm
    23.1 KB · Affichages: 44
  • Orthographe TextBox(3 bis).xlsm
    24 KB · Affichages: 57
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Créer un correcteur d'orthographe dans des textboxs

Merci job,

J'ai testé la ver 2 et 3 de ton dernier post,
je vais essayer d'ingérer la version 3 dans mon userform.
La variable t peut elle être renommée ? je l'utilise déjà dans mon usefrorm ?
Peut-on directement ouvrir le correcteur ?

Un grand merci pour tout
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Créer un correcteur d'orthographe dans des textboxs

Re,

J'ai légèrement modifié avec les RTrim les fichiers (2 bis) et (3 bis).

Vous pouvez bien sûr toujours modifier les noms des variables.

Pour ouvrir le correcteur d'orthographe utilisez la version (3 bis) et tapez / quand le mot est en surbrillance.

A+
 

zephir94

XLDnaute Impliqué
Re : Créer un correcteur d'orthographe dans des textboxs

J'ai utilisé la version 3 et réussi à l'intégrer ( et changer la variable T que j'utilisais en public ) dans mon userform, peut on lancer directement la fenêtre de correction à la place d'utiliser / ?
Un grand merci pour tout ;)
 

Discussions similaires

Réponses
17
Affichages
636

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87