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 :

Affecter une valeur à une cellule puis à un TextBox sur un formulaire.


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut Affecter une valeur à une cellule puis à un TextBox sur un formulaire.
    Bonjour à tous,

    Je voudrais écrire par une formule sur une feuille exemple textbox1 est égale à A1 et que sur mon USERFORM1 textbox1 prenne la valeur de A1.

    En gros comment écrire le code sur la feuille et transmettre la donnée sur l'USERFORM en showModal false.

    merci

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    et dans la mesure où ton UserForm a été chargé et où Valeur est ce que contient ta cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.TextBox1.Text = Valeur
    Ce ne sera pas une "formule", mais du code (instruction) VBA à mettre dans l'évènement de ton choix.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut
    Merci pour ta réponse très rapide, mais:

    Sur mon box j'avais mis un code lorsqu'il change, mais mon code ne se réalise pas!!

    comme si l'Userform est inactif?

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Montre donc le code que tu as écrit (toute la procédure évènementielle) pour écrire sans la textbox de ton UserForm et celui que tu as écrit (toute la procédure également) pour vérifier que la modification a été effectuée.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut
    Voici le code de ma feuille:
    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 Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    Cells(ActiveCell.Row, 1).Select
      ActiveCell.Offset(0, 2).Select
      UserForm1.TextBox16.Text = ActiveCell
     
      If ActiveCell = "" Then GoTo fin1
      ActiveCell.Offset(0, 1).Select
    UserForm1.ComboBox4.Text = ActiveCell
     
    fin1:
     
    End Sub
    Et sur mon userform:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub TextBox16_Change()
    Sheets(ComboBox4.Text).Select
        If ComboBox4 = "" Then GoTo fin1
       For Each c In Sheets(ComboBox4.Text).Range("b:b")
            If c.Value = Label95 Then
             c.Select
             Exit For
            End If
     
        Next c
    ' on vide les éléments
     
     
        TextBox2 = ""
        ComboBox3 = ""
        ComboBox2 = ""
        ComboBox5 = ""
        TextBox11 = ""
        ComboBox1 = ""
        TextBox6 = ""
        TextBox5 = ""
     
       ' inscription
        ActiveCell.Offset(0, -1).Select
        Label94 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        Label95 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox2 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        'ComboBox4 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox3 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox2 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox5 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox11 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox1 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
     
    fin1:
    Le code est simple mais pas d'action. je pense qu'il faut rendre l'userform actif, mais comment

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    On va le savoir, si tu l'as ou non chargé :
    Contente-toi de ceci :
    sur ta feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      UserForm1.TextBox16.Text = "toto"
    msgbox userform1.textbox16.text
    End Sub
    et dans UserForm1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox16_Change()
      msgbox "oui : en plein changement"
    End Sub
    et rien d'autre.
    Et dis-nous ce qui s'affiche.

    Et si tu as d'abord "oui : en plein changement", puis "toto", c'est que tout va bien de ce côté là et que c'est le reste (mais plus rien à voir avec ta question première) qui ne va pas.
    Si rien ne s'affiche, c'est que UserForm1 n'est pas chargé
    Test que tu aurais dû avoir le réflexe de faire avant tout.

    PS : autre question : te serais-tu servi d'un "On Error Resume Next" ? (qui occulterait une erreur...)

    EDIT : et tu devrais t'intéresser un peu à ce qu'est l'argument Target, plutôt que de te lancer dans un micmac pour le moins curieux, avec tes "select" (peu recommandables, d'ailleurs)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut
    Oui, tu as raison, je me suis rendu compte de mon erreur.
    Car j'ai fait une bourde ds mon code aulieu de label 95 il fallait inscrire textbox 16. Car le label 95 était la recherche lors de l initialisation.

    Donc maintenant un autre problème
    Mon problème est que j'utilise un textbox change mais le code plante car le résultat du textbox n'est pas encore affiché que le code est lancé.

    Pour que cela fonctionne je pourrais utiliser un textbox exit et ça fonctionne, mais je voullais ne pas avoir d'action sur l'userform pour ce code.

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Rien compris ...

    Nous ne sommes ni devant ton clavier, ni devant ton écran, ni dans ta pensée.
    Alors explique de manière claire et détaillée ce dont il s'agit.

    (et lis mon EDIT dans mon message précédent, dans la foulée).

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut
    OK, je vais essayer !
    Pour ton code ça fonctionne !
    Donc l’erreur n’est pas de l’Userform, mais plutôt dans mon code que j'ai modifier.
    Maintenant le problème est que ça plante lors de la recherche, car lorsque je dbleClick sur ma feuille le résultat de ma cellule n’est pas encore affiché sur le textbox16 et le code se lance par contre, si je place mon code ds un « Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean) » alors ça fonctionne à condition que je sors de celui-ci.
    Mais je voulais que l’utilisateur n’est pas d’action sur l’userform à ce moment.
    J’espère que mon explication est assez claire , car en effet je n’arrive pas tjrs à expliquer mon problème ! En tout cas merci pour tes réponse.

    Voici le code que j'avais modifié
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub TextBox16_Change()
    Sheets(ComboBox4.Text).Select
        If ComboBox4 = "" Then GoTo fin1
       For Each c In Sheets(ComboBox4.Text).Range("b:b")
            If c.Value = Label95 Then
             c.Select
             Exit For
            End If
     
        Next c
    ' on vide les éléments
     
     
        TextBox2 = ""
        ComboBox3 = ""
        ComboBox2 = ""
        ComboBox5 = ""
        TextBox11 = ""
        ComboBox1 = ""
        TextBox6 = ""
        TextBox5 = ""
     
       ' inscription
        ActiveCell.Offset(0, -1).Select
        Label94 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        Label95 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox2 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        'ComboBox4 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox3 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox2 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox5 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        TextBox11 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        ComboBox1 = ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
     
    fin1:

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par jijie Voir le message
    J’espère que mon explication est assez claire , car en effet je n’arrive pas tjrs à expliquer mon problème !
    Hé bien, c'est par là qu'il te va falloir commencer (si tu veux de l'aide) ...
    Je ne vais tout de même pas "tomber" dans la récitation d'un certain dicton relatif aux choses claires et à la manière de les exprimer ...
    Désolé, ami, mais si les choses sont claires, rien ne doit s'opposer à leur clair exposé. ... surtout en développement (qui dépend très lmargement de cette clareté de la pensée en vue de l'écriture d'une expression qui n'admet aucune faille)...

    EDIT :
    et commence par me modifier ce micmac (après avoir lu dans ton aide en ligne ce qu'était Target) ... ce sera un premier pas !

    voilà ton micmac à modifier :

    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 Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    Cells(ActiveCell.Row, 1).Select
      ActiveCell.Offset(0, 2).Select
      UserForm1.TextBox16.Text = ActiveCell
     
      If ActiveCell = "" Then GoTo fin1
      ActiveCell.Offset(0, 1).Select
    UserForm1.ComboBox4.Text = ActiveCell
     
    fin1:
     
    End Sub

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut
    Merci Ucfoutu,

    Mais je ne trouve pas d'information sur "Target"

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Ah ?
    Regarde ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Qu'est donc Target ? Tu ne vois pas ? Et quelles sont ses propriétés (à utiliser)
    Exemple, en ce qui concerne la propriété Row :
    Citation de ce qu'en dit l'aide en ligne :
    Row Cette propriété renvoie le numéro de la première ligne de la première zone de la plage. Type de données Long en lecture seule.
    Bonne chance.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2010, 13h27
  2. affecter une valeur de cellule à une variable
    Par mlrdeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/10/2007, 10h29
  3. Réponses: 1
    Dernier message: 19/04/2007, 10h14
  4. [VBA]Affectation d'une valeur à une cellule par une fonction
    Par lallougri dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/02/2006, 14h24
  5. [XSL] N'afficher qu'une fois une valeur + fusionner cellule
    Par DidRocks dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 05/09/2005, 09h22

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