Return avec début de ligne accompagné d'un webding ou d'un caractère prédéterminé

  • Initiateur de la discussion Initiateur de la discussion dePOI
  • Date de début Date de début

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 !

D

dePOI

Guest
Bonjour à tous,

Dans un TxtBox je souhaite:
1) Que ma première ligne affiche un Webding ou n'importe quel autre caractère sitôt que le curseur est pointé dans cette TxtBox lors de la saisie dans mon formulaire.
2) Que cette fonction se répètent pour chaque appui sur la touche RETURN.

3) Plus ardu dans un autre TxtBox:

Que ces caractères soient remplacés par un groupe de type "1) " avec la particularité d'incrémenter le chiffre "1) ","2) ","3) " etc...

Est-ce faisable?
Merci pour d'éventuelles propositions.
 
Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Bonjour à tous,

Un début de piste ?

VB:
Private Sub TxtETAPES_Enter()
Dim n As Long, i As Long, p As Long, s As String
 s = TxtINGREDIENT
 Do
 p = InStr(s, Chr(164) + " ")
 If p > 0 Then
  n = n + 1
  s = Replace(s, Chr(164) + " ", n & ") ", , 1)
 End If
 Loop While p > 0
 TxtETAPES = s
End Sub

Private Sub TxtINGREDIENT_Change()
Dim T, s

s = TxtINGREDIENT
If Right(s, 1) = Chr(10) Then
 s = TxtINGREDIENT
  If Mid(s, 1, 2) = Chr(164) & " " Then s = Mid(s, 3)
  s = Replace(s, Chr(164) & " ", "")
  T = Split(s, Chr(10))
  TxtINGREDIENT = Chr(164) & " " & Join(T, Chr(164) & " ")
  TxtINGREDIENT.SelStart = Len(TxtINGREDIENT)
ElseIf Mid(s, 1, 2) <> Chr(164) & " " Then
 s = Chr(164) & " " & s
 TxtINGREDIENT = s
 TxtINGREDIENT.SelStart = Len(TxtINGREDIENT)
End If

End Sub
 

Pièces jointes

Dernière édition:
Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Bonjour et merci mapomme,
Début de piste? Bien sur! Je vais adapter et tester cela.
A bientôt pour les résultats.
Merci encore.
 
Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Bonsoir mapomme,
Je n'ai pas pu tester plus vite ton code.
Ça vas dans le sens souhaité, cependant la partie concernant les ingrédients fonctionne presque comme désiré (mais je vais m'en satisfaire) par contre la partie concernant les étapes pose problèmes.
En effet une fois la partie INGREDIENT saisie, et que je passe à ETAPES j'ai bien une numérotation qui s'effectue mais reprenant la saisie de INGREDIENT, comme ceci

INGREDIENT ETAPES
¤ SEL 1) SEL
¤ POIVRE 2) POIVRE
¤ PAPRIKA 3) PAPRIKA
La partie ETAPES semble soumise aux saisies dans INGREDIENT
Peux-tu m'expliquer cela. Je ne saisi pas pourquoi dans ton code la variable "s" dans ETAPES fait référence à TxtINGREDIENT. J'ai essayé en faisant cette modification çà ne marche pas......?
A te lire et en te remerciant pour ton aide
A bientôt.
 
Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Bonsoir POI,
cependant la partie concernant les ingrédients fonctionne presque comme désiré (mais je vais m'en satisfaire)

Quels sont les points qui clochent ?


Pour le second point, j'ai sans doute mal interprété ta demande:
3) Plus ardu dans un autre TxtBox:

Que ces caractères soient remplacés par un groupe de type "1) " avec la particularité d'incrémenter le chiffre "1) ","2) ","3) " etc...

J'avais compris par "Que ces caractères soient remplacés" qu'il s'agissait des caractères spéciaux évoqués dans le 1er et 2eme point de la question initiale; j'avais donc déduit, sans doute indûment, que le texte de la zone" Etapes" était celui de la zone "Ingrédients" débarrassés de ses caractères spéciaux et avec les paragraphes numérotés en remplacement.

