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 :

Passer un textbox en paramètre d'une procédure [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Passer un textbox en paramètre d'une procédure
    Bonjour,

    Je souhaite créer une procédure permettant d'envoyer le texte des Textbox de mon Userform aux cellules Excel.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub check(a As Integer, b As Integer, li As Integer, col As Integer, Optional txt As TextBox)
    k = 1
    For i = a To b
    If UserForm2.Controls("CheckBox" & i).Value = True Then
    Cells(li, col).Offset(k - 1, 0).Value = UserForm2.Controls("CheckBox" & i).Caption
    k = k + 1
    End If
    Next i
    Cells(li, col).Offset(k - 1, 0).Value = txt.Text
    End Sub
    Le problème concerne la ligne Cells(li, col).Offset(k - 1, 0).Value = txt.Text
    J'obtiens l'erreur 91: Variable objet ou variable de bloc With non définie.

    Quelqu'un pourrait m'aider s'il vous plaît?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    suivre le code en mode pas à pas via la touche F8 pour contrôler les valeurs des variables …

    Le code se trouve-t-il dans le module de l'UserForm ?

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    et, j'imagine qu'en mode débogage, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(li, col).Offset(k - 1, 0).Value = txt.Text
    est surlignée en jaune, il te suffit de passer ta souris sur chaque cellule pour voir apparaitre la valeur de chaque variable, soit il, col k, et la valeur de ton textbox, s'il se nomme bien "txt", tu verras donc à quel niveau se situe l'erreur, sinon tentes de mettre des MsgBox juste avant l'erreur, comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    Next i
    MsgBox li & ";" & col & ";" & k
    MsgBox txt.Text
    Cells(li, col).Offset(k - 1, 0).Value = txt.Text
    End Sub
    on s'est croisé Marc

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Merci Marc-L d'avoir répondu,

    Après la boucle, k n'est plus égal à 1 donc k-1 n'est pas égal à 0.

    Mais de toute façon, il est tout à fait possible d'écrire cells(1,1).offset(0,0).

    Donc le problème ne vient pas d'ici.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par casefayere Voir le message
    et, j'imagine qu'en mode débogage, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(li, col).Offset(k - 1, 0).Value = txt.Text
    est surlignée en jaune, il te suffit de passer ta souris sur chaque cellule pour voir apparaitre la valeur de chaque variable, soit il, col k, et la valeur de ton textbox, s'il se nomme bien "txt", tu verras donc à quel niveau se situe l'erreur, sinon tentes de mettre des MsgBox juste avant l'erreur, comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    Next i
    MsgBox li & ";" & col & ";" & k
    MsgBox txt.Text
    Cells(li, col).Offset(k - 1, 0).Value = txt.Text
    End Sub
    on s'est croisé Marc
    Casefayere, j'obtiens la même erreur du coup pour . Mais col li et k valent tous 1.

    Cordialement,

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Le code se trouve-t-il dans le module de l'UserForm ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    La procédure se trouve dans un module à part. Mais l'appelle de la procédure, dans le module de l'userform.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    donc ajoute "nomUSF.txt.Text"

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    D'où l'erreur car un objet TextBox ne peut exister en dehors de son module ! Mieux vaut passer sa valeur …

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par casefayere Voir le message
    donc ajoute "nomUSF.txt.Text"
    J'ai déjà essayé, cela ne marche pas.

    Cordialement,

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    essayes ce qu'écrit Marc
    ... Mieux vaut passer sa valeur …
    A Marc,

    D'où l'erreur car un objet TextBox ne peut exister en dehors de son module !...
    Je penses (mais ne suis pas sur) que je l'ai déjà fait en précisant le nom de l'USF

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 910
    Points : 28 889
    Points
    28 889
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A Marc,
    D'où l'erreur car un objet TextBox ne peut exister en dehors de son module !...
    Je penses (mais ne suis pas sur) que je l'ai déjà fait en précisant le nom de l'USF
    Je confirme, cette ligne d'une procédure écrite dans un module, fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With UserForm1:  .TextBox1 = "Toto":  .Show:  End With:

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Merci Philippe, alors peut-être encore que le nom du TextBox n'est pas le bon, enfin ! une idée comme une autre

  14. #14
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Finalement, j'ai utilisé un String comme paramètre et dans l'appel, j'utilise Merci à tous!

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    J'en conclue que c'était bien ça, le nom n'était pas le bon, vu que tu écris maintenant
    j'utilise textbox1.text
    alors que jusque maintenant c'était

  16. #16
    Futur Membre du Club
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Non, malheureusement ce n'était pas une erreur de nom.

    Cordialement,

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Ok, l'important est que tu ais résolu ton problème, je ne vais pas te demander maintenant d'envoyer ton fichier, tant pis si ma curiosité n'est pas satisfaite (un détail)

    Bonne soirée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/01/2012, 15h19
  2. Passer un tableau en paramètre d'une procédure
    Par redpulse dans le forum PL/SQL
    Réponses: 1
    Dernier message: 04/09/2008, 13h47
  3. Passer un curseur en paramètre d'une procédure
    Par tommy_f dans le forum Forms
    Réponses: 4
    Dernier message: 13/05/2008, 16h54
  4. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  5. Passer le nom de colonne en paramètre d'une procédure stocké
    Par theartist dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/01/2005, 15h39

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