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

dePOI

XLDnaute Junior
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.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • PROJET RECETTES.xlsm
    291 KB · Affichages: 32
  • PROJET RECETTES.xlsm
    291 KB · Affichages: 37
  • PROJET RECETTES.xlsm
    291 KB · Affichages: 37
Dernière édition:

dePOI

XLDnaute Junior
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.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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 ?
 

dePOI

XLDnaute Junior
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.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • PROJET RECETTES v3.xlsm
    300.3 KB · Affichages: 25

dePOI

XLDnaute Junior
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!
 

Discussions similaires

Réponses
8
Affichages
690

Statistiques des forums

Discussions
312 509
Messages
2 089 144
Membres
104 050
dernier inscrit
Pepito93100