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 :

Fonction replace avec une variable like [AC-2013]


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 88
    Par défaut Fonction replace avec une variable like
    Bonjour à tous,

    J'ai un code de remplacement qui doit trouver le mot "Positif" et changer la couleur, le code fonctionne bien il me change bien la couleur dés qu'il rencontre le mot "positif", mon souci vient du fait que le mot "positif" est dans une chaine du genre N° Ech x Positif xxx Mg/Kg, et j'aimerai que la ligne entière soit en rouge..
    J'ai tenté avec une variable vart LIKE "*Positif*Mg/Kg" et utiliser vart à la place de "positif, mais sans succès j'ai aussi essayé avec Mid.. mais Idem..
    Avez vous déjà eu ce cas ?
    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strTexte = Me.HAPQLConc
    strTexte = Replace(strTexte, "Positif", "<font color=""#ED1C24"">Positif</font>") 'mot en rouge
    Me.HAPQLConc = strTexte

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Si tes données sont uniquement constituées d'une ligne tu peux faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if strTexte like "*Positif*" then
       strTexte ="<font color=""#ED1C24"">" & strTexte & "</font>"
    end if
    Si tu as besoin de plus compliqué alors il falloir découper ton texte en morceaux, gérer ces morceaux et reconstituer la chaîne après.

    Pour le découpage tu peux utiliser Split() et pour la reconstruction Join(), pratique mais pas toujours utilisables.
    Comme tu l'as dit tu peux voir Mid(), Left(), Right(), inStr(), inStrRv() qui sont des fonctions pour manipuler des morceaux de chaînes ou trouver des choses dans une chaîne.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour alea83, marot_r,

    Si j'ai bien compris la question, une autre façon d'aborder le problème est d'utiliser la fonction "InStr" qui renvoie la position de la chaine recherchée dans une chaine de caractères. Si pas trouvé renvoie 0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strTexte = Me.HAPQLConc
    If InStr(1, strTexte , "Positif", 1) > 0 then
        strTexte = "<font color=""#ED1C24"">" & strTexte & "</font>"
    End if
    Bonne journée

  4. #4
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 88
    Par défaut Merci de m'aider
    Bonjour,

    Merci pour votre aide.

    Ci-dessous ce que contient mon champ qui vient de la lecture d'un recordset : en fait dés qu'il y a le mot positif il faudrait que les chaines concernées soient en rouge : Ech N° 2 Positif 29,89 Mg/Kg, c'est à dire 9 caractères avant et 12 aprés pour cette exemple, ca peut aussi être aprés le "-" et avant le prochain "-" mais je ne sais pas comment le faire.

    Les résultats HAP Quantitatif :
    -Ech N° 1 Non demandé, taux estimé <250 ppm-Ech N° 2 Positif 29,89 Mg/Kg-Ech N° 3 Négatif <0,5 Mg/Kg-Ech N° 4 Positif 24,82 Mg/Kg

  5. #5
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 88
    Par défaut Avec le code au-dessus est ce possible ?
    Re Bonjour,

    Je ne trouve pas.. peut être est ce possible avant cette étape ou je récupère les résultats de la boucle :
    Avec un If est ce possible ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    While Not rst.EOF
        StrResult = StrResult & "-" & "Ech N° " & rst.Fields![Ech] & " " & rst.Fields![HAPQuantitatifFin]
        rst.MoveNext
    Wend

  6. #6
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 88
    Par défaut Essai avec le code du dessus mais html dans la formule ???
    Re Bonjour,

    Je ne trouve pas.. peut être est ce possible avant cette étape ou je récupère les résultats de la boucle :
    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           StrResult = IIf([HAPQuantitatifFin] Like "*Positif*", "<font color=""#ED1C24"">StrResult & "- Ech N° " & rst.Fields![Ech] & " " &rst.Fields![HAPQuantitatifFin]</font>",StrResult & "- Ech N° " & rst.Fields![Ech] & " " &rst.Fields![HAPQuantitatifFin])
    Mais là le souci ce sont les quotes.. je ne sais plus quoi essayer

  7. #7
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour alea83,

    Si la structure de vos données est toujours comme indiqué dans le post #4 voici une routine qui va diviser la chaine de caractères en se servant du caractère "-". Ensuite on va analyser chaque partie de la chaine pour trouver la ou les parties qui contiennent "Positif" et finalement on recrée la chaine en incluant le html pour mettre en rouge l'échantillon #2 et #4.
    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
    Private Sub testPosifif()
    Dim sTexte                    As String
    Dim sResult                   As String
    Dim vaTexte                   As Variant
    Dim i                         As Integer
     
    sTexte = "-Ech N° 1 Non demandé, taux estimé <250 ppm-Ech N° 2 Positif 29,89 Mg/Kg-Ech N° 3 Négatif <0,5 Mg/Kg-Ech N° 4 Positif 24,82 Mg/Kg"
    vaTexte = Split(sTexte, "-")
     
    For i = 1 To UBound(vaTexte)  'Les tableaux commencent à 0 mais dans votre cas il n'y a pas de données avant le premier "-"
        If InStr(1, vaTexte(i), "Positif", 1) > 0 Then  'On vérifie si "Positif"
            vaTexte(i) = "<font color=""#ED1C24"">-" & vaTexte(i) & "</font>" 'Oui on met la couleur
            sResult = sResult & vaTexte(i) 'on inscrit dans la chaine de caractères
        Else
            sResult = sResult & "-" & vaTexte(i) 'Non on inscrit dans la chaine de caractères
        End If
    Next i
    Debug.Print sResult 
    End Sub
    Le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sResult = "-Ech N° 1 Non demandé, taux estimé <250 ppm<font color="#ED1C24">-Ech N° 2 Positif 29,89 Mg/Kg</font>-Ech N° 3 Négatif <0,5 Mg/Kg<font color="#ED1C24">-Ech N° 4 Positif 24,82 Mg/Kg</font>"
    Vous pourriez modifier la sub pour en faire une fonction et passer en argument votre champ ou enregistrement et en sortie le résultat du traitement.

    Bonne journée

  8. #8
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 88
    Par défaut Merci..
    Bonjour,

    Merci beaucoup je vais tester cela calmement car la migraine est déjà là.;
    J'en étais sur cela du coup, mais je vais d'abord essayer votre solution.
    Merci encore je vous tiens au courant..

    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
    'crée une boucle sur les enregistrements de la colonne 6 (HAPQuantitatifFin)
    StrResult = ""
    While Not rst.EOF
    If [HAPQuantitatifFin] Like "Positif*" Then
    StrResult = StrResult & "-Ech N° " & rst.Fields![Ech] & " " & " rst.Fields![HAPQuantitatifFin]"
        StrResult = "<font color=""#ED1C24"">" & StrResult & "</font>"
        rst.MoveNext
     ElseIf [HAPQuantitatifFin] Like "Négatif*" Then
    StrResult = StrResult & "-Ech N° " & rst.Fields![Ech] & " " & " rst.Fields![HAPQuantitatifFin]"
        StrResult = "<font color=""#22B14C"">" & StrResult & "</font>"
        rst.MoveNext
        Else
    StrResult = StrResult & "-Ech N° " & rst.Fields![Ech] & " " & " rst.Fields![HAPQuantitatifFin]"
        StrResult = "<font color=""#000000"">" & StrResult & "</font>"
        rst.MoveNext
     
    Wend

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction find avec une variable
    Par tamtam64 dans le forum Excel
    Réponses: 1
    Dernier message: 12/03/2016, 13h14
  2. Utilisation de la fonction replace() avec une regexp
    Par Ishizaki dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/08/2009, 17h39
  3. Fonction die() avec une variable
    Par micksing dans le forum Langage
    Réponses: 5
    Dernier message: 29/07/2007, 00h19
  4. Créer une fonction avec une variable
    Par Ricou13 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/01/2007, 23h51
  5. Réponses: 2
    Dernier message: 16/11/2006, 13h28

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