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 :

suppression de certains signes d'une chaîne de caractères [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut suppression de certains signes d'une chaîne de caractères
    Bonjour,
    mon problème se situe au niveau de l'import des données d'une table temporaire à un autre, via une procédure INSERT INTO.
    Je fusionne les données de 3 champs dans un autre, en les séparant par des tirets.
    Certains de ces 3 champs (voire tous) pouvant être vides, je me retrouve donc avec des séries de tirets en début et en fin de chaîne, que j'aimerais supprimer.
    J'ai pensé un moment incorporer des IIF (ou CASE) dans la procédure INSERT TO , pour ne pas ajouter de tirets en trop, mais l'imbrication s'avère très compliquée.
    Je cherche donc plutôt à utiliser un UPDATE qui supprimerais tous les signets en début et fin de chaîne, mais pas quand il est placé entre 2 mots.
    J'ai bien vu cette piste-là (c'est sur EXCEL) puisqu’il faudra bien j'imagine identifier la première et/ou dernière lettre de ma chaîne, mais ça me parait assez insurmontable de l'adapter...
    Merci d'avance pour vos lumières !

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Avec une requête de sélection, des fct Iif() imbriquées de l'ordre de 7 (23 - 1 = 7 permutations possibles), vous testez les valeurs respectives de vos 3 champs et vous calculez le résultat attendu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([varF1] Est Null Et [varF2] Est Null Et [varF3] Est Null;"";...
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    en complément de la solution d'hyperion, une petite fonction publique qui peut être utilisée dans une requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function concat3col( varF1 as string, varF2 as string , varF3 as string) as string
    dim s1 as string
    s1=""
    if len(nz(varF1)) > 0 then s1 = s1 & varF1 & "-"
    if len(nz(varF2)) > 0 then s1 = s1 & varF2 & "-" 
    if len(nz(varF3)) > 0 then s1 = s1 & varF3 & "-"
    ' on retire le dernier "-"
    if len(s1) > 0 then s1 = left(s1 , len(s1) -1)
    concat3col= s1
    end function
    "Always look at the bright side of life." Monty Python.

  4. #4
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    merci hyperion13, effectivement je m'y prenais mal avec les imbrications, en suivant ta logique, et en testant sur une requête sélection j'entrevois le résultat attendu... Je creuse le sillon, à moins d'avoir une proposition côté UPDATE...?

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour,
    autre solution (qui fonctionne aussi avec INSERT):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Replace(Trim([varf1] & Space(1) & [varf2] & IIf(IsNull([varf2]),"",Space(1)) & [varf3]),Space(1),"-") AS ConcatF1F2F3
    FROM MaTable;
    avec éventuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE [varF1]&[varf2]&[varf3] Is Not Null
    pour omettre les valeurs nulles
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    merci pour vos propositions, je suis arrivé à mes fins avec la solution d'hyperion, le code est pas si imbuvable au final (chacun jugera) :
    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
    insertcle = "INSERT INTO T04_Cles ( Nom_Cle, Type_Cle, Code_Grave, Stock, [Enfant de], Serrure_Ouverte, Bâtiment, Etage, Domaine, [Usage] ) " & _
             "SELECT T042_Saisie_Cles.Nom_Cle,T042_Saisie_Cles.Type_Cle,T042_Saisie_Cles.Code_Grave,T042_Saisie_Cles.Stock,T042_Saisie_Cles.[Enfant de], T042_Saisie_Cles.Serrure_Ouverte,T042_Saisie_Cles.Bâtiment,T042_Saisie_Cles.Etage,T042_Saisie_Cles.Domaine " & _
             ",IIf([T042_Saisie_Cles].[Bâtiment] Is Null AND [T042_Saisie_Cles].[Etage] Is Null AND [T042_Saisie_Cles].[Domaine] Is Null" & _
             " ,''," & _
             "IIf([T042_Saisie_Cles].[Bâtiment] Is Not Null AND [T042_Saisie_Cles].[Etage] Is Null AND [T042_Saisie_Cles].[Domaine] Is Null" & _
             ",[T042_saisie_cles].[Bâtiment], " & _
             "IIf([T042_Saisie_Cles].[Bâtiment] Is Not Null AND [T042_Saisie_Cles].[Etage] Is Not Null AND [T042_Saisie_Cles].[Domaine] Is Null" & _
             ",[T042_Saisie_Cles].[Bâtiment] + ' - ' + [T042_Saisie_Cles].[Etage], " & _
             "IIf([T042_Saisie_Cles].[Bâtiment] Is Null AND [T042_Saisie_Cles].[Etage] Is Not Null AND [T042_Saisie_Cles].[Domaine] Is Null " & _
             ",[T042_Saisie_Cles].[Etage], " & _
             "IIf([T042_Saisie_Cles].[Bâtiment] Is Null AND [T042_Saisie_Cles].[Etage] Is Not Null AND [T042_Saisie_Cles].[Domaine] Is Not Null " & _
             ",[T042_Saisie_Cles].[Etage] + ' - ' + [T042_Saisie_Cles].[Domaine], " & _
              "IIf([T042_Saisie_Cles].[Bâtiment] Is Null AND [T042_Saisie_Cles].[Etage] Is Null AND [T042_Saisie_Cles].[Domaine] Is Not Null " & _
             ",[T042_Saisie_Cles].[Domaine], " & _
             "IIf([T042_Saisie_Cles].[Bâtiment] Is Not Null AND [T042_Saisie_Cles].[Etage] Is Null AND [T042_Saisie_Cles].[Domaine] Is Not Null " & _
             ",[T042_Saisie_Cles].[Bâtiment] + ' - ' + [T042_Saisie_Cles].[Domaine] " & _
             ", [T042_Saisie_Cles].[Bâtiment] + ' - ' + [T042_Saisie_Cles].[Etage] + ' - ' + [T042_Saisie_Cles].[Domaine]))))))) " & _
             "AS [Usage] " & _
             "FROM T042_Saisie_Cles"
     
             DoCmd.RunSQL insertcle
    Pas assez habile pour manier la fonction publique de micniv, mais j'y reviendrai peut-être...
    Merci aux contributeurs ! (je clos le sujet)

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    je suis arrivé à mes fins avec la solution d'hyperion, le code est pas si imbuvable au final (chacun jugera) :
    c'est sûr qu'à côté, la simplicité de ma proposition fait tâche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Replace(Trim([T042_Saisie_Cles].[Bâtiment] & Space(1) & [T042_Saisie_Cles].[Etage] & IIf(IsNull([T042_Saisie_Cles].[Etage]),"",Space(1)) & [T042_Saisie_Cles].[Domaine]),Space(1)," - ") AS [Usage] "
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    désolé tee_grandbois, j'ai exploité la solution que j'appréhendais le mieux (et accessoirement la 1ère proposée), et vu mon niveau, c'est plutôt de bon augure pour la qualité de ton code
    Mais maintenant que tu m'as mâché le travail...
    merci à toi !

  9. #9
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Pensez à faire le ménage dans les lignes d'écriture !
    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
    insertcle = "INSERT INTO T04_Cles ( Nom_Cle, Type_Cle, Code_Grave, Stock, [Enfant de], Serrure_Ouverte, Bâtiment, Etage, Domaine, [Usage] ) " & _
             "SELECT Nom_Cle,Type_Cle,Code_Grave,Stock,[Enfant de], Serrure_Ouverte,Bâtiment,Etage,Domaine " & _
             ",IIf([Bâtiment] Is Null AND [Etage] Is Null AND [Domaine] Is Null" & _
             " ,''," & _
             "IIf([Bâtiment] Is Not Null AND [Etage] Is Null AND [Domaine] Is Null" & _
             ",[T042_saisie_cles].[Bâtiment], " & _
             "IIf([Bâtiment] Is Not Null AND [Etage] Is Not Null AND [Domaine] Is Null" & _
             ",[Bâtiment] + ' - ' + [Etage], " & _
             "IIf([Bâtiment] Is Null AND [Etage] Is Not Null AND [Domaine] Is Null " & _
             ",[Etage], " & _
             "IIf([Bâtiment] Is Null AND [Etage] Is Not Null AND [Domaine] Is Not Null " & _
             ",[Etage] + ' - ' + [Domaine], " & _
              "IIf([Bâtiment] Is Null AND [Etage] Is Null AND [Domaine] Is Not Null " & _
             ",[Domaine], " & _
             "IIf([Bâtiment] Is Not Null AND [Etage] Is Null AND [Domaine] Is Not Null " & _
             ",[Bâtiment] + ' - ' + [Domaine] " & _
             ", [Bâtiment] + ' - ' + [Etage] + ' - ' + [Domaine]))))))) " & _
             "AS [Usage] " & _
             "FROM T042_Saisie_Cles"
    Pas eu le temps de regarder ce qui cloche dans vos codes respectifs.
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    salut hyperion,
    je n'ai pas l'erreur sur mon jeu de test (bravocharlie = blanc-rouge chez moi):

    Nom : _0.JPG
