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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    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
    Matt

  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 : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    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 du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

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

  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 : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    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 du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    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'"
    Matt

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

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    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.
    puis et puis et encore . Sinon sans oublier et

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Merci mais l'aide n'est pas installée

    J'essaye autrement d'abord (mais ça ne veut pas marcher je sais pas pourquoi :s)
    Matt

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

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Je te mets l'aide de la fonction en attachment si tu en as besoin. Si tu vas vers cette solution, tu auras peut etre besoin des fonctions:
    • MID: Selectionnes une partie d'un texte en specifiant a quel caractere commencer et combien de caracteres selectionner
    • LEFT: Selectionne la partie gauche d'un texte, en specifiant le nombre de caracteres
    • RIGHT: meme qu'au dessus avec a partie droite
    • LEN : te donne le nombre de caracteres dans un texte.

    Ca correspond a la suggestion de Jeannot45, de faire du traitement de chaines de caracteres. Il y a peut etre plus simple mais sans me creuser la tete, je dirais que c'est une solution.

    Bon courage !
    puis et puis et encore . Sinon sans oublier et

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Merci pour l'aide
    Matt

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par dalmasma
    Merci mais l'aide n'est pas installée
    Et tu comptes donc sur nous pour te servir d'aide en ligne?

    Il n'est pas possible de développer sans avoir, au moins, la référence du langage utilisé.

    Alors, débrouille-toi pour l'installer.
    Si c'est sur un PC perso, pas de problème, l'aide est sur le CD.
    Si c'est au boulot, c'est à toi d'exiger que l'aide soit installée car c'est un outil indispensable au développement.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Quand on m'a dit de regarder l'aide il ne me restait que 4 jours de stage...
    Matt

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