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 :

Décalage de surlignage


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Par défaut Décalage de surlignage
    Bonjour,

    Je cherche à surligner une une chaîne passée en paramètre dans un texte.
    Pour cela j'ai trouvé mes idées sur ce forum et mon code donne quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        TexteCode.SetFocus
        TexteCode.SelStart = InStr(TexteCode.Value, Arguments(1))
        TexteCode.SelLength = Len(Arguments(1))
    Avec Arguments(1) étant évidemment la chaîne recherchée.

    Cela fonctionne ... presque ! En effet quelque soit le texte dans lequel je cherche cette occurence, le surlignage est toujours légèrement décalé de quelques caractères par rapport au mot recherché. Ce décalage varie de 1 à plusieurs caractères suivant le texte dans lequel je recherche.

    Exemple :

    Texte complet :
    1) "Blanche neige et les sept nains"
    2) "Il y a longtemps qu'il n'y avait pas eu tant de neige par ici"

    Texte à rechercher :
    "Neige"

    Ma fonction me surligne (c'est un exemple fictif, je n'ai pas testé) :
    1) "e nei"
    2) "eige "


    D'où vient ce décalage ? Et comment résoudre ce problème ? Peut-être est-ce un problème lié à mon autre problème posté tout à l'heure concernant l'interprétation des retours chariots dans mon Textbox ?

    Merci

  2. #2
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Bonjour,

    Le problème réside dans l'indexation de chaque caractère dans une chaine. InStr renvoie le nombre de caractère depuis le début de la chaine mais pas la position du premier caractère à trouver.

    Un chaine de caractère commence avec l'indice 0 donc il faut retrancher 1.

    Voici un petit exemple avec manipulation de chaine de caratères :

    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
     
    Public Sub manipulationDeChaines()
      Dim positionMotTrouve As Long
      Dim longueurDuMot As Long
      Dim longueurDeLaChaine As Long
      Dim partieDroite As String
     
     
      positionMotTrouve = InStr("Blanche neige et les sept nains", "neige") - 1
      longueurDuMot = Len("neige")
      longueurDeLaChaine = Len("Blanche neige et les sept nains")
      partieDroite = Right("Blanche neige et les sept nains", longueurDeLaChaine - positionMotTrouve)
      'Le résultat
      MsgBox ("résultat " & Left(partieDroite, longueurDuMot))
     
    End Sub
    Cordialement,

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Par défaut
    Merci Tonyo. Je connaissais le coup du -1 mais le problème chez moi vient du fait que le surlignage n'est pas tout le temps décalé d'1 caractère, quelquefois c'est de 3 d'autre fois de 5 etc. : /

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Par défaut
    En fait ça va plus loin que ça. C'est un problème de visualisation je pense, car quand j'ouvre ma table dans access et que je surligne un mot et que je le copie, quand je le colle autre part, ce n'est pas ce mot là qui est copié mais des caractères qui se retrouvent 5 ou 6 caractères avant.

  5. #5
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Effectivement, là il y a un soucis.

    Je pense qu'un petit coup de vérification des processus en cours d'exécution et d'antivirus ne ferrai pas de mal.

    Il faudrait aussi tester la mémoire. Access est sensible aux problèmes de mémoire.

    Je ne pense pas que ce problème vienne d'Access même, mais plutôt du système d'exploitation.

Discussions similaires

  1. [FLASH MX] Décalage de l'image
    Par littleman dans le forum Flash
    Réponses: 3
    Dernier message: 20/10/2004, 03h31
  2. [C#] Surlignage d'un élement d'une ListView
    Par tontonplaisir dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/09/2004, 15h35
  3. [Débutante] Masquage et décalages
    Par bolo dans le forum Assembleur
    Réponses: 27
    Dernier message: 16/07/2004, 13h28
  4. Réponses: 14
    Dernier message: 01/09/2003, 22h46
  5. Décalage graphique et souris
    Par Sub0 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 27/06/2003, 09h44

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