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 :

Click droit dans une TextBox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click droit dans une TextBox
    Bonjour,

    Peut-on autoriser un click gauche et droit de la souris dans une TextBox pour sélectionner et copier son contenu.
    Par quel moyen ?

    Par avance merci

    Bien cordialement,

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,
    Comment celà, un "clic gauche et droit" ?
    Les deux ensemble ?

    Et qu'entends-tu par "autoriser" ?

    Un click gauche (traditionnel) se constate si la propriété enabled = True par le déclenchement de l'évènement Click

    Un click est par ailleurs un MouseDown suivi d'un MouseUp

    L'évènement MouseUp permet de différencier le bouton de la souris.

    Te reste plus qu'à utiliser tout celà (c'est facile...)

  3. #3
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click droit sur un TextBox
    Bonsoir ucfoutu,

    Et bien voilà:
    Je me suis peut-être mal expliqué !
    Tu viens de me répondre, et, si je veux avec ma souris:
    je peux bien à l'aide du click gauche surligné ton message et à l'aide du bouton droit copier le texte et éventuellement le recoller ailleurs.
    Dans un TextBox on ne peut pas .
    d'ou ma question; comment faire ?

    Merci

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    En t'intéressant à Selstart et à SelLength (dans ton aide en ligne, sur TA machine)

    Lis celà, essaye... et reviens en nous exposant ce que tu n'aurais pas pu réaliser après cette lecture...

  5. #5
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click gauche pour copier dans une TextBox
    Re bonjour,
    Et bien non, je n'y arrive pas.
    Je suis désolé, j'ai réussi à fabriquer ce bout de code...Mais ma textbox n'accepte toujours pas le click droit pour copier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim MyData As DataObject
     
    Private Sub TextBox3_ClickRight(ByVal Cancel As MSForms.ReturnBoolean)
    Dim MyData As DataObject
    Set MyData = New DataObject
    MyData.GetFromClipboard
    TextBox3.SelStart = 0
    TextBox3.SelLength = 0
    End Sub
    Merci pour votre aide .

  6. #6
    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
    Bonsoir

    Pour moi, il faut y aller par étapes.

    1. Créer un menu contextuel avec les boutons souhaités via une procédure dans un module standard

    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
    Sub CreerContextuel()
        Dim Barre As CommandBar
        Dim Controle As CommandBarControl
     
        Set Barre = CommandBars.Add(Name:="Contexte", Position:=msoBarPopup, temporary:=True)
        Set Controle = Barre.Controls.Add
        With Controle
            .Caption = "Copier"
            .OnAction = "mnCopier"
        End With
        Set Controle = Barre.Controls.Add
        With Controle
            .Caption = "Coller"
            .OnAction = "mnColler"
        End With
     
        Set Controle = Nothing
        Set Barre = Nothing
    End Sub
    2. Créer les procédures pour copier et coller, toujours dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub mnCopier()
        Dim Donnee As New DataObject
        Donnee.SetText UserForm1.ActiveControl.Value
        Donnee.PutInClipboard
    End Sub
     
    Sub mnColler()
        Dim Donnee As New DataObject
        Donnee.GetFromClipboard
        UserForm1.ActiveControl.Value = Donnee.GetText
    End Sub
    3. Il faut placer dans les évènements MouseUp des contrôles souhaités la procédure suivante. Dans le code que je donne, j'ai deux zones de texte et je place la même procédure pour chaque zone de texte. Cette procédure appelle simplement le menu contextuel créé au point 1

    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 TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Select Case Button
            Case XlMouseButton.xlSecondaryButton
                CommandBars("Contexte").ShowPopup
        End Select
    End Sub
     
    Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Select Case Button
            Case XlMouseButton.xlSecondaryButton
                CommandBars("Contexte").ShowPopup
        End Select
    End Sub
    Attention! Le code de l'étape 2 copie TOUT le contenu du textbox. Il faudra jouer avec SelStart, SelLength pour ne copier (ou remplacer) que la partie sélectionnée du texte...

    A toi d'adapter et d'améliorer au besoin. Ceci n'est qu'une piste.

    Ok?
    "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...
    ---------------

  7. #7
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click droit pour copier dans une TextBox

    Bonsoir,
    Bon, malgrès toutes ces explications je pensais avoir compris !!!
    Voir le fichier ci-joint .
    Ais-je bien compris ?
    3 modules (CreerContexte, copier et coller)
    Puis la macro TextBox2.
    Et bien le click droit fait resortir un défault :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandBars("Contexte").ShowPopup
    Merci pour ton aide
    Bien cordialement

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Une solution éventuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    SendKeys "^A"
    SendKeys "^C"
    End Sub
    Un seul clic droit dans le TextBox sélectionne tout le texte et l'envoit dans le presse papier
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  9. #9
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click droit dans une TextBox
    Bonsoir à tous,

    Bon, malgrès tous ces codes et bien je n'ai pas réussi.
    Malgrès l'aide d'Excel je n'y arrive pas.
    Apparemment il doit être impossible d'effectuer un click droit et d'avoir un message permettant de copier l'élément choisi.
    Bien cordialement à vous .

  10. #10
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par BRUNO71 Voir le message
    Apparemment il doit être impossible d'effectuer un click droit et d'avoir un message permettant de copier l'élément choisi.
    Bien cordialement à vous .
    Bin si ça fonctionne, as-tu essayé le bout de code que je t'ai proposé ?
    As-tu fais un clic droit dans ta textbox, refermé ton userform, sélectionné une cellule et fais "coller" ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonsoir,

    Je crois que BRUNO71 n'est pas encore assez "avancé" pour bien comprendre ce qui lui a été dit.

    Fring : je vais éviter l'utilisation du SendKeys (je ne l'aime pas et il ne permet pas de bien contrôler ce que l'on fait).

    Le code de Pierre Fauconnier me parait bien mieux, mais fait encore peur à BRUNO

    @ BRUNO71 ===>> Bon... nous allons utiliser la méthode de Pierre Fauconnier, mais en l'adaptant pour te la rendre compréhensible.
    Tu vas essayer ce qui suit, analyser, puis, pas à pas (quand tu auras mieux compris), tenter de mettre en place la méthode complète proposée par Pierre Fauconnier (elle est plus élégante)...
    Pour l'instant :

    Tu vas créer une petite appli avec un userForm sur lequel tu vas mettre une textbox TextBox1 et une listbox Listbox1 et ce 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub UserForm_Initialize()
      With ListBox1
        .AddItem "copier"
        .AddItem "annuler"
        .Visible = False
        .Move TextBox1.Left, TextBox1.Top + _
        TextBox1.Height, TextBox1.Width, 26
      End With
    End Sub
    Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      If TextBox1.SelText <> "" Then
        ListBox1.Visible = True
        ListBox1.ZOrder
      End If
    End Sub
     
    Private Sub ListBox1_Click()
      If ListBox1.Selected(0) = True Then
        Dim toto As DataObject
        Set toto = New DataObject
        toto.SetText TextBox1.SelText
        toto.PutInClipboard
      End If
      ListBox1.Visible = False
      TextBox1.SetFocus
    End Sub
    Lance, écris ce que tu veux dans la textbox, puis sélectionnes'en un bout de ton choix à l'aide du bouton gauche (maintenu enfoncé) de la souris

    Tu verras apparaître ta listbox avec 2 choix (copier ou annuler) clique sur copier.

    Va ensuite dans ta feuille et fais un coller dans une cellule, par exemple ... tu vas voir.

    Bonne chance

  12. #12
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click droit pour copier dans une textbox
    Bonsoir,

    Si ton code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    SendKeys "^A"
    SendKeys "^C"
    End Sub
    Mais je pensais qu'on pouvais avoir le style de message, voir le document word ci joint.
    Tanpis, ton code est très très bien.
    Je ne connais pas assez VBA, j'apprend seul donc voilà.
    Je suis très content d'avoir accès au forum de développez.com, c'est vraiment bien.
    J'espère acquérir beaucoup de connaisance.
    Bien cordialement

  13. #13
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par BRUNO71 Voir le message

    Bonsoir,
    Bon, malgrès toutes ces explications je pensais avoir compris !!!
    Voir le fichier ci-joint .
    Ais-je bien compris ?
    3 modules (CreerContexte, copier et coller)
    Puis la macro TextBox2.
    Et bien le click droit fait resortir un défault :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandBars("Contexte").ShowPopup
    Merci pour ton aide
    Bien cordialement
    Le code que Pierre t'a proposé fonctionne parfaitement, tu as ce message d'erreur parce que :
    il faut juste, la première fois avant utilisation (et une seule fois) exécuter la macro CreerContextuel
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  14. #14
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Click droit dna une TextBox
    Bonjour,
    Houaa, ça décoiffe !
    Fabuleux, quand j'en serais là !!!
    Merci à vous, alors je viens de vérifier le code de Pierre et j'ai bien une petite liste déroulante avec copier coller...parfait! mais, ça ne colle pas l'élément choisi ? Bon ce n'est pas grave.
    Merci ucfoutu, super...
    Comment faites vous pour en arriver là ?
    Peut -être est-ce votre job ??
    J'ai pourtant des bouquins, surtout Excel 2003 programmation VBA de chez EYROLLES, il est super.
    Mais seul, ces quand même dur.
    Merci beaucoup
    Bien cordialement

  15. #15
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par BRUNO71 Voir le message
    Comment faites vous pour en arriver là ?
    Peut -être est-ce votre job ??
    Non !
    Simplement parce que c'est notre plaisir et que la prise de plaisir peut conduire à faciliter la tâche de collaborateurs ...

  16. #16
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Bonjour à tous,

    Je débarque plus de 10 ans après la clôture de ce post, mais je viens de tomber dessus et il répond à ce que je recherche.

    Malheureusement je tombe sur un os à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub mnCopier()
        Dim Donnee As New DataObject
        Donnee.SetText UserForm1.ActiveControl.Value
    Puisque visiblement la propriété .Value n'existe pas pour ActiveControl (Erreur d'exécution '438')

    Peut-être une nouveauté survenue avec les nouvelles versions d'Excel ? (Excel 2013 dans mon cas) En effet certains Control ne possède pas de propriété .Value.

    Quelqu'un aurait-il une idée pour contourner ce soucis, tout en permettant d'utiliser la procédure de Pierre Fauconnier sur différents ComboBox sans avoir à les désigner ?

    Merci par avance.

    PE

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    La fonction typename retourne le type de ce qui lui est passé en paramètre
    Ainsi
    msgbox typename(totoi) retournera Textbox si toto est le nom d'une textbox
    Il te faut donc jouer avec l'instruction selectcase, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select case typename(le_contrôle_concerné)
        case"texttbox",  "combobox"
           titi = le_contrôle_concerné.value
        case "..."
          titi = ....
    end select
    donnee.settext = titi
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  18. #18
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Bonjour Unparia,

    Merci pour la réponse !!
    Grâce au à la fonction Typename j'ai pu découvrir qu'en fait lorsque je clique sur mon ComboBox, l'ActiveControl n'est pas mon ComboBox mais le Frame dans lequel est positionné le ComboBox, c'est complètement inattendu !

    Une idée de la parade pour permettre à mon ComboBox d'être l'ActiveControl lorsque je clique dessus ?

    PE

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Une idée de la parade pour permettre à mon ComboBox d'être l'ActiveControl lorsque je clique dessus ?
    Pas personnellement dans un tel cas.
    Mais j'ai par contre une autre idée --->> ouvre ta propre discussion à ce sujet (qui n'a rien à voir avec le propos initial de la présente discussion) si tu veux avoir plus de chance d'obtenir des réponses.

    EDIT : Bon-->> après réflexion --->> acrobatie plutôt scabreuse (et que je n'aime pas) --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If TypeName(ActiveControl) = "Frame" Then
        Dim toto As MSForms.Frame
        Set toto = ActiveControl
        MsgBox TypeName(toto.ActiveControl)
      End If
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #20
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Effectivement c'est une curieuse acrobatie, et qui fonctionne, bien que je ne comprenne pas vraiment pourquoi et comment... on fait un .ActiveControl.ActiveControl, c'est étrange !

    Sans compter qu'ensuite j'ai un MutliPage qui contient le TextBox pour le collage de mon texte, donc ça devient tordu, mais j'ai réussi à dépatouiller quelque chose... ça me donne ceci (pour la création du menu contextuel :
    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
     
    Sub CréerContextuel()
     
        Dim Barre As CommandBar
        Dim Controle As CommandBarControl
     
        Set Barre = CommandBars.Add(Name:="Contexte", position:=msoBarPopup, temporary:=True)
        Set Controle = Barre.Controls.Add
        With Controle
            .Caption = "Copier"
            .OnAction = "mnCopier"
        End With
     
        Set Controle = Barre.Controls.Add
        With Controle
            .Caption = "Coller"
            .OnAction = "mnColler"
        End With
     
        Set Controle = Nothing
        Set Barre = Nothing
     
    End Sub
     
    Sub mnCopier()
     
        Dim Donnée As New DataObject
        Dim res As String
     
        Select Case TypeName(ActiveUserform.ActiveControl)
            Case "TextBox", "ComboBox"
               res = ActiveUserform.ActiveControl.Value
     
            Case "Frame"
                Dim ObjFrame As MSForms.Frame
                Set ObjFrame = ActiveUserform.ActiveControl
                'MsgBox TypeName(ObjFrame.ActiveControl) & " : " & ObjFrame.ActiveControl.name
                res = ObjFrame.ActiveControl.Value
        End Select
     
        Donnée.SetText res
        Donnée.PutInClipboard
     
    End Sub
     
    Sub mnColler()
     
        Dim Donnée As New DataObject
     
        Donnée.GetFromClipboard
     
        Select Case TypeName(ActiveUserform.ActiveControl)
            Case "TextBox", "ComboBox"
                ActiveUserform.ActiveControl.Value = Donnée.GetText
     
            Case "MultiPage"
                Dim ObjMultiPage As MSForms.MultiPage
                Set ObjMultiPage = ActiveUserform.ActiveControl
     
                If TypeName(ObjMultiPage.SelectedItem.ActiveControl) = "Frame" Then
                    Dim ObjFrame As MSForms.Frame
                    Set ObjFrame = ObjMultiPage.SelectedItem.ActiveControl
                    ObjFrame.ActiveControl.Value = Donnée.GetText
                End If
     
        End Select
     
    End Sub
    Mais voilà que j'ai un nouveau problème : lorsque je colle le contenu de mon presse papier, le résultat est deux carrés : ￿￿ (qui contiennent des points d'interrogation si je colle le presse-papiers dans une cellule excel).

    Je vais ouvrir un nouveau poste comme tu me l'as conseillé

    PE

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

Discussions similaires

  1. Evènement click droit dans une feuille de calcul
    Par J H L dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2012, 13h47
  2. Réponses: 1
    Dernier message: 25/10/2005, 20h11
  3. [c#]Gros text à afficher dans une textbox
    Par famemaur dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2005, 10h12
  4. clic droit dans une DrawGrid
    Par underdog dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/03/2005, 15h21
  5. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50

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