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 :

Mystère d'un Like erroné


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 75
    Par défaut Mystère d'un Like erroné
    Bonjour à tous,

    Je me retrouve confronté à quelque chose de très troublant...
    J'ai une macro de recopie d'infos d'un tableau dans un autre, à la condition pour chaque ligne à recopier qu'un champ soit égal entre les 2 tableaux.
    Donc j'enregistre le contenu des cellules à comparer dans une variable String de part et d'autre, et je les soumet au fameux "Like"
    --> Error 93 ...

    Pour tenter de voir ce qui peut bloquer, j'ai même juste cherché à faire un like de mes variables sur elles-memes ... Il me renvoie Faux ...

    Là j'avoue je comprends absolument pas. Je sais bien que je peux utilizer autre chose que "like" mais j'aimerais comprendre ce qui cloche !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public contenttoadd, basiscontent As String
     
    basiscontent = CStr(wsallreq.Cells(search.Row, allreqcontentcol).Value) 'pour bien vous montrer qu'ils sont bien String 
    contenttoadd = CStr(wsadd.Cells(i, addcontentcol).Value)
     
    MsgBox (basiscontent) --> le texte apparaît, ok 
    MsgBox (contenttoadd) --> le texte, ok 
    MsgBox ((contenttoadd Like contenttoadd)) --> Faux
    MsgBox ((basiscontent Like basiscontent)) --> Faux
    Comment cela peut-il même être possible ??

    [EDIT] : les String qui bloquent contiennent dans leur chaine des "[" et "]", j'imagine que c'est cela qui bloque, mais dans ce cas comment je fais pour dire au Like de prendre le texte brut ? ces String viennent de cellule, je ne vois pas comment ajouter des "[]" autour de chaque bracket ..

    J'espère vraiment une explication de quelqu'un de maître dans l'art du VBA, ça me semble absurde ...
    Je ne peux pas trop donner plus de details, ni mon fichier excel, il s'agit de boulot pas vraiment diffusable.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Lecture de l'aide interne VBA :
    Note Pour utiliser les caractères spéciaux tels que le crochet droit ouvrant ([), le point d'interrogation (?), le dièse (#) et l'astérisque (*), entourez-les de crochets. Le crochet droit fermant (]) ne peut être utilisé au sein d'un groupe comme critère de comparaison. En revanche, il peut être utilisé à l'extérieur d'un groupe, comme caractère isolé.
    Voilà tout ...

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    As-tu envisagé l'hypothèse que, tout simplement, le contenu des cellules soit différent ?

    Essaye de faire, dans une cellule Excel, une formule du type :
    en changeant A1 et A2 par tes références de cellules, pour voir ce que ça répond.

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    le like sous entant un frayement de phrase!



    Nom : Sans titre.png
Affichages : 133
Taille : 5,6 Ko

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 75
    Par défaut
    Les cellules ne peuvent pas être différentes, celles e ntout cas qui ont levé un probleme sont identiques.
    Non apparemment le problem vient vraiment des "[...]" dans le contenu des cellules !

    Mon probleme c'est que je fais ces comparaisons sur des 100aines de lignes, avec des cellules pré-remplies, donc où je ne peux pas aller ajouter partout des "[[]" (en tout cas où j'aimerais m'en passer, sinon ça fait usine à gaz ! j'ai d'abord cherché dans les aides et forums)

    il n'existe aucun moyen sur VBA de dire : cette chaine de caractères, tu va tout lire comme des caractères simples, tu ne lira aucun caractère comme étant special" ?

    Merci déjà de vos 1ères réponses

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je crois que tu t'égares quelque peu.
    Ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox contenttoadd Like contenttoadd
    n'a pas réellement de sens
    dans la syntaxe
    le second paramètre DOIT être un FILTRE("pattern"). Un filtre revêt la forme d'une chaîne de caractères, mais reste un filtre et rien d'autre.
    si toto et titi sont des chaînes à comparer intrinsèquement, leur comparaison se fait alors par l'opérateur = et non l'opérateur Like.

    Question : que cherches-tu à vérifier, TRES EXACTEMENT ?

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Comme unparia, je trouve tes explications très confuses et difficiles à suivre.
    Mais peut-être trouveras-tu ton bonheur avec la fonction InStr() qui permet de vérifier si une chaine de caractères est incluse dans une autre. C'est l'équivalent de la fonction TROUVE de Excel.

Discussions similaires

  1. Utilisation spéciale de LIKE
    Par tonyskn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/07/2024, 10h36
  2. [HTTP] Wget-like
    Par tmonjalo dans le forum Développement
    Réponses: 2
    Dernier message: 28/07/2003, 13h39
  3. LIKE de tout ce qui n'est pas compris entre a<-&
    Par DjinnS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/07/2003, 13h09
  4. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47
  5. [VB6] [ADO] Like sur base Access
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/01/2003, 11h03

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