![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour!
J'ai un UserForm (avec une TextBox) ouvert par une macro. Je voudrais que, lorsque je clique sur une cellule de la feuille active, le contenu de celle-ci aille directement dans la TextBox. Comment puis-je faire? Merci pour votre aide. |
| ANNONCES | |||
|
|
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
c'est ce que je te propose avec ce bout de code, si ce n'est que bien sur il faut sélectionner la cellule sur laquelle tu cliques
1) en cliquant sur la cellule je la sélectionne 2) je lis son contenu 3) je transfère ce contenu dans un TextBox est ce bien ce que tu désires réaliser ? Léa |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Non pas vraiment...mais merci quand même!
Voici plus précisément mon problème: 1- j'ai une textbox dans un userform ouvert 2- en dessous du userform il y a une feuille active 3- quand je clique sur la cellule A1 de cette feuille, je voudrais que le contenu aille dans la textbox 4-puis si je clique maintenant sur B7, le contenu de B7 aille dans la textbox remplcer le précédent contenu 5- ensuite, si je clique sur C12.... Bref, le contenu varie avec l'endroit où je clique!!! Si tu as une idée.... |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
bonsoir wesh et léa
si ta zone d'application dans feuil1(où je clique et c'est indiqué dans le textbox) est par exemple B2:E6 ou autre essaies avec l'éditeur VBE (feuil1) cette macro événementielle: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("B2:E6")) Is Nothing Then: End TextBox1 = Target End Sub A+ Michel |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
Il me semble que c'est ce que je t'ai proposé
sélection de la cellule cellule=ActiveSheet.RangeSelection.Adress lire le contenu contenu = ActiveSheet.Range(cellule) transférer le contenu dans le textbox Textbox.Value=contenu à toi de voir si ton textbox est hors de la feuille active, à le sélectionner avant de de le remplir Léa |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Wesh et Lea,
Si j'ai bien compris le problème, l'exemple envoyé en pièce jointe devrait répondre au problème posé. En résumé, quand on ouvre le classeur la fenêtre est affichée (Attention penser à l'ouvrir en non modal !). Codage de l'évènement WorkBook_Open. Private Sub Workbook_Open() UserForm1.Show End Sub Ensuite on capte les changements de selection des cellules dans la feuille active et on transfère le contenu de la cellule sélectionnée dans la TextBox. Codage de l'évènement Worksheet_SelectionChange. Private Sub Worksheet_SelectionChange(ByVal Target As Range) UserForm1.TextBox1 = Target End Sub Bon courage pour la suite. Cordialement. Omicron. |
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
ça ne marche toujours pas!
En tapant ton code, j'obtiens le résultat suivant: lorsque je clique en dehors de la zone B2:E6, le UserForm se ferme! Mais toujours rien qui apparaît dans la textbox lorsque je clique dans la zone B2:E6... |
|
|
#10 (permalink) |
|
Guest
Messages: n/a
|
re
combine ce que j'ai écris avec le post d'omicron (bonjour) la différence est que je limite l'action à B2:E6 et que j'ai considéré que texbox etait une propriété de userform donc d'après omicron: Private Sub Workbook_Open() UserForm1.Show End Sub si action sur toute la feuille Private Sub Worksheet_SelectionChange(ByVal Target As Range) UserForm1.TextBox1 = Target End Sub si action dans B2:E6 seulement Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("B2:E6")) Is Nothing Then: End UserForm1.TextBox1 = Target End Sub |
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir tout le monde, Omicron, Michel, Wesh, Léa (y a du monde) J'avais commencé un truc puis mon PC a crashé bien bien alors du coup j'arrive après la bataille !! lol... bon enfin moi je m'y prends tout à fait autrement... Voici une démo qui fera la même chose que celle d'Omicro mais sur tout le classeur... avec (comme d'hab) des trucs en plus (lol)... Pour Michel Attention à ta méthode : If Intersect(Target, Range("B2:E6")) Is Nothing Then: End ...qui est très peu conventionnelle en programmation, car End te dégage toutes les Variables publiques... Ce qui, selon l'application, peut être vraiment très dangereux.... Je conseille la méthode traditionnelle If Intersect(Target, Range("B2:E6")) Is Nothing Then Exit Sub ou (au choix) If Not Intersect(Target, Range("B2:E6")) Is Nothing Then Par ailleurs les deux poins ne sont pas nécessaires dans une ligne If... then Action (au contraire en fait il ne les faut pas !) Bonne soirée @+Thierry |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|