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 :

Imposer un format à l'utilisateur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Par défaut Imposer un format à l'utilisateur
    Bonjour,

    Dans un cadre professionnel (mise en place de tableaux de bord) j'aimerais pouvoir renseigner certains tableaux excel en imposant (pour diverses raisons) aux utilisateurs d'utiliser des formulaires.

    Actuellement, je suis confronté à deux types de difficulté :

    la première est que je n'arrive pas à imposer par le biais d'un textbox la saisie d'une date sous format (jj/mmmm/aaaa).

    je pensais, naïvement, que je pouvais écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub TxtJourDemandePref_Change()
    Dim date1 As Date
    TxtJourDemandePref.Value = date1
    If TxtJourDemandePref <> Format(Date) Then
    MsgBox ("vous devez saisir un format date ")
    'TxtJourDemandePref.Value = "" (ici je voulais associer un contrôle sur l'absence de saisie)
    Me.TxtJourDemandePref.SetFocus
    End If
    End Sub
    La deuxième difficultée, je la rencontre quand je veux importer, dans un formulaire, des informations provenant d'une même ligne d'un fichier excel, je pensais écrire la procédure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Cmbcodification_Change()
     Txtopération.Text = Application.Index(Range("operation"),Cmbcodification.ListIndex + 1)
     TxtLibelle.Text = Application.Index(Range("libelle"), Cmbcodification.ListIndex + 1)
     
    End Sub

    La récupération des informations se fait bien mais je finis inexorablement par une erreur de code 13 "incomptabilité de type" dont ne je comprends même pas le sens.

    Si un des passionnés que vous êtes pouvait m'apporter son aide, cela serait merveilleux et je l'en remercie d'avance.

    Cordialement

    Guy

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    à la première question, tu peux faire simple avec un contrôle calendrier, monthview ou datepicker
    à la seconde, tu ne veux pas passer directement par l'adresse de tes cellules?

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour Guy, Salut Mercatog,

    Bien que les solutions de Mercatog soient de très bonne qualité il me semblait intéressant d'expliquer tes "soucis"
    Pour le premier points, les dates et vide, voici la syntaxe (mais en effet, utiliser un calendrier tout prêt est vachement plus simple et plus convivial):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TxtJourDemandePref_Change()
     
    If Not IsDate(TxtJourDemandePref) Then MsgBox "Veuillez saisir une date valable"
    If Not IsEmpty(TxtJourDemandePref) Then
        'Ton code
    End If
     
    End Sub
    Toutefois j'aurais tendance à ne pas mettre l'évènement sur le change mais sur un bouton de validation.

    Pour le deuxième point c'est un problème de format mais où exactement te donne t'il l'erreur ?

    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Par défaut réponses à MERCATOG et FVANDERNEULEN
    Bonjour à tous les deux,

    Tout d'abord, je vous remercie de vos réponses respectives, cela fait du bien du se sentir épaulé quand on aborde un nouveau domaine qui n'est pas de sa propre compétence.

    En ce qui concerne le point 1 - naturellement j'avais déjà essayé de mettre un calendar mais là aussi j'ai un souci de restitution d'informations. Ce week-end je vais me permettre de vous adresser mes premiers tests. J'en ferai de même pour datepicker qui fonctionne bien quand je fais un test sur un petit fichier mais qui ne va plus dès l'instant où je l'intègre dans mon développement actuel.

    Quant au point 2 - en fait je désire reprendre les informations d'une ligne d'un fichier excel sans que l'utilisateur ne connaisse la ligne dont il s'agit. En fait la première cellule de chaque ligne est le résultat d'une concaténation de diverses autres cellules de la même ligne (ce qui donne le code du dossier) et c'est par le biais d'un combobox que l'utilisateur demande à obtenir les informations propres à ce dossier (afin d'obtenir la clé primaire pour permettre la recherchev).

    Naturellement l'objectif de ce développement est de permettre à l'utilisateur de compléter quelques informations de son dossier via le formulaire est non directement sur la ligne de son onglet. Sans abuser, l'objectif final sera bien de réintroduire l'information ainsi complétée dans le fichier excel..... mais là c'est un autre problème qui m'attend. Dois-je créer une nouvelle ligne et tenter de supprimer la ligne initiale pour éviter le doublon ou puis-je réinsérer les nouvelles informations sur la ligne initiale.

    Quoi qu'il en soit je réitère mes vifs remerciements

    Cordialement

    Guy

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    bonjour,
    les contrôles datepicker, monthview... n'ont pas de limite par rapport à la taille du fichier, ils font leur boulot quand l'utilisateur les demande et restent "inertes"
    pour le 2ème point, à partir du formulaire, écrire ou lire directement la cellule (en connaissant son adresse)
    C'est pas la peine d'ajouter une ligne et de supprimé l'ancienne, tu peux intervenir (en lecture/écriture) dans n'importe quelle zone
    Regarde du côté de .Find (en vba); tu en aura certainement besoin
    Regarde les tutos intéressants du forum
    C'est basique comme manipulation, il faut juste organiser ses idées et scruter les possibilités garantissant un fonctionnement correct et optimal

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Par défaut comment alimenter différents textbox à partir d'un même calendar
    Bonjour,

    Merci à MERCATOG de son conseil de consulter les tutoriels avant de dire sa propre difficulté. Mais quand on y connaît rien ce n'est pas évident de fureter dans tous les tutoriels avant de trouver le bon.

    Si j'ai bien compris le fonctionnement de l'objet calendar pour alimenter un seul textbox (exemple montrer dans le tutoriel) comment faire lorsqu'il y a plusieurs textbox que l'on aimerait alimenter par le même calendar et ce naturellement avec des dates différentes. Si l'utilisation d'un combobox s'impose quelle(s) procédure(s) faut-il utiliser ?

    Cordialement

    Guy

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu n'auras pas besoin de tes textbox, tu utiliseras directement tes controls Calendar, DatePicker, ou Monthview

Discussions similaires

  1. [SWING] Imposer un format à un composant
    Par BernardT dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/07/2013, 13h13
  2. Comment imposer le format des dates ?
    Par Arfigado dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 05/09/2006, 18h51
  3. [ADO.Net][C#] Comment imposer le format de date ?
    Par WELCOMSMAIL dans le forum Accès aux données
    Réponses: 3
    Dernier message: 03/05/2006, 20h21
  4. comment imposer un format de date dans DB2?
    Par Mittou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/10/2005, 08h16
  5. imposer un "format" à un int
    Par barucca dans le forum C++
    Réponses: 10
    Dernier message: 22/04/2005, 13h24

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