Boite de saisie dans une cellule contenant du texte
Bonjour à tous,
Pour donner un peu de contexte, j'ai repris un Excel d'un collègue qui gérait diverses actions en cours. Le tableau en question est donc assez long, et de fait, assez peu pratique à utiliser. J'ai donc nettoyé ce tableau : suppression de colonnes peu utiles, couleurs, liste déroulante afin de le rendre plus agréable à l'emploi. Il y a dans ce tableau, 2 colonnes qui servent à noter du texte. Ces cellules prenant donc beaucoup de place, j'ai cherché un moyen plus pratique de les utiliser. Tout d'abord en les laissant en petit format et en utilisant la barre de formule, mais je trouve le résultat peu satisfaisant.
J'ai donc cherché à améliorer cela. Dans mon esprit, je cherche à faire une macro qui ouvre une boite de saisie en double cliquant sur la cellule et qui comprend le texte déjà existant ou est vide dans s'il y a pas de texte.
Pour la 1ère partie - ouverture de la fenêtre - , j'ai ceci :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("R:R")) Is Nothing Then
UserForm1.Show
End If
End SubNB : La colonne de texte est la colonne R.
Cette partie fonctionne, la fenêtre s'ouvre correctement.
Pour la 2ème partie - Création de la Zone de texte - , j'ai crée un UserForm avec : une zone de texte pour écrire ou compléter mes notes ainsi qu'un bouton "OK" pour fermer et sauvegarder.
Private Sub Label1_Click()
End SubPrivate Sub TextBox1_Change()
End SubPrivate Sub NoteBox_Change()
ActiveCell.Value = UserForm1.NoteBox.Value
End SubL'idée ici est de faire en sorte que le texte déjà inscrit dans le cellule soit conservé, mais cela ne fonctionne pas.
Private Sub CommandButton1_Click()
Unload UserForm1
UserForm1.Hide
End SubIci le code pour le bouton "OK" qui ferme la fenêtre.
Le programme fonctionne plutôt bien à l'exception de ce qui permet de conserver le texte préexistant. Un autre point également concernant la mise en forme du texte au sein de la zone de texte; comment avoir un retour à la ligne automatique ?
Je précise que je suis pas un expert de VBA et je vous remercie par avance de votre aide.
Hello,
Private Sub CommandButton1_Click()
'Pour passer tu textbox à la cellule active
ActiveCell.Value = TextBox1.Value
End Sub
Private Sub UserForm_Initialize()
'Pour récupérer le texte de la cellule active dans le textbox
TextBox1.Value = ActiveCell.Value
End SubUn autre point également concernant la mise en forme du texte au sein de la zone de texte; comment avoir un retour à la ligne automatique ?
Je comprends pas trop ce que tu souhaites faire ici mais un retour à la ligne se fait avec :
vbCrexemple :
Activecell = "toto" & vbCr & "tata" & vbCr & vbCr & "tutu"Hello Rag02700,
Tout d'abord merci pour ta réponse.
J'ai modifié le code, mais il y a toujours un problème. Désormais, la TextBox m'affiche le texte de la dernière cellule et non de celle sur laquelle je clique.
Private Sub CommandButton1_Click()
'Pour passer tu textbox à la cellule active
ActiveCell.Value = TextBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
'Pour récupérer le texte de la cellule active dans le textbox
TextBox1.Value = ActiveCell.Value
End SubPour ce qui est de la mise en forme, je pensais plutôt à forcer un retour à ligne lorsque la ligne de la TextBox est pleine. Actuellement, elle continue indéfiniment vers la droite.
Merci d'avance
Re,
Pour le premier problème, j'ai trouvé :
Je pense que l'ajout d'un seul "End" permettait de résoudre le 1er problème mais j'avais déjà créé les variables, je testerai plus tard.
Private Sub CommandButton1_Click()
Dim new_txt As String
new_txt = TextBox1.Value
ActiveCell.Value = new_txt
txt_pcd = Empty
new_txt = Empty
UserForm1.Hide
End
End Sub
'Pour passer tu textbox à la cellule active
' ActiveCell.Value = TextBox1.Value
' Target = ActiveCell.Value
' UserForm1 Unload
' End Sub
Private Sub UserForm_Initialize()
Dim new_txt As String
Dim txt_pcd As String
txt_pcd = Empty
new_txt = Empty
'Pour récupérer le texte de la cellule active dans le textbox
txt_pcd = ActiveCell.Value
TextBox1.Value = txt_pcd
End SubEn ce qui est du deuxième problème (le saut de ligne automatique), je galère toujours ...
C'est bon, c'est résolu.
Pour le retour automatique, il suffit de le paramétrer dans les caractéristiques de la UserForm en bas à gauche.
Merci Rag02700