Alerte de saisie de mot abregé
Salut le forum
Je saisi des noms de mes clients de meme que le nom de leur parent dans la plage B13 :B16.
Je ne souhaite pas que l’on puisse abréger les noms dans ces cellules.
Ex traopur kaka junior et non traopur k junior.
Autrement dit, si dans les cellules citées, il y’a une seule lettre suivi d’un espace ou une lettre suivi d’un point et un espace, que l’agent soit alerté.
Ex : k ou k. est une forme d’abréviation.
N.B : si possible qu'il y'ait blocage pour contraindre la personne à corriger le mot abregé avant de continuer.
Merci pour vos contributions
Salut Yvouille
C'est super après l'essai que j'ai réalisé.
J'ai un petit soucis que j'avais pas soulevé.
Au faite j'ai déjà le code ci-dessous dans la feuille DONNE de mon cas réel.
Pouvez-vous ci-possible fusionner les 2 codes (celui que vous venez de réaliser et celui ci-dessous)?
Merci
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValSaisie
Dim P As Integer
On Error GoTo fin
If Not Intersect(Range("B6,B11,B30,B10,B33,B34"), Target) Is Nothing Then
Application.EnableEvents = False
ValSaisie = Target
Application.Undo
P = InStr(Target, ValSaisie)
If P > 0 Then
Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)
If Right(Target, 1) = "+" Then
Target = Left(Target, Len(Target) - 1)
End If
Else
If Target = "" Then
Target = ValSaisie
Else
Target = Target & "+" & ValSaisie
End If
End If
Application.EnableEvents = True
End If
Application.EnableEvents = True ' Dans tous les cas on remet les évènements en service
End SubRe,
Pourquoi ne pas l'avoir fourni de suite ??zombe a écrit :Au faite j'ai déjà le code ci-dessous dans la feuille DONNE de mon cas réel.
Es-tu certain que ton code fonctionne tel que fourni ? J'ai fusionné les deux codes et le débogueur m'indique qu'il manque l'étiquette "Fin". Je l'ai mise n'importe où afin de tester la fusion des deux codes et ça passe, mais tu vas devoir revoir cette partie de ton code.
Cordialement.
Salut Yvouille et le forum
Merci pour votre solution qui marche parfaitement.
Avec votre permission je souhaite que vous revoyer cette partie pour code :
Target = ""
Target.ActivateSi j'ai bien compris, cela remet la cellule à vide et l'active à nouveau.
Au lieu de la remettre à vide pour que l'on reprenne la saisie, n'est-il pas possible qu'il sélectionne la partie ou y'a l'abréviation?
Merci pour tout
Bonjour le fil, Zombe
Sélectionner le texte me parait très difficile, en revanche tu peux demander le texte de remplacement dan s un Inputbox()
et ce, jusqu'à ce qu'une bonne valeur soit saisie
For i = 0 To UBound(Tableau)
Do While Len(Tableau(i)) = 1 Or Right(Tableau(i), 1) = "."
MsgBox ("La saisie d'une lettre seule ou d'un point est interdite")
NewTxt = InputBox("Merci de saisir la valeur de remplacment pour [" & Tableau(i) & "]", "NOUVELLE VALEUR ...")
If NewTxt <> "" Then
For NbMot = 0 To i
Pos = Pos + Len(Tableau(NbMot)) + 1
Next NbMot
Pos = Pos - 2
' Remplacer la partie qui ne va pas
Application.EnableEvents = False
Target.Value = Left(Groupe_mots, Pos) & NewTxt & Mid(Groupe_mots, Pos + 2)
Application.EnableEvents = True
End If
Pos = 0 ' Remettre à zéro la position
' Redéfinir le tableau
Tableau = Split(Target.Value, " ")
Loop
Next iA+
Salut Bruno et merci pour votre idée magnifique.
En déclarant vos nvelles variable comme:
Dim Pos%
Dim NbMot%
Ca marche bien.
Encore merci