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 :

Comment enlever certains "mots" d'une chaîne en fonction d'une autre? [Toutes versions]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 371
    Par défaut Comment enlever certains "mots" d'une chaîne en fonction d'une autre?
    Bonjour,

    J'ai une chaîne texte (ch1) composée ainsi : 15, 22, 24, 25, 26, 28, 34, 39, 51, 84, 85, 96, 142, 145
    J'ai une seconde chaîne texte (ch2) composée ainsi (de certains des nombres/items présents dans la chaîne précédente) : 22, 24, 26, 28, 39, 85, 96, 145
    Je souhaiterai obtenir une ch3 qui ne contient aucun des nombres présents dans la chaîne ch2 (le résultat attendu est donc: 15, 25, 34, 51, 84, 96, 142

    Sachant que ce sera toujours des nombres (quelconques) séparés par une virgule et un espace, comment pourrai-je faire cela en minimisant le code a utiliser?

    J'ai pensé a spliter chacune des chaines dans un tableau, ... mais après, je bug sur comment faire pour avoir un tableau qui ne contient plus que "ch1 - ch2 = ch3"?

    Vous avez des idées?

    Merci d'avance pour votre aide et suggestions.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Si tu as si peu d'éléments il n'est peut-être pas nécessaire de chercher très loin.

    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
    dim strNumberList() as string: strNumberList=split(ch1, ", ")
    dim strExcludedNumberList() as string: strExcludedNumberList()=split(ch2, ", ")
    dim objKeptNumberList as collection: set objKeptNumberList=new collection
    dim blnIsExcluded as boolean
     
    dim vntNumber as variant
    dim vntExcludedNumber as variant
     
    for each vntNumber in strNumberList
     
        blnIsExcluded=false
        for each vntExcludedNumber in strExcludedNumberList
     
             if vntExcludedNumber = vntNumber then
                 blnIsExclued=True
                 exit for
             end if
     
        next vntExcludedNumber 
     
        if not blnIsExcluded then
            objKeptNumberList.add(ctsr(vntNumber), cstr(vntNumber))
        end if
     
    next vntNumber
     
    dim ch3 as string
    for each vntNumber in objKeptNumberList
     
        if ch3<>"" then
           ch3=ch3 & ", "
        end if
     
         ch3=ch3 & vntNumber
    next vntNumber
     
    set objKeptNumberList=nothing
    Si tu as beaucoup d'éléments la solution probablement la plus efficace serait de mettre les valeurs dans 2 tables avec un index sur les nombre et de faire une requête de non correspondance puis de récupérer le résultat de cette requête. SQL est généralement plus efficace que VBA pour ce genre de chose.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 371
    Par défaut
    Bonjour marot_r,

    Je reviens de qq jours de vacances et lis ta réponse à ma question.

    Ca me semble parfait!
    Et en effet, ce ne sera jamais plus nombreux qu'une trentaine de mots.

    Merci encore!!! Joyeux été!

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

Discussions similaires

  1. Comment enlever un nom de colonne dans une matrice
    Par cannelle_rumba_kitty dans le forum Power BI
    Réponses: 0
    Dernier message: 28/06/2023, 12h22
  2. [MySQL] ne pas afficher certains messages qui ont des mots contenus dans une autre table
    Par stephst84 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/05/2020, 16h42
  3. Comment enlever les heures/min/s dans une date ?
    Par Djeros dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/03/2014, 17h46
  4. Réponses: 1
    Dernier message: 01/09/2011, 15h45
  5. comment enlever certains logs en prod
    Par oudin.charles dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 12/07/2009, 21h57

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