Microsoft 365 couper/copier/coller le texte en tout ou partie dans le TextBox1 (casse méninges 1 du WE)

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un bon WE :)

PS pour notre @patricktoulon qui m'a mis au défit de trouver des trucs bien loufoques pour ce WE ... hé bien, j'en ai 2 qui seront, je pense, pas mal, pour toi et pour notre @mapomme lol :p

Ce fil a été résolu grâce à tous les participants que je remercie encore une fois :)
Plusieurs solutions fonctionnelles ont été proposées.

J'en ai retenu une qui me convient parfaitement et j'ai 2 questions (casse méninges du WE) et voici la première :
Est-il possible de couper/copier/coller le texte en tout ou partie "directement" dans le TextBox1
1648281398989.png

J'ai tenté et fait des recherches et jusqu'à maintenant, je n'ai pas trouvé ...
Auriez-vous la solution ?
Un grand merci à toutes et à tous,
Je joins un p'tit fichier test et je continue mes recherches ...
lionel :)
 

Pièces jointes

  • inputBox_ModifCelluleP_OK2.xlsm
    46.6 KB · Affichages: 7
Dernière édition:
Solution
Vide le Clipboard avec le code :
VB:
Sub Vide()
[A1].Copy [A1]
End Sub
et exécute la macro ComboBox1_Change après avoir retiré On Error Resume Next...
re
Bonjour @job75
Ok vu
ci dessous exactement le même mais avec un vrai menu contextuel dans un module
dans un module standard
VB:
'***********************************************
'Menu contextuel "couper/copier/coller" sur textbox dans userform
'patricktoulon
'menu change sur la base de la version combobox de @job75
'*************************************************************
Option Explicit
Dim ctrl As Object
Sub createmenu(ctl As Object)
    Dim barre, arrbutton, I%: delebar: Set ctrl = ctl
    arrbutton = Array("Couper", "Copier", "Coller")
    Set barre =...

Staple1600

XLDnaute Barbatruc
Re

[opinion personnelle - ni polémique ni en attente de réponse]
C'est bien là que la bât blesse ;)
Sous prétexte, qu'Office intègre un "Visual Basic", hop (et je ne parle pas de toi patricktoulon ), l'utilisateur lambda d'Excel qui macrote un chouia se dit développeur d'applications.
Pour moi, ce n'est pas le cas (et là je parle de moi), je macrote mais je ne suis pas un développeur.
Pas de langage C, de compileur, d'assembleur sous mon coude (gauche ou droit)
Le VBA, c'est bien certes mais pas besoin de le sortir quand Excel sait faire en natif.
Et à propos de VBA, j'ai lu quelque part que la volonté de Microsoft, c'est à terme de le supprimer pour le remplacer par .Net et javascript pour ne pas se laisser distancer par Sheets (qui commence à faire de l'ombre à Excel)
[/opinion personnelle]
 

patricktoulon

XLDnaute Barbatruc
re
a ben oui de toute façon ça a déjà commencé pour le JS avec powerquery
powerquery c'est quoi?:
pour moi c'est du pseudo Javascript affublé de méthode du genre Xpath

pour .net, je sais pas pourquoi pas, je ne serais pas trop en retard ça va ;)
mais j'en doute
je pense que l'on s'orientera plutôt sur des module(ou patch) pour .net et/ou autre
dans visualstudio ou quelque soit le nom qu'il portera
l'inverse serait incohérent avec l'avancée techniques des languages

il est certain qu'il y a une différence entre les macroteurs et développeurs
développer ce n'est pas que du code
 

patricktoulon

