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 :

[VBA-E] userform TextBox


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut [VBA-E] userform TextBox
    Bonjour,
    j'ai créé un userform avec une Combobox et un textbox
    Je souhaiterai afficher dans la textbox une valeur correspondant au choix effectuer dans la comboBox.
    Par exemple, si je choisi 1980 dans la comboBox, j'affiche 26 dans la textbox.
    C'est la formule recherchev de Excel.
    Voilà mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub ComboBox2_Change()
    Worksheets("Feuil2").Select
    [E10] = UserForm1.ComboBox2
    Worksheets("Feuil2").Range("E10").Select
        Selection.NumberFormat = "0"
    End Sub
    Private Sub TextBox3_Change()
    If UserForm1.ComboBox1.Value <> "" Then
    UserForm1.TextBox1.Value = Worksheets("Feuil2").Range("E12").Value
    End If
    End Sub
    Dans la Combox en RowSource, j'ai Feuil2!B1B15 (Année de 1977 à 1991). avec en face en colonne C les correspondance en année.
    Dans la cellule E12, j'ai mis la formule =RECHERCHEV(E10;B2:C15;2)

    1er souci : la valeur de ma case E10 n'est pas un nombre ? (POURQUOI)
    2ème souci : rien ne s'affiche dans ma textbox

    Si vous avez un exemple de code ou que vous pouviez me corriger mon code. Merci d'avance.

  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 543
    Points
    15 543
    Par défaut
    Un truc en passant : Indente ton code, il sera plus lisible
    Private Sub TextBox3_Change()
    If UserForm1.ComboBox1.Value <> "" Then
    UserForm1.TextBox1.Value = Worksheets("Feuil2").Range("E12").Value
    End If
    End Sub
    Je réponds à ça.
    Si tu sélectionnes une valeur dans ton combo, c'est le combo qui est actif, pas le TextBox.
    Donc, déjà, mettre ton code dans TextBox3_Change(), ça peut pas marcher
    Mets ça dans Private sub ComboBox1_Click()

    Ensuite, pour récupérer la valeur sélectionnée dans ton combo, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaValeur = ComboBox1.List(ComboBox1.listindex)
    Ce qui devrait donner à peu près
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private sub ComboBox1_Click()
         If UserForm1.ComboBox1.List(ComboBox1.listindex) <> "" Then 
              UserForm1.TextBox1.Value = Worksheets("Feuil2").Range("E12").Value 
         End If 
    End Sub
    Comme je vais manger, je n'ai pas le temps de vérifier mais tu feras bien ça pour nous...

    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Ok pour ton commentaire OUSKLNOR voilà donc ce que j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub ComboBox2_Change()
         Worksheets("Feuil2").Range("E10").Value = UserForm1.ComboBox2
               If UserForm1.ComboBox2.List(ComboBox2.ListIndex) <> "" Then
                   TextBox3.Value = Worksheets("Feuil2").Range("E12").Value
               End If
    End Sub
    Voilà la réponse quand je le test.

    "Impossible de définir la propriété Value. le type ne correspond pas."

    Je ne comprend pas.

    Ma question mieux posée : je veux choisir l'année de naissance de la personne (à partir d'une combobox) et je souhaite récupérer son âge dans la textbox3.
    Merci de tonaide OUSKLNOR

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Heuuu, je vais peut-être dire une bêtise, mais tu ne pourrais pas tout simplement calculer l'age en faisant une soustraction à partir de la date courante?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Peut être mais le problème est comment afficher la valeur dans la texbox

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox2_Change()
       If UserForm1.ComboBox2.Value <> "" Then 
          UserForm1.TextBox1.Value = Year(Date) -UserForm1.ComboBox2.Value
       End If
    End Sub
    Un truc dans ce genre...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    ok cela fonctionne.
    Pourquoi quand je met les date 1980 à 1990 dans ma ComboBox dans RowSource; dès que je veux les utiliser dans une cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [C3] = UserForm1.ComboBox1
    Alors la valeur qui est dans la cellule C3 n'est pas reconnue comme un nombre !!!

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [C3] = UserForm1.ComboBox1.Value
    Vu que je ne suis pas certain que la propriété par défaut d'une Combo soit Value.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Merci de ton aide maintenant tout fonctionne comme je le souhaite.
    Voici le code que j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub ComboBox2_Change()
    Worksheets("Feuil2").Select
    [E10] = UserForm1.ComboBox2.Value
       If UserForm1.ComboBox2.Value <> "" Then
          UserForm1.TextBox3.Value = Worksheets("Feuil2").Range("E11").Value
       End If
    End Sub
    Dans la cellule "E11", j'ai la formule : = recherchev(E10; B1:C15; 2) et dans les colonnes B1 à B15 mes années (1977 à 1991) et en C1 àC15 l'équivalent en age (de 29 à 15ans)

    Merci c'est vraiment cool !!!

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

Discussions similaires

  1. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  2. [VBA-E] UserForm avec textbox "Dynamique"
    Par Alex_Kidd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2006, 00h29
  3. [VBA-E]Userform qui "plante"
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/05/2006, 11h33
  4. [VBA-E]UserFOrm
    Par malloc_92 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/04/2006, 15h24
  5. [VBA-E]Userform et transfert de variable
    Par Yanos dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/03/2006, 09h16

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