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 Sub

NB : 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 Sub
Private Sub TextBox1_Change()

End Sub
Private Sub NoteBox_Change()

    ActiveCell.Value = UserForm1.NoteBox.Value
End Sub

L'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 Sub

Ici 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 Sub

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 comprends pas trop ce que tu souhaites faire ici mais un retour à la ligne se fait avec :

vbCr

exemple :

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 Sub

Pour 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 Sub

En 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

Rechercher des sujets similaires à "boite saisie contenant texte"