Affichages : 83
Taille : 34,2 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Matable].ID, [Matable].varF1, [Matable].varF2, [Matable].varF3, Replace(Trim([varf1] & Space(1) & [varf2] & IIf(IsNull([varf2]),"",Space(1)) & [varf3]),Space(1)," - ") AS ConcatF1F2F3
    FROM MaTable
    WHERE ((([varF1] & [varf2] & [varf3]) Is Not Null))
    ORDER BY [Matable].varF1 DESC , [Matable].varF2 DESC , [Matable].varF3 DESC;
    tes valeurs vides contiennent-elles nul ou "" ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    @tee_grand
    m'a trompé C'est OK
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Pas eu le temps de regarder ce qui cloche dans vos codes respectifs.
    pour le code de micniv, il faut remplacer String par Variant ou rien du tout (car Variant est le type par défaut) dans les paramètres de la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function concat3col(varF1, varF2, varF3) As String
    Dim s1 As String
    s1 = ""
    If Len(Nz(varF1)) > 0 Then s1 = s1 & varF1 & " - "
    If Len(Nz(varF2)) > 0 Then s1 = s1 & varF2 & " - "
    If Len(Nz(varF3)) > 0 Then s1 = s1 & varF3 & " - "
    ' on retire le dernier " -"
    If Len(s1) > 0 Then s1 = Left(Trim(s1), Len(s1) - 2)
    concat3col = s1
    End Function
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Membre du Club
    Homme Profil pro
    utilisateur Access
    Inscrit en
    Janvier 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : utilisateur Access
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Salut,
    je me suis replongé sur mon code, suite à vos discussions, et parce que j'ai voulu intégrer un 4e champ. L'empilement des iif étant devenu ingérable, j'ai opté pour la solution "tee_grandbois", mais dans mon cas elle m'ajoute des tirets en milieu de chaîne quand les données d'origine ont des espaces... argh !
    J'ai fini par dompter la technique micniv, et ça donne ça :
    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
    ' procédure préalable à la concaténation des colonnes Serrures, bâtiment, étage, domaine dans Usage
    Dim VarF1 As String
    Dim VarF2 As String
    Dim VarF3 As String
    Dim VarF4 As String
    VarF1 = Nz(Me.[Serrure_ouverte])
    VarF2 = Nz(Me.[Bâtiment])
    VarF3 = Nz(Me.[Etage])
    VarF4 = Nz(Me.[Domaine])
    Dim usg As String
    usg = ""
    If Len(VarF1) > 0 Then usg = usg & VarF1 & " - "
    If Len(VarF2) > 0 Then usg = usg & VarF2 & " - "
    If Len(VarF3) > 0 Then usg = usg & VarF3 & " - "
    If Len(VarF4) > 0 Then usg = usg & VarF4 & " - "
    ' on retire le dernier " -"
    If Len(usg) > 0 Then usg = Left(Trim(usg), Len(usg) - 2)
     
     
     ' procédure d'insertion des clés dans la table T04
     
    Dim insertcle As String
     
    insertcle = "INSERT INTO T04_Cles ( Nom_Cle, Type_Cle, Code_Grave, Stock, [Enfant de], Serrure_Ouverte, Bâtiment, Etage, Domaine, Usage ) " & _
             "VALUES (T042_Saisie_Cles.Nom_Cle " & _
             ",T042_Saisie_Cles.Type_Cle " & _
             ",T042_Saisie_Cles.Code_Grave " & _
             ",T042_Saisie_Cles.Stock " & _
             ",T042_Saisie_Cles.[Enfant de] " & _
             ",T042_Saisie_Cles.Serrure_Ouverte " & _
             ",T042_Saisie_Cles.Bâtiment " & _
             ",T042_Saisie_Cles.Etage " & _
             ",T042_Saisie_Cles.Domaine " & _
             ",'" & usg & "')"
             DoCmd.RunSQL insertcle
    ça paraît tellement simple après coup !
    En tous cas ça marche nickel, encore merci à tous les 3 !

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    j'ai opté pour la solution "tee_grandbois", mais dans mon cas elle m'ajoute des tirets en milieu de chaîne quand les données d'origine ont des espaces... argh !
    pour mon code, le principe aurait été le même, sauf qu'il fallait mettre 3 espaces entre chaque valeur non vide et si il n'y a que des espaces sans autre caractère significatif (étrange car Access supprime les espaces par défaut en fin de chaiîne), on utilise Trim() :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select Replace(Trim(Trim([varf1]) & IIf(IsNull(Trim([varf2])),"",Space(3)) & Trim([varf2]) & IIf(IsNull(trim([varf3])),"",Space(3)) & trim([varf3]) & IIf(IsNull(trim([varf4])),"",Space(3)) & trim([varf4])),Space(3)," - ") AS [ConcatF1-4] FROM MATABLE;

    Nom : _0.JPG
