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 :

intputbox + réponse entier sur 5 caractères avec 0 devant


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut intputbox + réponse entier sur 5 caractères avec 0 devant
    Bonjour,

    Je souhaite demander à l’utilisateur de saisir un nombre entier sur 5 caractères, celui-ci peut commencer par des zéro et je veux les garder.

    je récupère bien un entier sur 5 caractères mais si j'ai un zéro devant celui-ci n'apparait pas dans ma cellule A1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Sub Macro1()
    '
    Dim strRep
     
    Do
        strRep = InputBox("Entrez le N° de produit à contrôler")
        Loop While (Not IsNumeric(strRep) Or strRep > 99999)
     
    cells(1, 1).Value = strRep
    '
    End Sub
    Merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonjour,

    rajoute une spécification de format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Cells(1, 1).NumberFormat = "00000"
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    je viens d'essayer mais ça ne marche pas.
    en plus, je viens de me rendre compte que si je saisie 012345 il me l'accepte et me rend 12345. Or il devrait me le refuser

  4. #4
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par depi67 Voir le message
    je viens d'essayer mais ça ne marche pas.
    ..r
    montre ton code
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro1()
    '
    Dim strRep
     
    Do
        strRep = InputBox("Entrez le N° produit à contrôler")
        Loop While (Not IsNumeric(strRep) Or strRep > 99999)
     
    cells(1, 1).Value = strRep
    cells(1, 1).NumberFormat = "00000"
     
     
    '
    End Sub
    En fait, actuellement je mets la réponse dans une cellule pour pouvoir la visualiser, ultérieurement elle sera dans une variable de travail.

  6. #6
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par depi67 Voir le message
    ...

    En fait, actuellement je mets la réponse dans une cellule pour pouvoir la
    visualiser, ultérieurement elle sera dans une variable de travail.
    Ok et le code il fonctionne ou pas ... ? s'il fonctionne pas c'est quoi le probléme ?
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    mon code ne fonctionne qu'à moitié

    mon problème c'est lorsque je saisie par exemple :
    012345 => il me l'accepte et me renvoie 12345 alors qu'il ne devrait pas
    01234 => il me l'accepte et me renvoie 1234 alors que je devrais avoir 01234

    mon soucis c'est qu'il ne tient pas compte du zéro devant.
    je souhaiterais également que si je saisisse 1234 il me le refuse

    en fait, je voudrais que le N° de produit soit un entier sur 5 caractères (avec éventullement les 0 devant)

    est ce qu'il ne faudrait pas que ma zone soit du texte ? et que les valeurs saisies soient numériques ? Mais comment faire ?

  8. #8
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Pour pouvoir avoir des 0 devant tu ne peu pas utiliser un type numérique ..utilise une string ..:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim strRep As String
     
    Do
        strRep = InputBox("Entrez le N° produit à contrôler")
    Loop While (Not IsNumeric(strRep) Or strRep > 99999)
    strRep = Right("0000" & strRep,4)
     MsgBox "Valeur Saisie :>" & strRep & "<"
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    je viens de tester le code que tu m'as envoyé mais je n'ai pas le résultat que je souhaitais.
    en effet, quand je saisie :
    01234 il me renvoie 1234 aul ieu de 01234
    012345 il me renvoie 2345 au lieu de me le refuser
    12345 il me renvoie 2345 au lieu de 12345

    mes n° de produit peuvent aller de 00001 à 99999

  10. #10
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    à oui c'est 5 caractéres pas 4 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ..
    Loop While (Not IsNumeric(strRep) Or Len(strRep >5))
    strRep = Right("00000" & strRep,5)
    ...
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Étant donné qu'on peut entrer n'importe quoi dans un InputBox et qu'il faut obligatoirement vérifier ce qui s'y trouve, son format, son type, sa longueur et voire autre chose le cas échéant; je me demande s'il ne serait pas plus judicieux de créer ton propre UserForm et d'y placer un composant MaskEdit ce qui obligerait l'utilisateur à entrer la valeur dans le bon format et à la bonne longueur. Une fois ceci fait, il serait plus facile d'entrer la valeur dans la cellule en lui donnant le format souhaité, soit avec les zéros à gauche si nécessaire. Quitte à forcer le format Texte.

    Le composant MaskEdit devrait se trouver dans les composants supplémentaires (menu Outils, Composants... Microsoft Masked Edit Control 6.0 ou une version plus récente). S'il ne s'y trouve pas, tu dis.

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    effectivement le maskedit serait l'idéal,mais je ne le trouve pas.
    lorsque je regarde dans outils je n'ai pas Composant.
    en fait, je crée une macro dans Excel est ce que ça peut jouer ?

  13. #13
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    C'est possible... Chez moi j'ai VB6 et MsOffice XP. Alors des composants, je n'en manque pas!

    Alors, crée un UserForm et gère la validation des entrées dans le code du UserForm. Ce sera toujours plus souple qu'un InputBox car il te sera possible de mesurer la longueur du contenu d'un TextBox durant la saisie. Ensuite, sur le clic du bouton, tu pourra vérifier si les valeurs entrées sont bien numériques, etc. pour ensuite entrer la donnée saisie dans la bonne cellule et dans le bon format et finalement, masquer le UserForm.

  14. #14
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Une solution éventuelle qui devrait convenir
    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
    Sub test()
    Dim Result As Variant
     
    reco:
    Result = Application.InputBox("veuillez saisir le n° de produit", Type:=1) '<-- type 1 pour obliger une saisie numérique
     
    'si l'utilisateur clique sur annuler
    If Result = False Then
        MsgBox "Vous avez interrompu la procédure"
        Exit Sub
    End If
     
    'vérification de la longueur de la saisie
    Select Case Len(Result)
        Case Is <= 5 '<-- si inférieur à 5 chiffres on ajoute des 0
            Result = Right("0000" & Result, 5)
        Case Is > 5 '<-- si supérieur à 5 chiffres on recommence
            MsgBox "la référence ne peut comporter que maximum 5 chiffres"
            GoTo reco
    End Select
     
    MsgBox "la ref. saisie est : " & Result
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  15. #15
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    Super ça fonctionne comme je veux
    Merci à tous pour votre aide.

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

Discussions similaires

  1. Convertir un entier en caractère avec des 0 devant
    Par Oluha dans le forum Développement
    Réponses: 12
    Dernier message: 28/08/2017, 13h37
  2. Réponses: 6
    Dernier message: 30/01/2015, 09h37
  3. Réponses: 1
    Dernier message: 09/09/2011, 20h44
  4. Ecrire un entier sur N caractères
    Par messahel dans le forum Pascal
    Réponses: 1
    Dernier message: 20/06/2009, 22h28
  5. afficher un entier sur 2 caractères
    Par semaj_james dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 10/05/2006, 15h41

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