Du coup, comment dois-je le comprendre ?
 
Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Merci pour ta réponse.
Je vais tenter de formuler ma demande autrement.
Les 2 box fonctionnent sur la même principe sans lien entre les 2: Ajout de caractères spéciaux en début de ligne dès le focus mis sur l'une ou l'autre et après chaque return. Particularités de la box ETAPES, les caractères spéciaux sont replacés par une numérotation du type "1) " dès que le focus est mis sur la première ligne et incrémentation "2) "; "3) "; "4) " etc à chaque return, le texte qui suit est propre à cette boite.
Je ne sais pas si c'est plus clair, mais je l’espère.
Pour l'instant je n'utilise que le module ingrédient qui fonctionne parfaitement et qui me soulage bien dans les longues et fastidieuses séquence de saisie. Ce qui est le but finalement car j'ai plus de 1000 recettes à recopier provenant de mon ancienne base de données réalisée avec la SGDB Approach de Lotus.
Comme déjà dit, j'ai essayé d'adapter ton module INGRÉDIENTS pour usage dans ETAPES mais ne suis parvenu à rien de valable.
Je présume que mon sujet t’intéresse vu ton assiduité sur le sujet et je t'en remercie.
Dans l'attente d'une suite,
Merci encore.
Amicalement.
 
Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Bonjour dePOI,

Un essai dans le fichier joint. la numérotation ne se met à jour qu'à chaque nouvelle ligne ajoutée ou supprimée.

le code:
VB:
Private Sub TxtETAPES_Change()
Dim n As Long, i As Long, p As Long, s As String, c As String
Dim Tablo, Deb As String
Static NbrLignes0 As Long, Nbrlignes

Application.EnableEvents = False
' on agit si le nombre de ligne a changé
s = Replace(TxtETAPES, Chr(13), "")
Nbrlignes = Len(s) - Len(Replace(s, Chr(10), ""))
If Nbrlignes <> NbrLignes0 Then
   ' le nbre de lignes a changé
   NbrLignes0 = Nbrlignes
   ' création du tableau des lignes
   Tablo = Split(s, Chr(10))
      If UBound(Tablo) - LBound(Tablo) <= 0 Then
         ' le tableau est vide <==> il n'y a qu'une ligne qui n'a pas de retour à la ligne
         If Len(s) = 0 Then
            ' a ligne est vide
            TxtETAPES = s
         End If
      Else
         ' il y a au moins une ligne avec un retour à la ligne
         For i = LBound(Tablo) To UBound(Tablo)
            p = InStr(Left(Tablo(i), 5), ") ")
            ' si on ne trouve la séquence ") " c est défini comme étant la ligne complète
            ' sinon c est la ligne dont on a ôté la numérotation.
            If p = 0 Then c = Tablo(i) Else c = Mid(Tablo(i), p + 2)
            ' si le texte utile (c) est vide, on introduit une ligne vide
            If Trim(c) = "" Then
               Tablo(i) = ""
            Else
               ' sinon on numérote la ligne
               n = n + 1
               Tablo(i) = n & ") " & c
            End If
         Next i
         TxtETAPES = Join(Tablo, Chr(10))
      End If
End If
Application.EnableEvents = True
End Sub
 

Pièces jointes

Re : Return avec début de ligne accompagné d'un webding ou d'un caractère prédétermin

Bonjour mapomme,
Merci pour cette réponse si rapide. CA MARCHE.
J'ai saisie avec 2 recettes de taille et de complexité différentes sans aucun problème.
Vu mon niveau "raz des pâquerettes", je n'aurais jamais su construire un tel code sans ton aide.
Je considère donc que mon problème immédiat est résolu AVEC TOUTE MA RECONNAISSANCE.
Je te souhaite un excellent WE.
Et a +
PS : Si tu le permet je note ton pseudo dans mes tablettes; sais-t'on jamais!
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour