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
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    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
    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
    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 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
    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
    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...)

  4. #4
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    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
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    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
    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
    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
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    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 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
    donc ajoute "nomUSF.txt.Text"
    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...)

  9. #9
    Expert éminent
    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
    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
    Membre averti
    Inscrit en
    Juin 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 17
    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 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
    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
    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...)

  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
    13 149
    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 : 13 149
    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:
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #13
    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
    Merci Philippe, alors peut-être encore que le nom du TextBox n'est pas le bon, enfin ! une idée comme une autre
    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...)

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

  15. #15
    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'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
    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...)

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

    Cordialement,

  17. #17
    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
    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
    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. 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