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 :

Cellule de sortie d'un userform [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Par défaut Cellule de sortie d'un userform
    Bonjour,

    J'ai un userform avec 2 textbox, disons textbox1 et textbox2.

    Je veux faire en sorte que selon si les deux sont renseignées ou non, il n'y est pas de cellules vides.

    Je m'explique: si textbox1 et textbox2 sont renseignées alors la valeur de textbox1 va dans A1 et celle de textbox2 dans A2.
    Mais si seulement textbox2 est renseignée, alors sa valeur va dans A1 et non dans A2.

    Comment faire?

    Quelqu'un peut m'aider svp?

    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux adapter ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        With Worksheets("Feuil1")
            If Me.TextBox1 <> "" And Me.TextBox2 <> "" Then
                .Range("A1") = Me.TextBox1.Value
                .Range("A2") = Me.TextBox2.Value
            ElseIf TextBox2 <> "" Then
                .Range("A1") = Me.TextBox2.Value
            End If
        End With
    Cordialement.

  3. #3
    Membre chevronné
    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
    Par défaut
    ds ce cas il ne faut pas alimenter le controlsource de la propriété textbox et en adaptant tu pourras faire du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox1 <> "" Then
    Range("a1") = TextBox1.Value
    Range("a2") = TextBox2.Value
    Else
    Range("a1") = TextBox2.Value
    End If
    End Sub

  4. #4
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Par défaut
    Cepandant j'ai un cadre avec des dizaines de textbox. Dans ce cas là le traitement serait lourd c'est pur cela que je n'utilise pas ce code. Pour l'exemple j'ai juste dis textbox1 et textbox2 pour alleger le problème.

    Cordialement,

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    A adapter au contexte :
    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 CommandButton1_Click()
    Dim Ctrl As Control, tbCTl(), x As Integer
    x = 0
    Columns(1).ClearContents
    For Each Ctrl In Me.Controls
      If TypeName(Ctrl) = "TextBox" And Ctrl <> "" Then
        x = x + 1
        ReDim Preserve tbCTl(1 To x)
        tbCTl(x) = Ctrl.Text
      End If
    Next Ctrl
    If x > 0 Then Range("A1").Resize(x) = Application.Transpose(tbCTl)
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Par défaut
    Casefayere, pouvez-vous m'expliquer un peu le code s'il vous plaît? Merci.

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Voilà l'explication, si tous tes Textbox ne sont pas concernés, il faudra adapter
    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
    'j'imagine un USF avec plusieurs TextBox et un bouton de commande
    'Dans mon exemple, tous les TextBox sont concernés
    'leurs "TabIndex" dans l'ordre
    'tout est fait pour donner le résultat à la feuille active
    'sinon prévoir "With("nomdefeuille")
    'ci-dessous, code du bouton
    Private Sub CommandButton1_Click()
    'ci-dessous, Ctrl variable objet, TbCTl un tableau (en mémoire) et x...tu as deviné
    Dim Ctrl As Control, tbCTl(), x As Integer
    x = 0 'j'initialise x (au cas où...)
    Columns(1).ClearContents 'je vide la colonne où je vais coller les données (TextBox)
    For Each Ctrl In Me.Controls 'je boucle sur les controles
    'ci-dessous, condition si le ctrl est un texbox et s'il n'est pas vide
      If TypeName(Ctrl) = "TextBox" And Ctrl <> "" Then
        x = x + 1 'j'incrémente x de 1
        ReDim Preserve tbCTl(1 To x) 'je dimensionne mon tableau pour qu'il reçoive les données
        tbCTl(x) = Ctrl.Text 'donc les valeurs des textbox vont remplir le tableau
        'ci-dessus, voir l'urilisation des tableaux, plein d'exemples sur le site
      End If
    Next Ctrl
    'ci-dessous, je m'assure que les textbox n'étaient pas tous vides
    'et je colle à partir de A1, les textbox non vide (qui sont dans le tableau)
    'pour "Resize" et "Transpose", voir l'aide
    If x > 0 Then Range("A1").Resize(x) = Application.Transpose(tbCTl)
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Par défaut
    Merci beaucoup!

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    J'espère que tu sauras adapter le code à ta situation, sinon n'hésites pas, si je suis présent et si c'est dans mes cordes, j'essayerai de répondre, de toutes façons, il y a du monde qui aime aider, sur le forum.
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour à tou(te)s et bon dimanche
    indox, tu écris :
    Je penses que je devrais te fournir mon fichier. Car en fait j'aimerais bien organiser mon userform.
    Si l'organisation de ton USF te pose tant de problèmes, pourquoi pas (en xls ou Zip uniquement), sachant qu'on est dimanche, je ne serai certainement pas dispo aujourd'hui (au moins jusque ce soir). En attentant, Les passionnés disponibles auront peut-être de bons conseils à te donner.

    Bon courage
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. [XL-2003] Comment assigner la valeur d'une cellule au label d'un UserForm?
    Par As.Plate dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/08/2014, 12h08
  2. Réponses: 5
    Dernier message: 16/01/2011, 14h37
  3. d'une cellule à une userform
    Par kbakouan dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/07/2007, 16h49
  4. valeur d'une cellule excel dans une userform
    Par kbakouan dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2007, 15h38
  5. valider le format à la sortie cellule
    Par kat40 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/05/2007, 01h22

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