XLDnaute Barbatruc
Vide le Clipboard avec le code :
VB:
Sub Vide()
[A1].Copy [A1]
End Sub
et exécute la macro ComboBox1_Change après avoir retiré On Error Resume Next...
re
Bonjour @job75
Ok vu
ci dessous exactement le même mais avec un vrai menu contextuel dans un module
dans un module standard
VB:
'***********************************************
'Menu contextuel "couper/copier/coller" sur textbox dans userform
'patricktoulon
'menu change sur la base de la version combobox de @job75
'*************************************************************
Option Explicit
Dim ctrl As Object
Sub createmenu(ctl As Object)
    Dim barre, arrbutton, I%: delebar: Set ctrl = ctl
    arrbutton = Array("Couper", "Copier", "Coller")
    Set barre = Application.CommandBars.Add("CopierColler", msoBarPopup, False, True)
    For I = 0 To UBound(arrbutton)
        With barre.Controls.Add(msoControlButton, 1, , , True)
            .Caption = arrbutton(I): .Tag = I: .OnAction = "Menu_change"
            If .Caption = "Couper" Then If ctl.SelLength = 0 Or TypeName(ctl) = "ComboBox" Then .Enabled = False
            If .Caption = "Copier" And ctl.Value = "" Then .Enabled = False
            If TypeName(ctl) = "ComboBox" And .Caption = "Coller" Then .Enabled = False
        End With
    Next
    barre.ShowPopup
End Sub

Sub delebar(): On Error Resume Next: CommandBars("CopierColler").Delete: End Sub

Private Sub menu_Change()
    Dim o As Object, Index%
    Index = Val(Application.CommandBars.ActionControl.Tag)
    With ctrl
        .SetFocus
        Set o = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")    ' DataObject en late binding
        If Index < 2 Then o.SetText .SelText: o.PutInClipboard               'couper/copier on met la sélection de texte dans le clipboard
        Select Case Index ' remplacement des if par un select case
        Case 0: .SelText = ""
        Case 2: On Error Resume Next: o.GetFromClipboard: If o.GetText <> "" Then .SelText = o.GetText   'ajout du controle(si clip est vide )
        End Select
    End With
End Sub
reste plus qu'a mettre dans l'event textbox dans le userform
VB:
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 2 Then createmenu TextBox1
End Sub
terminé
et c'est réutilisable a souhait
soit en copiant le code dans un module existant
soit en ajoutant un module
 

Pièces jointes

  • test contextual menu sur textbox version pour lionel .xlsm
    28.5 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
la solution combobox de (@job75)est bien aussi
j'ai seulement modifié son apparence
@job75 la met a droite et modifie la taille du userform moi je la réduit a son stricte déroulé et la positionne au curseur
on pourrait des l'ors alors le faire dans une classe dynamique
là aussi c'est du réutilisable a souhait
mais bon pour une petit menu de 3 items c'est suffisant
si il y avait plus de fonction a appeler je dirais que la classe serait mieux pour la combo
 

Usine à gaz

XLDnaute Barbatruc
Bonsoir Patrick, Bonsoir Gérard, tous ceux qui ont eu la gentillesse de participer à ce fil et le Forum :)
@ patricktoulon :

SUPER ton code et je t'en remercie :)
Toutefois pour qu'il corresponde "complètement" à mon besoin, je me suis permis de modifier comme suit :
VB:
Option Explicit
Dim ctrl As Object

Private Sub UserForm_Initialize()
TextBox1.Value = ActiveCell 'prend la valeur de la cellule cliquée
End Sub

Private Sub OkButton_Click()
ActiveCell.Value = TextBox1 ' renvoie la valeur modifiée ou non
Unload Me
End Sub

Private Sub CancelButton_Click()
Unload Me
End Sub

Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 2 Then createmenu TextBox1
End Sub

Private Sub UserForm_Click()
End Sub

Je joins le fichier qui me va bien en pièce jointe :)

Qu'en penses-tu ?
lionel :)
 

Pièces jointes

  • Patrick test contextual menu sur textbox version pour lionel.xlsm
    40.7 KB · Affichages: 1

Statistiques des forums

Discussions
315 103
Messages
2 116 249
Membres
112 695
dernier inscrit
ben44115