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 :

Inserer saisie semi-automatique dans une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut Inserer saisie semi-automatique dans une macro
    Bonjour,
    je souaite mettre en place l'outils de saisie automatique (ou semi-auto) dans une combobox. Cet outils permet l'affichage des saisie déjà effectuées

    (comme sur Google par exemple)


    Je ne sais pas si cette action est possible. D'avance merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et tu veux mettre cet "outil" où ? Dans une feuille de calculs ou dans un userform ?
    Question subsidiaire : Comment réalises-tu tes saisies ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Alors, je voudrais placer cette outils, fonction (comme vous voulez) dans un Userform, pour effectuer des saisies dans une textbox (et non combobox comme j'ai dit au dessus)

    Exemple : rentrer le Nom, et conserver en mémoire ce nom pour le retrouver avec 2 ou 3 lettres ulterieurement.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    pour le retrouver avec 2 ou 3 lettres ulterieurement
    que veux-tu dire ? Qu'en tapant deux ou trois lettres dans ton textbox, le nom s'afficherait ? C'est en effet possible dans l'événement Textboxn_Change, mais pour ça, il faudrait que tu nous confirmes ce point.

  5. #5
    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
    Il me semble qu'un ComboBox possède déjà cette fonctionnalité... Me tromperais-je ? Oui, peut-être un peu puisque la liste ne se déroule pas... L'effet visuel n'est pas le même, mais au final la fonctionnalité reste la même.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    ouskel'n'or, j'aimerai la même "fonction", le même "evenement" (je ne connais pas le terme exact) que sur google (saisie), internet (pseudo, pw...), excel..., que les saisies précedemment effectuées restent "en mémoire" pour ne pas avoir à les retaper "en entier" ulterieurement.

    zazaraignée, il s'agit bien de Textbox dans mon UF, et je ne compte pas changé (j'ai déjà du code qui s'y rattache).

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'aime bien les bricolages
    Tu peux faire ça. Tu crées un tableau de tous les noms saisis dans ton textbox.
    Tu as différents événements qui permettent de connaître la touche frappée.
    Si keycode = 13 (entrée) ou keycode =8 (Tabulation) tu ajoutes le mot saisi dans ton tableau après l'avoir redimensionné (sauf si textbox est vide)
    Ton tableau créé, dans l'événement Change de ton Textbox, tu analyses le bout de mot que tu saisis (à partir du troisième caractère renseigné) et, en parcourant ton tableau, tu en compares chaque item avec les trois caractères saisis. Si as correspondance, tu affiches l'item complet correspond.
    Interdit l'enregistrement du mot obtenu puisqu'il existe déjà, et interdit la saisie de mots de moins de quatre caractères sinon tu risque les déboires.
    Bref, pourquoi faire simple quand on peut faire compliqué ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    OK, j'vois à peu près la démarche, j 'vais essayer
    Citation Envoyé par ouskel'n'or Voir le message
    Bref, pourquoi faire simple quand on peut faire compliqué ?
    C'est pour faciliter la vie de mes petits techniciens qui rentrent leur nom (et autres informations) au moins 40 ou 50 fois par jour sur cette base (elle est à chier??? Nan, vous croyez??? ).

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et pourquoi ne pas faire une liste des techniciens et leur laisser sélectionner leur nom dans la liste. C'est plus sioux que leur demander de rentrer leur nom à chaque fois. Maintenant, si tu ne sais pas récupérer ce nom dans la liste, tu demandes
    Bonne journée.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    enfait, cette base est utilisée par l'ensemble de la boite (750 personnes+interimaire dont j'ai pas le noms), j'ai ni le courage ni le temps pour faire la liste complête. J'vais essayer ton truc.
    Thks

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai une autre proposition :
    Tu ajoutes une feuille de calculs masquée que tu nommes liste (pour correspondre à mon code.
    Dans l'userform tu mets un combobox nommé ComboBox1, ainsi qu'un autre contrôle afin de pouvoir quitter le combobox par tab ou entrée.
    Tu demandes à tes techniciens de saisir leurs noms.
    Et tu mets ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim ok As Boolean, i As Integer
        For i = 0 To ComboBox1.ListCount - 1
            ok = ComboBox1 = ComboBox1.List(i)
            If ok Then Exit For
        Next
        If Trim(ComboBox1) = "" Then Exit Sub
        If Not ok Then
            ComboBox1.AddItem ComboBox1
            Worksheets("Liste").Cells(Worksheets("Liste").Range("A65536").End(xlUp).Row + 1, 1) = ComboBox1
            ComboBox1 = ""
        End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Activate()
    Dim cell As Range
    For Each cell In Worksheets("Liste").Range("A2:A" & Worksheets("Liste").Range("A65536").End(xlUp).Row)
        If cell <> "" Then ComboBox1.AddItem cell.Value
    Next
    End Sub
    Avec ça, à chaque nouveau nom saisi, si le nom n'existe pas dans le combo, tu le complèteras du nouveau nom et tu l'ajouteras à ta feuille Liste.
    Ainsi quand tu relanceras ton appli, le combo sera mis à jour avec tous les noms préalablement saisi.

    Le combo permet, lors de la saisie de lettre, de vérifier au fur et à mesure dans sa liste l'existance du mot correspondant. C'est tout de même plus mieux bien qu'un textbox 'vec un tableau et 'vec des tests à n'en plus finir.
    Bonne journée.
    (j'ai testé... y'a ni piège ni lézard )

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ouep, ça marche, mais c'est perfectible.

    Voila, le nom qu'a rentré l'opérateur, doit ensuite s'inscrire dans un MSFlexgrid (sur mon Userform). Seulement, quand je rentre le nom et que je valide mon action, le Combobox ce vide et j'ai donc une case vide ds mon FlexG. Je suis obligé d'aller chercher manuellement le nom de la personne dans la liste de la Cbox pour que la case soit remplie.

    Je continue a chercher de mon coté apres mangé.
    BA

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Normal.
    Pour qu'un nom existant dans le combo ne s'ajoute pas au combo, j'efface Combobox1. On est obligé de passer par là.
    Par contre, si avant de l'effacer, tu places le nom dans ton MSFlexgrid ou dans une variable transitoire, ça règle le pb.
    Si tu prends l'option d'une variable tampon, il faudrait la déclarer en public en tête du code de l'userform (dans les déclarations)
    Bon app.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ah Ok très bien.
    Dis voir en passant, t'aurai pas un p'tit tuto sur les variables tampons???

    PS : Je poste mais j'ai pas encore chercher XD

    Edit
    héhé, j'ai trouvé un truc, j'vais me dépatouiller avec ça. J'te dis qd c'est good.
    Merci encore, j'aurai jamais pu pondre un code comme ça (j'aurai pas eu l'idée du moins)

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim VariableTampon as Cequetuveux
    et tu as une variable tampon du type que tu veux

  16. #16
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    c'est pourtt simple
    Merci bien, tout fonctionne

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/12/2009, 17h12
  2. Inserer du code vba dans une macro
    Par gadget27 dans le forum Général VBA
    Réponses: 4
    Dernier message: 03/05/2007, 13h35
  3. Saisie semi-automatique dans combobox
    Par method_man dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/04/2007, 16h11
  4. Saisie semi-automatique dans un formulaire
    Par Harmony dans le forum IHM
    Réponses: 7
    Dernier message: 19/03/2007, 20h35
  5. [HTML] Supprimer la saisie semi automatique dans les balises TEXT
    Par mego dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/07/2006, 16h30

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