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 :

Champs texte et caractère interdits


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut Champs texte et caractère interdits
    Bonjour ,

    j'insère dans une table grâce à insert into un texte retourné par une inputbox.

    Seulement à l'insertion de certaines chaînes j'ai des erreurs.

    Je cherche à effectuer un test sur ma chaîne avant de l'insérer.
    Pour cela j'aimerais connaître tous les caractères pouvant poser problème et trouver une fonction me permetant de savoir si dans ma chaîne les caractères sont présents.

    Pouvez vous m'éclairer s'il vous plait?

  2. #2
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Tu devrais pouvoir faire ça avec la fonction InStr :
    InStr, fonction

    Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d'une chaîne à l'intérieur d'une autre chaîne.

    Syntaxe

    InStr([start, ]string1, string2[, compare])

    La syntaxe de la fonction InStr comprend les arguments suivants :

    start : Facultatif. Expression numérique qui définit la position de départ de chaque recherche. Si cet argument est omis, la recherche commence au premier caractère. Si l'argument start contient une valeur de type Null, une erreur se produit. L'argument start est obligatoire si l'argument compare est indiqué.
    string1 : Expression de chaîne dans laquelle la recherche est effectuée.
    string2 : Expression de chaîne recherchée.
    compare : Facultatif. Indique le type de comparaison de chaînes. Si l'argument compare est de type Null, une erreur se produit. Si l'argument compare est omis, la valeur de l'instruction Option Compare détermine le type de comparaison. Indiquez un LCID (LocaleID) correct pour respecter les règles locales spécifiques à la comparaison.
    La fontion te retourne la position du premier caractère de la chaine recherchée, si elle est trouvée, sinon, elle retourne 0 si la chaine n'a pas été trouvée
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  3. #3
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Merci , quand aux caractères à éviter je vais prendre tout ceux qui ne sont pas dans l'aphabet comme ça je n'aurais pas de problème.


  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 628
    Points : 34 333
    Points
    34 333
    Par défaut
    Bonjour,
    voir dernier post de ce thread pour une méthodo :
    http://www.developpez.net/forums/sho...d.php?t=559959
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    J'avais eu des problèmes semblables en php en insérant des caractères comme ' dans une BDD mysql, car ce caractère était un caractère utilisé comme séparateur dans le INSERT INTO. Du coup, j'ai utilisé une fonction (je crois StrReplace() pour ajouter un \ devant tous les ' comme ça, le caractère était considéré comme du texte et non un séprateur de champ.
    Je pense que tu dois avoir des équivalents en VBA
    Il faudrait que tu fasses un Debug.Print de ta requète pour savoir de quel(s) caractère(s) vient exactement le problème
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 628
    Points : 34 333
    Points
    34 333
    Par défaut
    On doit remplacer par exemple un ' par ''
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(monString_leopard,"'","''")
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Voilà, c'est ça, je connaissais pas la fonction VBA, mais il y a toujours des équivalents

    Edit : Sympa l'exemple de chaine de caractères
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  8. #8
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Voila le code que j'ai pondu :

    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
    38
    j = 0
        For i = 33 To 47
            tCarac(j) = Chr$(i)
            j = j + 1
        Next i
        For i = 58 To 64
            tCarac(j) = Chr$(i)
            j = j + 1
        Next i
        For i = 91 To 96
            tCarac(j) = Chr$(i)
            j = j + 1
        Next i
        For i = 123 To 126
            tCarac(j) = Chr$(i)
            j = j + 1
     
    'Affecte à une variable le nom d'événement rentré par l'utilisateur dans l'inputbox
            nomEvt = InputBox("Entrez le nom de l'événement", "Ajout d'événement")
     
    'Si l'utilisateur à tapé quelquechose
            If (nomEvt = "") = False Then
     
                testStr = 0
                'Test la chaîne entrée
                For i = 0 To 27
                    test = InStr(1, nomEvt, tCarac(i))
                If IsNumeric(test) = True and test <> 0 Then
                    MsgBox ("Veuillez entrer une chaîne de caractère valide")
                    i = 28
                    testStr = 1
                End If
                Next i
     
                If testStr = 0 Then
                 'Je continu mon traitement
     
        Next i
    Je rempli un tableau avec les caractères interdit , je test ma chaîne pour chaque valeur dans le tableau. instr me renvoi la position du caractère trouvé ou 0 s'il na rien trouvé.Si test est numérique , je suis dans les cas que je souhaite traiter , s'il vaut 0 je continu mon traitement car aucun caractère interdit n'é été trouvé, sinon j'averti l'utilisateur.

    Merci pour tout.

    Au revoir.

    ps : oups j'avais pas vu ce que vous avez écrit. Merci pour votre aide , je verrai par la suite si vos méthodes sont nécéssaires.

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

Discussions similaires

  1. [WD15] Passage de champ texte x caractères en mémo
    Par Jeje9 dans le forum WinDev
    Réponses: 3
    Dernier message: 02/10/2014, 15h57
  2. Réponses: 3
    Dernier message: 26/11/2006, 21h05
  3. Réponses: 2
    Dernier message: 05/11/2006, 22h13
  4. Réponses: 1
    Dernier message: 28/07/2006, 19h40
  5. Réponses: 1
    Dernier message: 18/08/2005, 15h11

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