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

  1. #1
    Rédacteur
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : février 2008
    Messages : 2 805
    Points : 6 852
    Points
    6 852

    Par défaut [Tutoriel] Approche d'une résolution de besoin en VBA - niveau débutant - Obliger une saisie numérique dans un

    Bonjour,

    Ci-dessous, le lien vers un nouveau tutoriel :
    « Approche d'une résolution de besoin en VBA - niveau débutant - Obliger une saisie numérique dans une TextBox »

    Le but de ce tutoriel est :

    • De présenter une bonne approche de la résolution d’un problème simple en VBA.
    • D’expliciter en détail la démarche employée pour arriver à la solution voulue.
    • D’expliciter les instructions VBA retenues à cette fin.
    • De proposer un fichier téléchargeable qui présente une solution à un problème qui est source de fils de questions récurrentes.


    Lien vers ce tutoriel

    Vos commentaires et remarques seront les bienvenus dans l'esprit de nos forums.

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    N'oubliez pas de mettre : ..quand c'est le cas !

  2. #2
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : mai 2006
    Messages : 542
    Points : 710
    Points
    710

    Par défaut

    Bonjour à tous
    Bonjour Ormonth

    Il m'est toujours agréable de lire les tutos de ce site, mais, surtout, à chaque fois je découvre et j'apprends encore et encore.

    Merci pour ce travail

    Eric

  3. #3
    Rédacteur/Modérateur

    Avatar de Philippe JOCHMANS
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2005
    Messages
    20 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2005
    Messages : 20 040
    Points : 50 198
    Points
    50 198

    Par défaut

    Bonjour

    Ayant eut la chance de lire ce tuto, j'ai adoré l'approche qui est faite pour résoudre un problème

    Philippe
    Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
    Vous pouvez consulter mes articles sur Access et PowerPoint et n'oubliez pas de consulter les FAQs MS Office

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : février 2012
    Messages : 49
    Points : 21
    Points
    21

    Par défaut

    Bonjour DIDIER,
    J'ai lu votre tutoriel il est très intéressant c'est un travail de Pro.
    Mais qu'on est il pour une VSFlexGrid. Comment peut on exploiter le tutoriel pour une VSFlexGrid en cellule courante du tableur?
    J'ai essayé de l'appliquer mais je me suis bloqué sur l'instruction en rouge (voir code ci aprés) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub VSFlexGrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
    If InStr("1234567890.", Chr(KeyAscii)) = 0 Or (InStr(VSFlexGrid.????, ".") <> 0 And Chr(KeyAscii = ".")) Then
     KeyAscii = 0: Beep
    End If
    End Sub
    Cordialement

  5. #5
    Rédacteur
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : février 2008
    Messages : 2 805
    Points : 6 852
    Points
    6 852

    Par défaut

    Bonjour,

    Je n'ai pas ce contrôle et ne l'ai jamais utilisé, à première vue, il est sous licence payante et je n'ai pas ce projet d'acquisition.

    Bref, je ne peux donc pas tester quelque-chose....

    désolé,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    N'oubliez pas de mettre : ..quand c'est le cas !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : février 2012
    Messages : 49
    Points : 21
    Points
    21

    Par défaut

    Bonjour,
    Ce Control n'est pas sous licence payante, au moins dans mon poste.
    J'ai résolut le problème à mon niveau. Consulté ce lien :
    http://www.developpez.net/forums/d12...d/#post7020796

  7. #7
    Rédacteur
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : février 2008
    Messages : 2 805
    Points : 6 852
    Points
    6 852

    Par défaut

    Citation Envoyé par davido84
    Bonjour,
    après être tombé sur votre tutoriel, l'avoir étudié et adapté à mes besoins, je me permets de vous contacter afin de vous remercier pour ce travail et vous signaler les 2 points suivants :
    1) le code proposé dans le Private Sub txtEcritFeuille_KeyPress permet de saisir une virgule avant tout chiffre, ce qui fait qu'une saisie telle que ",123" est acceptée. Même si une telle saisie dans une feuille de calcul est acceptée et automatiquement modifiée en "0,123", la Sub txtEcritFeuille_BeforeUpdate la rejette puisque la fonction ChainePasOK ne l'accepte pas.
    J'ai personnellement modifié l'événement KeyPress comme suit afin d'empêcher ce type de saisie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or txtEcritFeuille.SelStart > 0 And Chr(KeyAscii) = "-" _
         Or (InStr(txtEcritFeuille.Value, ",") <> 0 Or txtEcritFeuille.SelStart = 0) And Chr(KeyAscii) = "," Then
          KeyAscii = 0: Beep
       End If
    2) l'ayant adapté pour des saisies de latitude et de longitude je me suis aperçu que la fonction ChainePasOK rejetait des données numériques dont le nombre de chiffres après la virgule dépassait 13, ce qui était problématique dans certains cas (la partie "If Len(CStr(Val(strpass))) <> Len(strpass)" fait barrage).
    J'ai personnellement résolu le problème en utilisant une expression rationnelle à la place de cette fonction.
    Comme ceci dépasse peut-être le cadre de votre tutoriel puisqu’il s'adresse aux débutants, je ne vous détaille pas l'expression utilisée mais si cela vous intéresse je pourrai vous la communiquer.
    Ce type de travail étant à encourager, je me suis donc permis ce petit retour.
    Merci encore !
    Cordialement
    Bonjour,

    Je vous remercie de ce retour, effectivement comme annoncé dans le titre « Approche d'une résolution de besoin en VBA niveau débutant Obliger une saisie numérique dans une TextBox », ce Tuto est orienté débutant et sur l'approche de résolution de problème, il vise à dire que pour arriver à ses fins, on ne se jette pas sur le code, mais on construit d’abord ce qu’on pourrait appeler un cahier des charges.

    Donc, comme vous l’avez si bien fait, si le besoin est proche du sujet traité, il convient d’en réécrire certaines parties au niveau liste des besoins et d’adapter ensuite les code aux besoins.

    Sinon,

    Pour ce qui est de l’entrée d’un nombre à virgule sans chiffre devant, c’est le fonctionnement de la fonction VAL (comme ci-dessous) qui en est responsable comme vous le montrerait l’ajour d’une ligne du genre Mavar = Val(strpass) et la visualisation de MaVAr dans la fenêtre variable locale.Le rajout du zéro fait que les longueurs de chaînes sont différentes.

    Pour ce qui des 13 décimales, en fait 14 passent aussi genre « 1,23456789123456 », la limite n’est pas sur les décimales, mais, en simplifiant, sur le nombre de chiffres significatifs liés au Double retourné par la fonction Val qui est de 15. De toutes façons, c’est aussi la limite des chiffres significatifs dans une cellule Excel, au-delà on passe dans la gestion des grands nombres (cf articles y afférents). En VBA en utilisant le type Decimal, on peut monter à 28 chiffres et faire des pirouettes après.
    Comme vous le dites cela dépasse le cadre de ce tutoriel, mais votre approche peut intéresser des lecteurs et faire l’objet d’un post dans le forum contribuez, sur les grands nombres, si ceci n’a pas déjà été traité.

    cordialement,

    Didier

    PS : merci de ne pas traiter de sujets techniques par MP
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    N'oubliez pas de mettre : ..quand c'est le cas !

  8. #8
    Candidat au Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Finance

    Informations forums :
    Inscription : mai 2017
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Merci pour ce tutoriel, qui répond parfaitement à mon besoin (obliger la saisie de chiffres pour des infos clients ex: numéro de téléphone, numéro SIRET,etc.)

    Je rencontre un problème sur un champ où l'utilisateur renseigne le chiffre d'affaires prévus pour le nouveau client, les lettres / symboles renvoient bien un message d'erreur;
    En revanche le symbole € donne le message d'erreur suivant : "Erreur d'exécution '5': Argument ou appel de procédure incorrect".

    J'ai repris votre code presque tel quel en ajoutant une msgbox en cas d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CTR3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: MsgBox "Saisie non valide", vbCritical
     
    End Sub
    J'ai essayé en téléchargeant le fichier disponible dans le tutoriel et j'obtiens la même erreur.

    Avez vous une idée de l'origine du bug ?

    Merci beaucoup

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    août 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : août 2014
    Messages : 7
    Points : 7
    Points
    7

    Par défaut Affectation à plusieurs Textbox?

    Bonjour!
    J'ai beaucoup apprécié votre tutoriel Je suis de niveau débutant en VBA. J'aimerais svp savoir s'il est possible d'affecter votre code à plus d'une TextBox? Par exemple, j'ai 34 textbox. J'ai tenté d'inscrire Textbox(1,2,3, etc.)_KeyPress, mais ça ne fonctionne pas... Le message d'erreur est Erreur de compilation : Attendu : identificateur.

    Private Sub textbox2_KeyPress(ByVal KeyAscii As MSFORMS.ReturnInteger)
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
    end sub

    Je vous remercie grandement pour avoir pris le temps de lire cette question et peut-être même d'y répondre

    Bonne journée!

  10. #10
    Débutant  
    Avatar de patricktoulon
    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    13 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 13 679
    Points : 20 432
    Points
    20 432
    Billets dans le blog
    4

    Par défaut re

    bonjour orestie

    tu melange les sujets
    ce que tu cherche c'est a genérer un meme evenement keypress pour tes 34 textboxs ca n'a rien voir

    je te propose d'ouvrir ton propre post a fin de ne pas poluer la discussion et je te parlerais de module classe qui servent (justement et entre autre a ca )
    a bientot dans ton post
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Obliger une saisie numérique dans une VSFlexGrid?
    Par GOLDINGMAROC dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/12/2012, 13h23
  2. [DAO]Parcourir une table Access en VB / Pb niveau débutant
    Par EtienneG dans le forum VBA Access
    Réponses: 10
    Dernier message: 25/04/2007, 06h35
  3. [VBA-E] Débutante, insérer une image dans une cellule
    Par sab_etudianteBTS dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 23/03/2007, 16h55
  4. [VBA-E]Execution d'une macro access sous excel VBA
    Par virtualinsanity dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 21/04/2006, 18h27

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