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 :

Macro avec TextBox variable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable restauration et hôtellerie (clinique)
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable restauration et hôtellerie (clinique)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut Macro avec TextBox variable
    Bonjour bonjour,
    Me re-voici avec une nouvelle difficulté (pour moi c'en est une en tout cas ).

    J'essaye de coder une macro qui fait intervenir plusieurs TextBox, et j'aimerai pouvoir faire comprendre à la macro que selon si les TextBox sont vides ou non, elles doivents être utilisées.

    Dans cette première macro, si la TextBoxA1 est non vide, alors une autre macro se lance, mettant en jeux la TextBoxA1. Pour pouvoir alléger mon code je me suis dit qu'il serai préférable d'utiliser un substitut (TextBoxCouleur) et de l'insérer dans une macro pouvant être utilisée pour une autre TextBox que TextBoxA1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub couleur_et_taille()
    If UserForm2.TextBoxA1.Value <> "" Then Call Module7.taille
        With TextBoxCouleur.Value = UserForm2.TextBoxA1.Value
        End With
    If UserForm2.TextBoxB1.Value <> "" Then Call Module7.taille
        With TextBoxCouleur.Value = UserForm2.TextBoxB1.Value
        End With
    ...
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub taille()
    If UserForm2.TextBoxA2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxA2.Value
        Range("B5").Value = TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    ...
    End Sub
    Lorsque je lance mes macros j'ai un message d'erreur (Objet Inconnu; pour TextBoxCouleur). Pourriez-vous m'aider à clarifier cette situation? Merci!

  2. #2
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Hello,
    Ajoute peut être sur quel userform se trouve ta textboxcouleur ou sur quelle feuille.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable restauration et hôtellerie (clinique)
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable restauration et hôtellerie (clinique)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut
    Le fait est que sur mes Userform je n'ai aucune TextBoxCouleur, j'aimerai juste que selon à quel niveau de la 1ère macro où l'on se trouve, la TextBoxCouleur change de cible (ex: Userform2.TextBoxA1; Userform2.TextBoxB1;...).

    Tu veux dire que je devrai écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub taille()
    If UserForm2.TextBoxA2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxA2.Value
        Range("B5").Value = Userform2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    ...
    End Sub
    ?

    PS: Merci de t'intéresser à mon cas

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,


    passe le text box en paramètre de ta fonction :

    par exemple dans ton userform un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
       Taille TextBoxA2
    End Sub
    et dans ton module7 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
    Sub Taille(ByRef txt As MSForms.TextBox)
       txt.Width = txt.Width + 20
       txt.Text = txt.Width
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Responsable restauration et hôtellerie (clinique)
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable restauration et hôtellerie (clinique)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut
    J'ai essayé ton code bbil et ça ne fonctionne pas (peut être l'ai-je mal adapté).

    J'ai du mal à comprendre ce que ton code fait en fait, pour que ce soit peut être plus clair pour vous je vais vous coller mon code entier et je joint un screen de ce à quoi ressemble mon UserForm2:

    Donc, le Sub couleur_et_taille est lancé lorsque je clique sur un CommandButton, qui a pour but de coller sur un doc excel ce que contiennent les TextBox qui sont remplies. Le Sub couleur_et_taille sert à simplifier le travail, si jamais dans la liste 1 (cf donc joint) j'ai le TextBoxA1, le TextBoxC1 et le TextBoxD1, alors pour chacune de ces TextBox, le Sub taille se lance, et copie-colle les données contenues dans les TextBox de la liste 2 sur le doc excel et copie-colle également le contenue des TextBoxA1, C1 et D1.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    Sub couleur_et_taille()
    If UserForm2.TextBoxA1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxA1.Value
        End With
    If UserForm2.TextBoxB1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxB1.Value
        End With
    If UserForm2.TextBoxC1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxC1.Value
        End With
    If UserForm2.TextBoxD1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxD1.Value
        End With
    If UserForm2.TextBoxE1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxE1.Value
        End With
    If UserForm2.TextBoxF1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxF1.Value
        End With
    If UserForm2.TextBoxG1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxG1.Value
        End With
    If UserForm2.TextBoxH1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxH1.Value
        End With
    If UserForm2.TextBoxI1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxI1.Value
        End With
    If UserForm2.TextBoxJ1.Value <> "" Then Call Module7.Taille
        With TextBoxCouleur.Value = UserForm2.TextBoxJ1.Value
        End With
    End Sub
     
     
    Sub Taille()
     
    If UserForm2.TextBoxA2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxA2.Value
        Range("B5").Value = TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        'With TextBoxCouleur = UserForm2.TextBoxA1
        'End With
        Else: End If
    If UserForm2.TextBoxB2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxB2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    If UserForm2.TextBoxC2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxC2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    If UserForm2.TextBoxD2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxD2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    If UserForm2.TextBoxE2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxE2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    If UserForm2.TextBoxF2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxF2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    If UserForm2.TextBoxG2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxG2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    If UserForm2.TextBoxH2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxH2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
     If UserForm2.TextBoxI2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxI2.Value
        Range("B5").Value = UserForm2.TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
     If UserForm2.TextBoxJ2.Value <> "" Then
        Rows("5:5").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("C5").Value = UserForm2.TextBoxJ2.Value
        Range("B5").Value = TextBoxCouleur.Value
        Range("A5").Value = UserForm2.TextBox1.Value
        Else: End If
    End Sub
    Images attachées Images attachées  

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    re,

    je ne vois aucune adaptation de mon code ?

    c'est quoi ces lignes de codes incongrues ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       With TextBoxCouleur.Value = UserForm2.TextBoxA1.Value
        End With
    utilise l'aide en ligne pour comprendre à quoi sert With .. et tant que tu n'as pas compris ne l'utilise pas ! ...son but est seulement de réduire la longueur du code..

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

Discussions similaires

  1. [OpenOffice][Tableur] Comment écrire une macro avec 2 variables et enregistrement des résultats du calcul
    Par Pascaltech dans le forum OpenOffice & LibreOffice
    Réponses: 9
    Dernier message: 09/09/2015, 18h00
  2. Exécuter macro avec nom du fichier ouvert : prob de variable
    Par supernati27 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/05/2011, 13h43
  3. nom de macro concaténer avec une variable
    Par spookyz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/08/2010, 18h55
  4. Appel macro avec variable
    Par malouxa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2009, 17h53
  5. [C#]Lier automatiquement un Textbox avec une variable
    Par apoingsfermes dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/07/2006, 11h21

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