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 :

Tester la chaine de caractères saisie dans InputBox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    industrie de l'habillement
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : industrie de l'habillement
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut Tester la chaine de caractères saisie dans InputBox
    Bonjour,

    j'ai une macro pour enregistrer une matrice vierge avec le nom de la référence que je demande de saisir dans InputBox = NomFichier
    il faut que cette référence comporte 2 lettres puis 5 chiffres ex : BY22145
    Comment peut-on vérifier que NomFichier suit cette règle svp?
    Je souhaiterais avoir un message d'erreur si la saisie n'est pas conforme, et revenir à la demande d'une nouvelle saisie.

    Je vous remercie par avance de vos réponses.
    Ci-dessous la macro de création :
    Michèle



    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
    Sub CreerNouvelleRef()
    '
    ' CreerNouvelleReference Macro
    ' Creer nouvelle reference avec chemin du dossier origine
    '
        Dim Chemin As String, NomFichier As String
     
    Chemin = Application.ThisWorkbook.Path
    Chemin = Chemin & "\"
    NomFichier = InputBox("Taper la ref du modèle")
        Sheets("SUIVI MODELE").Visible = True
        Sheets("SUIVI MODELE").Select
        ActiveSheet.Unprotect
    Range("G1:I2").Select
        ActiveCell.FormulaR1C1 = NomFichier
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
            True, AllowFormattingCells:=True
        ActiveWindow.SelectedSheets.Visible = False
    Sheets("PROTO 1").Select
    ActiveSheet.Unprotect
    Range("G1:I2").Select
        ActiveCell.FormulaR1C1 = NomFichier
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
            True, AllowFormattingCells:=True
    ThisWorkbook.SaveAs Chemin & NomFichier & ".xlsm"
        End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour Michèle, pour vérifier si la saisie de la référence suit les règles spécifiées (2 lettres suivies de 5 chiffres), vous pouvez utiliser une expression régulière. Voici comment:



    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
    Sub CreerNouvelleRef()
        Dim Chemin As String, NomFichier As String
        Dim re As Object, matches As Object
     
        Chemin = Application.ThisWorkbook.Path & "\"
     
        Set re = CreateObject("VBScript.RegExp")
        re.Pattern = "^[A-Z]{2}\d{5}$" ' Expression régulière pour la vérification
     
        Do
            NomFichier = InputBox("Taper la ref du modèle")
     
            If NomFichier = "" Then Exit Sub ' Sortie de la macro si l'utilisateur clique sur Annuler
     
            Set matches = re.Execute(NomFichier)
     
            If matches.Count = 0 Then
                MsgBox "La saisie de la référence est incorrecte. Veuillez réessayer.", vbExclamation
            End If
        Loop While matches.Count = 0
     
        Sheets("SUIVI MODELE").Visible = True
        Sheets("SUIVI MODELE").Select
        ActiveSheet.Unprotect
        Range("G1:I2").Value = NomFichier
        ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
        ActiveWindow.SelectedSheets.Visible = False
     
        Sheets("PROTO 1").Select
        ActiveSheet.Unprotect
        Range("G1:I2").Value = NomFichier
        ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
     
        ThisWorkbook.SaveAs Chemin & NomFichier & ".xlsm"
    End Sub
    La macro utilise une boucle Do...Loop pour demander à l'utilisateur de saisir la référence jusqu'à ce qu'elle corresponde au format requis. Si la saisie ne correspond pas à la règle définie, un message d'erreur est affiché, et l'utilisateur est invité à saisir à nouveau.
    L'expression régulière "^[A-Za-z]{2}\d{5}$" est utilisée pour vérifier si la saisie correspond à 2 lettres ([A-Z]) suivies de 5 chiffres (\d{5}). Si la saisie est valide, la boucle se termine et le reste de la macro est exécuté normalement.
    Si vous voulez autoriser les lettres minuscules, il faut alors écrire [A-Za-z] au lieu de [A-Z].

  3. #3
    Membre averti
    Femme Profil pro
    industrie de l'habillement
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : industrie de l'habillement
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut
    Bonjour Franc,

    Je viens de tester, et tout fonctionne très bien.
    J'ai vu aussi que vous aviez nettoyé ce qui n'était pas utile dans la macro; j'ai donc rectifié de mon côté.

    Un grand merci pour votre réponse, et votre efficacité !
    Tout est ok de mon côté :-)

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

Discussions similaires

  1. [XL-2010] Empêcher la saisie de caractère spéciaux dans Inputbox()
    Par baptou42 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/05/2014, 08h19
  2. Repérer des chaines de caractères formatée dans du texte
    Par jeremiegrenoble dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/02/2006, 13h06
  3. [SQL7] chaines de caractères stockées dans une colonne image
    Par fredoche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2004, 11h12
  4. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12

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