Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Générer une chaines de caractères depuis une

Sujet résolu
    9 novembre 2017 à 12:50:18

    Bonjour tout le monde.

    J'ai besoin de votre aide. Je débute en VBA sur Access, et j'aurai besoin de savoir un petit truc :

    Est-il possible de générer une chaîne de caractères en prenant comme base une REGEX ?

    J'ai regardé un peu sur Google, mais je ne trouve pas grand chose orienté VBA. C'est souvent du JAVA ou du PHP.

    Vous pouvez m'aidez ?

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      9 novembre 2017 à 17:20:54

      Salut,

      Tu peux utiliser l'objet VBScript.RegExp pour manipuler les expressions régulières.

      Un tuto ici: http://cafeine.developpez.com/access/tutoriel/regexp/

      • Partager sur Facebook
      • Partager sur Twitter
        9 novembre 2017 à 17:27:54

        J'ai déjà feuilleté ce Tuto, et j'ai pas l'impression qu'il parle de génération de strings depuis une REGEX.

        EDIT : J'ai peut-être trouvé une solution en posant la question sur le forum de developpez.net

        On m'a parler de la fonction CHR(). Du coup, je me dit que peut-être qu'en l'associant à un RND pour générer un code ASCII aléatoire, je pourrais générer un code comme je le souhaite. Ca me semble un peu barbare overkill, mais si ça marche, c'est le principal. Je vous tiens au courant (sait-on jamais, ça pourrait aider quelqu'un à l'avenir).

        -
        Edité par Hexilas 10 novembre 2017 à 10:08:59

        • Partager sur Facebook
        • Partager sur Twitter
          10 novembre 2017 à 12:16:54

          La fonction replace de l'objet regex ne peut-elle faire le job ?

          Peux-tu donner un exemple de ce que tu veux ?
          Histoire dêtre sur qu'on parle de la meme chose.

          • Partager sur Facebook
          • Partager sur Twitter
            10 novembre 2017 à 13:09:20

            Je voudrais générer un mot de passe suivant le schéma que je passe en REGEX.

            Quelque chose comme :

            tr34EE12+*

            Soit :

            Deux caractères alphabétiques minuscules

            Deux caractères numériques

            Deux caractères alphabétiques majuscules

            Deux caractères numériques

            Deux caractères spéciaux.

            EDIT : En effet, j'ai pu faire ce que je voulais en couplant CHR et RND. C'est brutal, mais ça marche. Un truc du genre Chr(Int((90 - 65 + 1) * Rnd + 65))  me génère bien un caractère aléatoire. Après, j'ai juste à jongler avec les balises pour déterminer si je veux une majuscule, une minuscule ou un chiffre/nombre.

            Merci pour le coup de main.

            -
            Edité par Hexilas 10 novembre 2017 à 15:32:04

            • Partager sur Facebook
            • Partager sur Twitter
              10 novembre 2017 à 17:14:42

              Je pense comprendre, tu prends l'utilisation des regex à l'envers.

              Elles servent à valider un motif, remplacer un morceau de chaine par un autre en fonction d'un motif, ou extraire une partie de chaine en fonction d'un motif.

              • Partager sur Facebook
              • Partager sur Twitter
                13 novembre 2017 à 8:48:35

                Donc du coup, je ne peux pas utiliser les regex comme masque de génération ?

                • Partager sur Facebook
                • Partager sur Twitter
                  13 novembre 2017 à 10:59:05

                  Non, tu ne peux pas.

                  Gare bien en tête que les expressions régulières sont un outil de validation / recherche / extraction de données selon un motif.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 novembre 2017 à 11:13:04

                    D'accord ok. Merci pour la précision.

                    Du coup il n'y a pas de moyen plus "clair" de générer quelque chose selon un modèle qu'en lui balançant des CHR(XX) pour chaque caractère que l'on veut ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 novembre 2017 à 12:15:52

                      Il n'y a pas vraiment mieux.

                      Mais pour plus de clarté, tu peux te faire une fonction.
                      Par exemple:

                      Public Function getRandomCharacterBetween(ByVal first As String, ByVal second As String) As String
                          Dim delta As Integer
                          Dim random As Integer
                          
                          Debug.Assert first < second
                          
                          Randomize
                          delta = Asc(second) - Asc(first) + 1
                          random = Int(delta * rnd)
                          getRandomCharacterBetween = Chr(Asc(first) + random)
                      End Function
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 novembre 2017 à 13:18:09

                        Ouais il faut que je me fasse à ce système de fonction. Ca rendrait mes blocs un peu plus clair et lisible. Et plus facile à manipuler surtout.

                        Quoiqu'il en soit, je te remercie pour ces éclaircissements et ton aide.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        [VBA] Générer une chaines de caractères depuis une

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown