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 :

[VBA] Fonction qui en transforme " 'mot1' " & " 'mot2' " en " 'mot1mot2' "


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Par défaut [VBA] Fonction qui en transforme " 'mot1' " & " 'mot2' " en " 'mot1mot2' "
    Bonjour,

    j'ai un critère de recherche qui évolue selon les checkBox que je coche (c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If Nz(Me.chk_hyd, 0) Then
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'HYD'"
    End If
     
     
    If Nz(Me.chk_el, 0) Then
        If Nz(Me.chk_hyd, 0) Then
        SQL = SQL & "'-EL'"
        Else
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'EL'"
        End If
    End If
    Mais il faut que ce qu'il y a dans le second membre de l'égalité soit encadré par des ' ' or problème :

    Lors du

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Nz(Me.chk_el, 0) Then
        If Nz(Me.chk_hyd, 0) Then
        SQL = SQL & "'-EL'"
    le second membre est : 'HYD''-EL' ( avec '' = 2 ' collés) et il me faudrait 'HYD-EL'

    Donc je pense faire une fonction (parce qu'il n'ya pas que ce cas là, il me faut du générique) ayant pour paramètre la chaine SQL et le truc à ajouter. Cette fonction enleverait le '" de la chaine SQL et le ' du truc à ajouter et les collerait.

    Comment faire ça?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut
    Salut Matt,

    tu peux utiliser les fonctions de traitement de chaines

    ainsi
    ton second cas pourrait s' écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = left(SQL,Len(SQL)-1) & "-EL'"
    A+

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Par défaut
    Merci

    Dsl je viens de me rendre compte qu'il y a plus simple

  4. #4
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut
    Re,

    Peux nous indiquer ta solution

    Merci

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Par défaut
    Ca roule, mais je sais pas si ça marchera dans tous les cas où on voudrait faire ce à quoi la fonction que je voulais créer sert.

    Pour cela j'vais expliquer dans quel cas ça devait me servir:

    Dans ma table EquipmentType j'ai des enregistrements du type :
    HYD
    HYD-EL
    HYD-EL-INH
    EL
    EL-INH
    etc avec toutes les combinaisons ordonnées possibles, s'il y a HYD-EL il n'y aura pas EL-HYD (j'ai 6 éléments distincts plus le cas où ya rien ce qui me donne 23 combinaisons)

    Je fais une requête pour trouver cet enregistrement en fonction de checkbox


    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
     
    If Nz(Me.chk_hyd,0) Then ' si la HYD est coché alors je vais chercher l'enregistrement HYD
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'HYD'"
    End If
     
    If Nz(Me.chk_el,0) Then ' si EL est coché  alors 
        If Nz(Me.chk_hyd,0) Then ' soit HYD est coché aussi 
        SQL = SQL & " & '-EL'" ' et dans ce cas je vais chercher HYD-EL
        Else ' soit HYD n'est pas coché et je vais chercher EL
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'EL'"
        End If
    End If
     
    If Nz(Me.chk_inh,0) Then
        If Nz(Me.chk_hyd,0) Or Nz(Me.chk_el,0) Then
        SQL = SQL & " & '-INH'"
        Else
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'INH'"
        End If
    End If
     
    If Nz(Me.chk_ch,0) Then
        If Nz(Me.chk_hyd,0) Or Nz(Me.chk_el,0) Or Nz(Me.chk_inh,0) Then
        SQL = SQL & " & '-CH'"
        Else
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'HYD'"
        End If
    End If
     
    If Nz(Me.chk_gl,0) Then
        If Nz(Me.chk_hyd,0) Or Nz(Me.chk_el,0) Or nz(Me.chk_inh,0) Or Nz(Me.chk_ch,0) Then
        SQL = SQL & " & '-GL'"
        Else
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'GL'"
        End If
    End If
     
    If Nz(Me.chk_sp,0) Then
        If Nz(Me.chk_hyd,0) Or Nz(Me.chk_el,0) Or Nz(Me.chk_inh,0) Or Nz(Me.chk_ch,0) Or Nz(Me.chk_gl,0) Then
        SQL = SQL & " & '-SP'"
        Else
        SQL = SQL & "WHERE [EquipmentTypes]![EquipmentType] = 'SP'"
        End If
    End If
    En fait je avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "'blahblah'"
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & " & 'blahblah'"

  6. #6
    Membre éclairé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Par défaut
    Regarde aussi si tu as toujours des soucis la finction Instr pour localiser le "=" et changer ce qu'il y a apres.
    Je pense qu'il doit y avoir des tas de solutions en se creusant un peu la tete...

    Oublie pas le "Resolu" si tu as trouvé une réponse.

Discussions similaires

  1. [VBA] fonction qui donne la valeur présente dans une table
    Par zanou666 dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/09/2007, 17h33
  2. [VBA] fonction qui reçoit une variable comme arguments
    Par NiKoTiNe dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/07/2007, 11h21
  3. Réponses: 4
    Dernier message: 04/05/2007, 22h49
  4. [Librairies] fonction qui transforme le rtf en texte
    Par The Wretched dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/12/2005, 13h02
  5. Fonction qui transforme chaine de caractère par une autre?
    Par geoffreykill dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 09/12/2004, 14h31

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