Affichages : 57
Taille : 75,4 Ko

    sinon, c'est vrai que le code de micniv fait très bien le travail
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  15. #15
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    J'arrive un peu tard

    A noter que dans ce type de problème, quand le nombre de champs varFi augnente, il peut être intéressant d'utiliser un tableau de paramètres :

    https://learn.microsoft.com/fr-fr/of...rameter-arrays

    A passer comme argument vars() dans une fonction concatener :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function concatener(ParamArray vars() As Variant)
        Dim i As Long
     
        For i = 0 To UBound(vars)
            If Nz(vars(i)) <> "" Then
                concatener = concatener & vars(i) & " - "
            End If
        Next i
     
        If Len(concatener) > 2 Then
            concatener = Left(concatener, Len(concatener) - 3)
        End If
     
    End Function
    Ensuite, on appel la fonction dans la requête comme ceci pour 4 champs :

    concatF1-4: concatener([varF1];[varF2];[varF3];[varF4])

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. [WebI XiR2] Suppression d'un espace dans une chaîne de caractères
    Par SGA99 dans le forum Débuter
    Réponses: 6
    Dernier message: 02/12/2010, 17h12
  2. Réponses: 5
    Dernier message: 25/02/2008, 14h34
  3. Suppression de l'apostrophe d'une chaîne
    Par toddy_101 dans le forum Langage
    Réponses: 6
    Dernier message: 06/02/2007, 12h46
  4. Réponses: 13
    Dernier message: 20/11/2006, 17h46
  5. suppression d'une chaîne de caractères
    Par new_wave dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 12/09/2006, 12h35

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