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 :

Effacer un textbox si sélectionner. Option setfocus


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut Effacer un textbox si sélectionner. Option setfocus
    Rebonjour forum.
    Je souhaiterais effacer le contenu d'un textbox si il est sélectionné.exemple d'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if t_nom.setfocus then t_nom=" "
    mais le code ne fonctionne pas. Message d'erreur : fonction ou variable attendue.
    Merci de m'expliquer mon erreur.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    a quel moment veux tu enlever le focus a ce textbox?
    1. lors du click dessus?
    2. par l'intermédiaire d'un bouton ?
    3. par une macro ou une condition dans une macro?
    4. est ce que ca doit être automatique ?



    pour savoir si ton textbox a le focus tu fait pareille que les autre controls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if activecontrols.name="TextBox1" then textbox1=""

    un exemple dans un UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    '---------------------------------------------------------
    'le bouton a la propriété 'takefocusonclick a false
    a mettre dans le activate de l'UserForm
    'CommandButton1.TakeFocusOnClick = False
    '---------------------------------------
     
    Private Sub CommandButton1_Click()
    If ActiveControl.Name = "TextBox1" Then TextBox1 = ""
    End Sub

    te reste a répondre aux questions pour savoir comment tu devra faire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    Merci pour la réponse Pat. Enfaite il s'agit d'effacer un textbox à l'instar des autres si je clique sur le Cmbuton.
    Je ne voudrais pas effacer tous les contenus des Textbox ce pourquoi j'ai opté pour le pas à pas .
    Je vais tester le code et je te fais un retour. Merci

  4. #4
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    J'ai mis le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bt_eff.takefocusonclick=false
    dans le userform_activate.
    Ensuite dans le bt_eff j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if activecontrol.name="textbox" then
    T_nom=""
    T_prenoms=""
    T_paye=""
    End if
    mais ça ne marche pas.
    Merci

  5. #5
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    Lorsque je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CMB.takefocusonclick=true
    seul setfocus dans le textbox designer s'annule mais le texte ne s'efface pas.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if activecontrol.name="T_nom" then
    T_nom=""
    T_prenoms=""
    T_paye=""
    End if
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par patricktoulon Voir le message
    [...]
    a quel moment veux tu enlever le focus a ce textbox?[...]
    Où a-t-il été question d'enlever le focus?



    Pour répondre à la question initiale (vider un textbox lorsqu'il est sélectionné)...

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Enter()
      TextBox1.Text = ""
    End Sub



    Si tu veux vider plusieurs contrôles lorsque le textbox est sélectionné

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox1_Enter()
      ViderControles
    End Sub
     
    Sub ViderControles()
      TextBox1.Value = ""
      TextBox2.Value = ""
      TextBox3.Value = ""
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    Merci pour la réponse. Je ne savais pas qu'il y avait un event appelé'' enter''. Je vais le tester et je réponds.

  9. #9
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    Je reprends mon sujet pour être bien compris :
    Lorsque je click dans un quelconque textbox et que je click sur le commande bouton, le textbox sélectionné se vide. Elseif aucun textbox n'est sélectionné alors en cliquant sur le commande bouton tout se vide.

  10. #10
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    Mon soucis c'est comment traduire ça en code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private sub cmbx_click
    Dim c
    If textbox1.select then 
    Textbox1=empty 
    Else
    For each c in me.controls
    If nametype(c)="textbox" then
    C=""
     If nametype (c)="combobox"then
    C=""
    End if
    End if
    End if
    Next c
    voici un peu mon idée. Merci pour votre aide.

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Quand la demande est bien formulée dès le début, c'est tout de même plus simple

    Sur la logique, ce que tu demandes est impossible. Lorsque tu vas quitter le textbox pour cliquer sur le bouton, le textbox ne sera plus sélectionné!

    A quoi sert un bouton pour vider un textbox lorsqu'on est sur le textbox? L'utilisateur ne sait pas vider son textbox tout seul comme un grand? S'il ne sait pas vider son textbox tout seul, ne lui mets pas un ordi dans les pattes, il n'arrivera jamais à l'utiliser...

    Si tu tiens vraiment à réaliser cela, tu vas devoir créer une variable pour mémoriser le textbox dans lequel tu rentres, pour pouvoir l'identifier par la suite lorsque tu cliqueras sur le bouton et que le textbox ne sera plus actif. Mais alors, comment feras-tu pour déterminer si un textbox était sélectionné ou si aucun ne l'était? A quel moment videras-tu cette variable pour déterminer que tu vas considérer qu'aucun textbox n'était sélectionné "juste avant" de cliquer sur le bouton...

    C'est absurde, ce truc. Ca ne tient pas la route.

    Des fois, j'vous jure!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Deux solutions

    1. Mettre un bouton à côté de chaque textbox à vider (un peu à la manière d'un site web) et au clic, vider le textbox correspondant, et ajouter un bouton pour vider tous les textbox. Si vraiment les utilisateurs sont trop stupides que pour vider un textbox, ils risquent évidemment de cliquer sur le mauvais bouton.

    Sinon, le code suivant permettrait cela. Ils vont s'amuser à voyager du textbox au bouton pour supprimer...

    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
    Private SelectedTextBox As String
     
    Private Sub CommandButton1_Click()
      If SelectedTextBox <> "" Then
        Controls(SelectedTextBox).Value = ""
      Else
        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""
      End If
      SelectedTextBox = ""
    End Sub
     
    Private Sub TextBox1_Enter()
      SelectedTextBox = "TextBox1"
    End Sub
     
    Private Sub TextBox2_Enter()
      SelectedTextBox = "TextBox2"
    End Sub
     
    Private Sub TextBox3_Enter()
      SelectedTextBox = "TextBox3"
    End Sub
    Voilà. Une "ergonomie" lourde et inutile, ça se paie en code. Y a pas miracles
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre actif
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 597
    Points : 204
    Points
    204
    Par défaut
    Merci et un grand merci. L'explication est nette et sans bavure. Je crois que le problème est résolu et c'est mieux que j'utilise l'événement pour vider le textbox. Donc Y'a t'il un moyen de faire une boucle avec l'événement double click sur tous les textbox et combobox? Si oui, dois je créé un autre module ou je reste dans le même module?
    Merci

  14. #14
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Bonjour, à moins que vous ne souhaitiez vider tous les TextBox simultanément sur un seul DoubleClick???
    voici la marche a suivre ci-dessous.

    Nom : Capture d’écran 2019-09-07 à 07.21.47.png
Affichages : 3207
Taille : 40,8 Ko
    Vous cliquez dans la feuille code du UserForm sur TextBox1 puis sur DblClick. Enfin vous tapez le texte (TextBox1.value = "") et ça marche. Vous n'avez plus qu'a recommencer pour les autres TextBox, ListBox ou ComboBox que vous souhaitez utiliser avec cette manière de travailler. (Je précise qu'il convient de modifier le Nom du TB pour agir sur celui désiré)

    Cordialement
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

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

Discussions similaires

  1. Textbox non sélectionnable et non grisé
    Par joel64230 dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/04/2013, 14h21
  2. [Débutant] Effacer plusieur textbox à la fois
    Par Moutombi dans le forum C#
    Réponses: 1
    Dernier message: 24/11/2011, 18h11
  3. Problème effacement contenu Textbox
    Par Allspark dans le forum C#
    Réponses: 5
    Dernier message: 20/07/2010, 14h48
  4. effacer un textbox
    Par scarfunk dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 08/06/2010, 13h43
  5. Effacer tout avant la string "options"
    Par Nympheasi dans le forum Langage
    Réponses: 4
    Dernier message: 06/10/2009, 08h59

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