Auto-complétion

Bonjour,
je cherche à avoir un mécanisme d'auto-complétion dans une combobox (Modifiable15)
Mon code:

Private Sub Modifiable15_Change()

strText = Me.Modifiable15.Text

Sql = "SELECT Adresse.Adresse FROM Adresse WHERE IdNRO='" & Me.Modifiable4.Value & "' AND Adresse LIKE '%" & strText & "%' ;"

Me.Modifiable15.RowSource = Sql
Me.Modifiable15.Dropdown
End Sub

Pourquoi cela ne fonctionne-t-il pas svp? ^^

8 réponses

  1. Modérateur
    Salut,

    qu'est ce qui ne fonctionne pas ?
    Ton objet Modifiable15 est de quel type : zone de liste ou zone de liste déroulante ?
    0
    1. Bonjour Blux,

      tout d'abord, quel honneur de te croiser sur mon post :D

      Quand je tape une valeur dans la zone texte de ma liste, la requête ne retourne apparemment aucun résultats, alors qu'il y en a en base ^^

      Modifiable15 est une zone de liste déroulante.

      edit: et la requête est bonne, je ne comprends pas ce qui bloque !
      0
      1. Modérateur
        tout d'abord, quel honneur de te croiser sur mon post :D
        Quel honneur ?

        As-tu tenté un :

        Me.Modifiable15.Requery
        Me.Modifiable15.Refresh
        Me.Modifiable15.Repaint
        (Rayer les mentions inutiles...)

        avant le dropdown ?

        Ta liste possède-t-elle la propriété autocompletion ?
        0
      2. Oui ma liste possède la propriété auto complétion, et j'avais déjà ajouté un Me.Requery et Me.Refresh avant le dropdown.
        J'ai essayé ta méthode, elle ne fonctionne pas :(
        0
    2. Quel honneur, car je t'ai croisé x-fois sur le forum access et tu sembles être un expert ;)
      Je te tiens au courant lundi matin, ou avant ^^ Merci pour ton aide précieuse et @bientôt !
      0
      1. Modérateur
        Quel honneur, car je t'ai croisé x-fois sur le forum access et tu sembles être un expert ;)
        A ces mots le Corbeau ne se sent pas de joie...
        ;-)
        0
      2. Désolée, ça m'a echappé... ^^
        Bon il me fallait des "*" dans ma requête, au lieu des "#" :D
        0
      3. Modérateur
        N'ayant pas vu de # dans ton code, je ne m'en suis pas préoccupé... ;-)
        0
      4. Je voulais dire au lieu des % !! ;)
        0
    3. Je voudrais aller un peu plus loin en concaténant les N°, Voie et Adresse de ma table Adresse, afin de les retourner dans le RowSource qui intègre l'auto-complétion.

      Public Function RecupAdresse(SQL)

      Dim res As DAO.Recordset

      Set res = CurrentDb.OpenRecordset(SQL)

      While Not res.EOF

      RecupAdresse = RecupAdresse + res.Fields(0).Value & "," & res.Fields(1).Value & "," & res.Fields(2).Value

      res.MoveNext

      Wend

      'libere la mémoire
      Set res = Nothing

      End Function

      et lors de la modification de Modifiable15 :

      ' ADRESSE
      Private Sub Modifiable15_Change()

      strText = Me.Modifiable15.Text

      SQL = "SELECT N°, Voie, Adresse FROM Adresse WHERE IdNRO='" & Me.Modifiable4.Value & "' AND Adresse LIKE '*" & strText & "*' ;"

      Me.Modifiable15.RowSource = RecupAdresse(SQL)

      Me.Requery
      Me.Refresh

      Me.Modifiable15.Dropdown

      End Sub

      Qu'est-ce qui cloche dans mon dev svp?
      J'ai bien précisé 3 colonnes dans mon Modifiable15 ^^
      0
      1. Modérateur
        Qu'est-ce qui cloche dans mon dev svp?
        De là où je suis, je ne vois rien, mais peut-être que si tu indiques le problème, on pourra avancer...
        0
    4. Je fais plus simple.
      Je veux que la combobox m'affiche les dossiers comprenant la chaine de caractères saisie.

      Public Function RecupAdresse(SQL)

      Dim res As DAO.Recordset

      Set res = CurrentDb.OpenRecordset(SQL)

      While Not res.EOF

      RecupAdresse = RecupAdresse + res.Fields(0).Value

      res.MoveNext

      Wend

      Set res = Nothing

      End Function


      ' ADRESSE
      Private Sub Modifiable15_Change()

      strText = Me.Modifiable15.Text

      SQL = "SELECT Dossier FROM Adresse WHERE IdNRO='" & Me.Modifiable4.Value & "' AND Adresse LIKE '*" & strText & "*' ;"

      Me.Modifiable15.RowSource = RecupAdresse(SQL)

      MsgBox (RecupAdresse(SQL))

      Me.Requery
      Me.Refresh

      Me.Modifiable15.Dropdown

      End Sub
      J'ai bien les bonnes valeurs dans mon MsgBox, mais je n'arrive pas à les afficher dans le RowSource...
      0
      1. Modérateur
        mais je n'arrive pas à les afficher dans le RowSource...
        Il va falloir m'aider un peu plus que ça en me précisant le comportement de la liste :
        - ça n'affiche rien
        - ça n'affiche pas ce qui est prévu
        - il y a un message d'erreur
        - ça disjoncte au compteur
        - le fbi sonne à ta porte
        - tu entends Céline Dion à la radio
        - tu entends Céline Dion ET Lara Fabian à la radio
        - ...

        De plus, tu concatènes des chaines pour n'en faire qu'une, il est donc illusoire de paramétrer 3 colonnes dans la liste...
        0
      2. Mon outil fonctionne avec le code ci-dessous ;)
        0
    5. Voici le code qui fonctionne:

      Private Sub Modifiable15_AfterUpdate()

      Dim SQL As String
      Dim strText As String

      strText = Me.Modifiable15.Text

      SQL = "SELECT Dossier FROM Adresse WHERE IdNRO='" & Me.Modifiable4.Value & "' AND Dossier LIKE '*" & strText & "*' ;"

      Me.Modifiable15.RowSource = SQL

      Me.Requery
      Me.Refresh

      Me.Modifiable15.Dropdown

      End Sub
      Merci Blux !
      0
      1. Autre problème: les DATES !!
        ' ENREGISTRER
        Private Sub Commande12_Click()

        Dim SQL, SQL_Update, SQL_Insert As String
        Dim Code, Traitant As String
        Dim Today As String
        'Dim Today As Date

        Code = "Code"
        Traitant = "Traitant"
        Today = Format(Now(), "mm/dd/yyyy")

        SQL_Insert = "INSERT INTO Opérations_progress (Lot, Code, Commune, IdNRO, IdPM, Quantité, dateProduction, Traitant) " & _
        "VALUES ('6', '" & Code & "','" & Modifiable13.Value & "','" & Modifiable4.Value & "', '" & Modifiable6.Value & "', 1, #" & Today & "#, '" & Traitant & "');"

        DoCmd.RunSQL (SQL_Insert)

        End Sub
        J'ai un problème de type, problème d'insertion de la date a priori, alors qu'elle s'affiche bien dans le MsgBox!?

        edit: ha non ça ne vient pas de la date :'(
        0
        1. Modérateur
          J'ai un problème de type, problème d'insertion de la date a priori, alors qu'elle s'affiche bien dans le MsgBox!?
          Comme je l'ai déjà demandé, comment se manifeste le problème ?
          0
        2. Ben après m'avoir avertie que j'allais ajouter une ligne, Access me dit qu'il y a un problème de type dans la requête et qu'elle ne peut être insérée, à la suite d'une violation de clé :'(
          0
        3. Ha non c good, j'insérais un "Code" pas valable... ^^
          0
        4. Modérateur
          Violation de clé, c'est qu'une clé primaire existe déjà ou qu'un champ indexé sans doublon existe déjà...
          0
        5. mon Code devait prendre certaines valeurs, et j'étais à côté avec le String "Code" :p
          0
      2. Autre petite question :
        Je voudrais importer un fichier Excel en faisant un UPDATE sur ma table adresse.
        Dans ma table, les n° de dossiers sont renseignés, je veux mettre à jour les IdPB...
        Comment m'y prendre? ^^
        0
        1. Modérateur
          Rien compris...
          0
        2. ben avec MySQL, j'insérais des UPDATE dans mon fichier Excel et je balançais le fichier, et mes requêtes tournaient.
          Là je ne sais pas comment faire avec les UPDATE dans mon fichier Excel ^^
          0
        3. Modérateur
          Une commande docmd.transferspreadsheet dans une table temporaire et ensuite une requête UPDATE à partir de cette table pour mise à jour des infos que tu souhaites...
          0