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

Macros et VBA Excel Discussion :

VBA SQL Recherche sans accents?


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut VBA SQL Recherche sans accents?
    Bonsoir à tous,

    Voila, je cherche la solution à un problème mais jusqu'à présent, je ne trouve rien.
    J'ai un fichier Excel utilisé en tant que base de données. je me connecte de cette manière :
    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
     
    Public Cn As New ADODB.Connection
    Public Rst As New ADODB.Recordset
     
    Sub ConnexionBase()
    Dim Fichier As String
        'Définit le classeur fermé servant de base de données
        Fichier = ThisWorkbook.Path & "\FM_Base.xls"
        Set Cn = New ADODB.Connection
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open (openstatic)
        End With
        Set Rst = New ADODB.Recordset
    End Sub
    J'arrive à exécuter tout un tas de requêtes, mais je n'arrive pas à effectuer de recherche dans mon fichier en ignorant les accents.
    J'ai essayé avec la méthode COLLATE mais cette instruction est inconnue pour VBA.

    Il existerait la solution de supprimer les accents de ma base de données, mais je n'ai pas envie car le contenu sera affiché sur des documents officiels.

    Je suis ouvert à toutes vos propositions.

    Merci beaucoup,
    Cordialement,
    Jojo.

  2. #2
    Membre habitué Avatar de Basicnav
    Profil pro
    Inscrit en
    Février 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 245
    Points : 193
    Points
    193
    Par défaut
    Salut,

    et si tu force tout en majuscule pour faire ta recherche ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM ta_table 
    WHERE ton_critère = '" & UCase(sMichèle)

  3. #3
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Bonjour, et merci de ta reponse.
    Helas j'avais deja essayé mais en forcant en majuscule, les accents restent.

    Merci quand meme!!!

  4. #4
    Membre habitué Avatar de Basicnav
    Profil pro
    Inscrit en
    Février 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 245
    Points : 193
    Points
    193
    Par défaut
    Re,

    sinon, ici :http://access.developpez.com/faq/?pa...s#IgnAccentSQL
    Tofalu propose une réponse, un peu lourde certe mais qui doit fonctionner sinon elle ne serait pas dans la FAQ...

    PS : Plutôt en bas de pages sur le lien

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 487
    Points : 16 389
    Points
    16 389
    Par défaut
    Bonjour

    Les jokers marchent en SQL :

    Tu peux essayer Like "mich?le"

    si toutefois c'est une recherche sur un mot précis.

    Dans Access j'ai déjà créé une fonction personnalisée et l'ai utilisée dans une requête mais depuis Excel, je ne sais pas trop, même si VBA peut invoquer une fonction du module...

    Autre piste l'imbrication de fonctions subsitute ...

  6. #6
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Salut,
    Les jocker???
    Il faudrait que je remplace les accent du therme recherché par des "?" ?

    C'est ca qe tu veux dire?

  7. #7
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Bonsoir,


    Like "mich?le" ne fonctionne pas...

    Il n'y a pas d'erreur, mais aucun résultats retourné...

  8. #8
    Membre habitué Avatar de Basicnav
    Profil pro
    Inscrit en
    Février 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 245
    Points : 193
    Points
    193
    Par défaut
    Bonjour,

    deux dernière proposition pour moi... après je sèche..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Table1 WHERE prénom LIKE '*mich[èée]le*'
    ceci fonctionne dans Acces, la syntaxe devrait être acceptée dans Excel, sinon office devrait revoir leur règles pour une bonne harmonie entre leur applications (ça sent l'embauche pour moi là...non ?)

    Sinon, sur le net j'ai aussi trouvé ça :

    avec un LIKE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sCriteria = "Lycée général Sanchez"
    sCriteria = Replace(sCriteria, "é", "?")
    sCriteria = Replace(sCriteria, "è", "?")
    sSQL = "SELECT ... WHERE `Raison` LIKE '" & sCriteria & "' "
    tu trouvera Lycée, LYCEE, etc

    Tiens nous au courant, ça m'interesse et je pense pas être le seul.

  9. #9
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Bon et bien écoutez... Je me suis arraché tous mes cheveux !

    Voici mon code complet !
    Les résultats de la requête sont affichés dans une ListBox sur le formulaire nomé FResultat.
    L'affichage du résultat se fait via un bouton.

    Bref voici les commandes :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Public Cn As New ADODB.Connection
    Public Rst As New ADODB.Recordset
     
    Sub ConnexionBase()
    Dim Fichier As String
    'Call DeconnexionBase
        'Définit le classeur fermé servant de base de données
        Fichier = ThisWorkbook.Path & "\FM_Base.xls"
        Set Cn = New ADODB.Connection
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open (openstatic)
        End With
        'Définit la requête.
        Set Rst = New ADODB.Recordset
    End Sub
     
    Sub DeconnexionBase()
    On Error Resume Next
    Rst.Close
    Set Rst = Nothing
    Cn.Close
    Set Cn = Nothing
    End Sub
     
    Sub RequeteRechercher(Nom As String)
    Dim Requete As String
    Requete = "SELECT Désignation FROM [Table$] WHERE Désignation LIKE '*[éèe]quip[éèe]*'"
    Call ConnexionBase
    Rst.Open Requete, Cn, adOpenStatic
    FResultat.ListeResultat.Clear
    Do While Not Rst.EOF
        If Len(Rst.Fields(0).Value) > 0 Then
            'Ajout des résultat dans un ListeBox du formulaire FResultat.
            FResultat.ListeResultat.AddItem (Rst.Fields(0).Value)
        End If
        Rst.MoveNext
    Loop
    Call DeconnexionBase
    FResultat.show
    End Sub
    Merci de votre aide.

  10. #10
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Bonsoir,
    La methode visant a remplacer les accent par [eéè] fonctionne mais je dois mettre les %.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Code :
    SELECT * FROM Table1 WHERE prénom LIKE '%mich[èée]le%'
    J'ai donc fais une fonction qui me remplace les e ou é ou è... Par le systeme de crochets.

    Merci et bonne nuit!

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

Discussions similaires

  1. Requête SQL SELECT sans accent
    Par luludev dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 03/04/2012, 15h41
  2. SQL de recherche sans accent.
    Par hiroshi dans le forum Requêtes
    Réponses: 5
    Dernier message: 25/04/2011, 15h15
  3. Recherche sans accents
    Par cerede2000 dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/05/2007, 21h36
  4. [VBA-SQL] Recherche sur *nom*
    Par GarsDuCalvados dans le forum Access
    Réponses: 13
    Dernier message: 22/02/2007, 11h17
  5. [VBA SQL] rechercher si un pattern est inclu dans un autre
    Par Nenette_cherie dans le forum Access
    Réponses: 4
    Dernier message: 28/04/2006, 09h05

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