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

VBA Access Discussion :

Rechercher mot le plus long d'une chaine de caractère


Sujet :

VBA Access

  1. #1
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut Rechercher mot le plus long d'une chaine de caractère
    Bonjour,
    Je souhaiterais pouvoir déterminer le mot le plus long d'une chaîne de caractère.
    Ne connaissant pas de fonction SQL faisant ce genre de manipulation je me demandais si une fonction VBA existait? ou si vous aviez des pistes?
    Par exemple :
    J'ai une table initiale avec deux champs : id et monTexte
    Un extrait :
    1,bonjour le monde
    2,Hi World
    Je voudrais avoir une table de sortie comme suit :
    1, bonjour le monde, bonjour
    2, Hi World, World

    Merci d'avance

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    dans une requete SQL avec TOP 1 pour recupérer le premier enregistrement et dans un champ en tri décroissant len([nomDuChamp])

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Salut,

    En SQL, impossible.

    Avec du VBA oui.

    Dans un module :

    Function motlepluslong(strChaine) As String
    Dim tableau() As String
    Dim i As Integer
    tableau = Split(strChaine, " ")
    motlepluslong = tableau(0)
    For i = 0 To UBound(tableau)
    If Len(tableau(i)) > Len(motlepluslong) Then motlepluslong = tableau(i)
    Next i
    End Function
    Puis dans une requête,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, motlepluslong(montexte) FROM Matable
    Si la ponctuation pose problème, il faudra voir pour remplacer les caractères spéciaux en amont par des espaces.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 372
    Points
    34 372
    Par défaut
    salut,
    s'il s'agit du texte le plus long, la proposition d'helas est correcte.
    Par contre, si tu cherches le mot le plus long dans chaque phrase je peux te proposer une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function MotleplusLong(strInput as string) as string
    dim mots as variant
    dim i as integer
    dim result as string
    mots = split(strinput," ")
    result = ""
    For i = 1 to Ubound(mots)
     if len(mots(i))>len(result) Then
    result = mots(i)
    Next i
    MotleplusLong = result
    End Function
    et tu affiches le résultat dans ta requete :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Tonchamp, MotleplusLong(Tonchamp) AS Mot_Le_Plus_Long FROM TaTable;

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Sans la ponctuation et pour éviter les traitements redondants, j'ai ceci :

    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
    Function sansPonctuation(strchaine) As String
    Dim strResult As String
    Dim i As Integer
    Dim l As Integer
    Dim b As String
    Dim d As Integer
    Const CARACTCERE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàâéèêëiîïoôuû"
    strchaine = strchaine & "."
    l = Len(strchaine)
    d = 1
     
    For i = 1 To l
        b = Mid$(strchaine, i, 1)
        If InStr(1, CARACTCERE, b) = 0 Then
            If (i - d - 1) > Len(strResult) Then
                strResult = Mid(strchaine, d, i - d)
            End If
            d = i + 1
        End If
    Next i
     
    sansPonctuation = strResult
    End Function

  6. #6
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Merci bien pour toutes ces solutions

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/10/2011, 15h24
  2. Réponses: 3
    Dernier message: 31/08/2011, 15h20
  3. [TASM] Le mot le plus long d'une chaîne de caractères
    Par barbaross15 dans le forum x86 16-bits
    Réponses: 0
    Dernier message: 10/11/2010, 21h45
  4. Trouver le mot le plus long dans une chaîne
    Par bassoum dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 02/11/2008, 10h45
  5. Modifier les mots "longs" d'une chaine de caractères
    Par Coussati dans le forum Débuter
    Réponses: 3
    Dernier message: 23/06/2008, 05h45

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