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

Macros et VBA Excel Discussion :

Utiliser un joker dans InStr [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut Utiliser un joker dans InStr
    Bonsoir à tous,

    Est-il possible d'utiliser un joker tel que (*) pour retrouver les mots mère ou maire par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Instr(1,A$,"m*e") > 0 then MsgBox "Mot Trouvé"
    Merci.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If A Like "m*e" Then MsgBox "Mot trouvé"

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonsoir mercatog,

    J'ai essayé de remplacer cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Item, "SDM5-") = 0 And InStr(1, Item, "LV3-") = 0 Then
    par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Item Like "S*-" And Item Like "L*-" Then
    Mais le résultat n'est pas le même !

    Comment écrire la négation de Like ?

    Merci.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not (Item Like "S*-") And Not (Item Like "L*-") Then

  5. #5
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Re,

    En voulant intégrer la solution dans mon code, j'ai des résultats chamboulés.

    En fait, j'aimerais extraire les six dernier chiffre de chaque ligne de ces donnés :

    SDM5-2112 LV3-34816 011430000
    SDM5-2113 LV3-34830 011430014
    SDM5-2114 LV3-34839 011430023
    SDM5-2115 LV3-34843 011430027
    SDM5-2116 LV3-34851 011430035
    SDM5-2117 LV3-34858 011430042
    SDM5-2118 LV3-34866 011430050
    SD5-2119 LV3-34877 011430061
    SDM5-2120 LV3-34881 011430065
    TOE TIME 121001 1332 PAGE 5
    SDM5-2121 LV3-34889 011430073
    SDM5-2122
    SDM5-2123 LV3-34905 011430089
    SDM5-2124 LV3-34913 011430097
    SDM5-2125 LV3-34924 011430108

    Pour la ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Item, "SDM5-") = 0 And InStr(1, Item, "LV3-") = 0 Then
    ca marchait bien, sauf pour les lignes qui ont des défauts d'écriture, le traitement n'allait pas, tel que la ligne (On trouve le mot SD5 au lieu de SDM5):

    SD5-2119 LV3-34877 011430061
    Alors je cherchais un truc de joker pour que la comparaison aboutisse.

    Mais la ligne de code posté ne donne pas le résultat voulu !

    Voila le bout de code utilisé pour extraire les six derniers chiffres de chaque ligne :

    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
    Do While Continue
        B$ = Split(Trim(a$), " ")
         j = 0
        For Each Item In B$
            If Len(Trim(Item)) > 0 Then
                'If InStr(1, Item, "SDM5-") = 0 And InStr(1, Item, "LV3-") = 0 Then
                If Not (Item Like "S*-") And Not (Item Like "L*-") Then
                    '-- Ecriture dans le feuille
                    LastLg = [A65000].End(xlUp).Row + 1
                    '-- Enlever le 011
                    Cells(LastLg, 1) = Right(B$(j), 6)
                End If
            End If
            j = j + 1
        Next Item
    End If
    '-- Lire une nouvelle ligne
    Line Input #Canal, a$
    '-- Si la ligne commence par le mot TOE
    If InStr(1, a$, "TOE") > 1 Then
        Line Input #Canal, a$
    ElseIf InStr(1, a$, "END") > 1 Then
        Continue = False
    End If
    Loop
    Merci.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ajoute un joker aussi à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not (Item Like "S*-*") And Not (Item Like "L*-*") Then

  7. #7
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Merci mercatog.

    Ca marche.

    J'ai trouvé une autre solution, et elle est efficace pour le moment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Item, "-") = 0 And InStr(1, Item, "-") = 0 Then

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

Discussions similaires

  1. Utilisation du joker dans SAS
    Par viougt dans le forum SAS Base
    Réponses: 12
    Dernier message: 23/01/2009, 16h09
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. Réponses: 3
    Dernier message: 11/03/2004, 10h58
  4. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

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