IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Mettre en gras une partie d'un texte d'un champ


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Mettre en gras une partie d'un texte d'un champ
    Bonjour tout le monde,

    J'ai un formulaire avec 2 champs numérique "NbObservations ", "NbLevObservations" et un champ texte long multiligne "DetailsObservations".

    Exemple:

    Valeur "NbObservations" = 4

    DetailsObservations=
    1 - Essai1
    2 - Essai2
    3 - Essai3
    4 - Essai4

    Je souhaiterais dans un premier temps avec un code VBA dans mon champ "DetailsObservation" que les numéro d'observation et le tiret soit en gras

    Pour le champ "NbLevObservations", j'ai créé une boite de dialogue qui permet de saisir une plage (PlageDebut=2 & PlageFin=3), la formule (PlageFin-PlageDebut)+1 me donne la valeur de mon champ "NbLevObservations".

    Ma seconde difficulté est de modifier la couleur des observations levées en vert RGB(0.176.80), dans mon exemple, "2 - Essai2" & "3 - Essai3".

    Merci d'avance pour votre soutien

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Il faut dans un premier temps mettre la propriété "Format du texte" de ta zone de texte en "Texte Enrichi" ainsi que la colonne de ta table.
    Enfin tu dois utiliser les balises d'enrichissement pour formater ton texte via VBA. C'est du HTML ultra simplifié.
    Tu as à ta disposition le gras, l'italique, quelques tailles de caractères, saut de ligne...
    <b></b>
    <font size=...></font>
    <font face=...></font>
    <br>
    ...

    Le mieux est de formater un texte comme tu le souhaites puis de voir ce que le code t'as généré et enfin le code VBA qui fera la job.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour, et merci pour ta réponse.

    Effectivement, le format texte enrichi est un début de piste, car je peux déjà modifier manuellement le format du texte, maintenant il me manque le code vba qui va me permettre de placer les balises au bon endroit pour que tous les chiffres suivi d'un espace et d'un tiret se mettent en gras et mettre la ou les ligne en vert en fonction des numéro d'observations levée.

    Sur Excel, j'ai pu trouvé la solution à ce problème avec le code ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Range("N6")------>"Nombre d'observation
    Range("S6")-----Détails observation
     
    For a = 1 To Range("N6")
    b = a & " - "
    Range("S6").Characters(InStr(1, Range("S6").Value, b), Len(a)).Font.Bold = True
    Next a
    Sous access je ne trouve pas l'équivalent

    Cordialement,

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 650
    Points : 14 628
    Points
    14 628
    Par défaut
    bonjour,
    depuis un formulaire, lorsqu'on sélectionne du texte au format enrichi, un menu contextuel apparait: il suffit de cliquer sur l'icône correspondant au choix de la mise en forme à appliquer:

    Nom : _0.JPG
Affichages : 495
Taille : 288,8 Ko
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,



    Tu peux (dois) utiliser les instructions qui concerne les chaines de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    len()
    instr()
    instrrev()
    left()
    right()
    replace()
    mid()
    ...
    Pour positionner tes balises pseudo html sur le texte saisi.

    L'équivalent de ton range() pour Access pourrait être Me.moncontrole.value si tu travailles depuis le formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim strAenrichir as string
    strAenrichir = Me.moncontrole.value
     
    strAenrichir = ..... 'ma toutouille pour enrichir le bouzin
     
    me.moncontrole.value = strAEnrichir
    me.dirty = false
    Si tu travailles directement sur les données il te faudra utiliser un recordset DAO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    dim db as dao.currentdb
    dim rst as dao.recordset
    dim strAEnrichir as string
     
    set db = currentdb
    set rst = db.openrecordset("SELECT macolonneAEnrichir FROM matable WHERE ...;",dbopendynaset)
    while not rst.eof
    rst.edit
     
    strAEnrchir = rst.fields(0).value
     
    strAEnrichir = ... 'la toutouille à faire pour l'enrichissement
     
    rst.fields(0).value = strAEnrichir
     
    rst.update
    rst.movenext
    wend
     
    rst.close
    db.close
    set rst=nothing
    set db = nothing
    Ou encore passer par du SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    currentdb.execute = "UPDATE .... ;"
    Ce qui est à inventer c'est la toutouille pour inclure tes balises. Là tout dépend de quoi et d'avec quoi.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    J'ai résolu en partie mon problème, la dernière difficulté que je rencontre est de modifier la couleur d'une partie de ma chaîne de caractère.

    Toujours sur mon contrôle au format texte long multiligne

    Exemple:

    =======================
    Contrôle <NbObservations>= 3
    ========================

    ========================
    Contrôle <DetailsObservfations>=

    1 - Numéro Un.
    2 - Numéro Deux.
    3 - Numéro Trois.
    ==========================

    une boite de dialogue me permet de saisir les observations à levées, ex Début=2 et Fin=2, en validant ma plage je souhaiterais que la ligne n° 2 soit de couleur verte.

    J'ai créé une boucle for x=plageDebut to PlageFin pour identifier le début de la ligne mais je n'arrive pas à trouver une fonction qui me trouve la fin de la ligne afin que je positionne mes balise HTML

    Si tu as une astuce, je suis preneur,

    Cordialement,

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Les fins de ligne sont codés par un <br> ou bien par un chr(13)+chr(10)

    Pour le 13/10 Tu peux tenter un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pos = instr(machaine, vbcrlf)
    qui te donnera la position numérique.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    J'ai trouvé la solution suivante pour changer la couleur du texte de la plage.
    =============================================================================================================================
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim i, j, k
     
    For x = Debut To Fin
     
    i = InStr(1, Forms!CreaControle!DetailObservations, x & " -")
    j = InStr(1, Forms![CreaControle]![DetailObservations], ".")
    k = Mid(Forms![CreaControle]![DetailObservations], i, j)
     
    Forms![CreaControle]![DetailObservations] = Replace(Forms![CreaControle]![DetailObservations], "<font color=""#FF0000"">" & k, "<font color=""#00B050"">" & k)
     
    Next x
    ==================================================================================================================================

    IL ME RESTE UN DERNIER PROBLÈME: comment identifier la couleur d'un texte au format enrichi, pour un format brut je peux le faire avec la condition : if [MonControl].forecolor=RGB(255,0,0) then ........, y a t'il un équivalent pour du texte enrichi car cette méthode ne fonctionne pas.

    Merci

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    La réponse est dans ta question.

    Chercher ça "<font color=""#FF0000"">" ou bien juste "#FF0000".

    C'est juste de la balise html rien d'autre. Il te faut donc chercher ce que tu veux comme si tu cherchais de simple caractères.

    Si tu te sent l'âme d'un guerrier tu peux utiliser la bibliothèque Regex.
    "Microsoft VBScript Regular Expressions 5.5" à taguer dans les Références VBE.

    C'est complexe mais hyper puissant dans la recherche et le remplacement dans les chaines de caractères. Il y a peut-être un tuto qui traine sur developpez.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. [AC-2007] Mettre en gras une partie d'une zone texte
    Par Ram34 dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/10/2012, 12h37
  2. Mettre en gras une partie de texte
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2012, 16h09
  3. [AC-2003] Mettre en gras une partie d'un texte
    Par STOUPI dans le forum Access
    Réponses: 1
    Dernier message: 15/03/2011, 13h58
  4. Réponses: 4
    Dernier message: 20/06/2008, 15h19
  5. [VBA-E] Mettre en gras une partie du texte d'une cellule
    Par clochardevobsy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/05/2006, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo