Saisie d'un USERFORM TEXTBOX sur une colonne

Bonjour a tous,

Voila j'ai un userform textbox qui demande a l'utilisateur de saisir un commentaire ensuite ce commentaire doit être mis dans le range(G11), et ensuite après chaque demande de saisie de commentaire, mon programme doit mettre le commentaire suivant en dessous du commentaire précédent et cela sans utilisé une boucle for puisque cette demande de saisie n'intervient qu'une seul pas tout le temps donc on ne va pas demander a l'utilisateur de saisir sans cesse un commentaire !

j'ai essaié des truc mais j'ai des erreur dans la compilation ! je vous laisse voir :

dans le workbook:

  avertissement.ligne_commentaire = 11

dans le code du userform:

Public ligne_commentaire As integer

Private Sub TextBox1_Change()

   Range("G" & ligne_commentaire) = TextBox1
   ligne_commentaire = ligne_commentaire + 1

End Sub

remarque : "avertissement" est le nom de mon userform, j'utilise "avertissement.ligne_commentaire = 11" pour initialisé ma première cellule a G11, l'erreur et dans la syntaxe du range

Bonjour Jaja, bonjour le forum,

le code sur l'événement Change de la TextBox1 ne me paraît pas le plus approprié. Soit tu utilises un CommandeButton qui, à la fin du remplissage de ta UserForm, renvoie toutes les données vers les cellules, soit je te recommande d'envoyer le commentaire à la sortie de la Textbox1 avec l'événement Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean). Choisis ce qui te paraît le mieux adapté et place le code ci-dessous :

Dim DEST as Range

Set DEST = IIf(Range("G11").Value = "", Range("G11"), Cells(Application.Rows.Count, "G").End(xlUp).Offset(1,0))
DEST.Value = Me.TextBox1.Value

salut ThauThème,

Merci pour ton aide aussi rapide,

effectivement marche vraiment bien, je suis curieux de connaitre comment ça fonctionne, je vais essayer de comprendre ça !!

Re,

le principe est simple. On définit une variable de type Range (qui correspond a une cellule ou une plage de cellule)

IIf est une manière rapide de faire un IF... Else... End If en une seule ligne. Ça fonctionne comme ça : Si(Test, Resultat si Test est vrai, Résultat si Test est faux). Donc je teste pour voir si G11 est vide. Si oui alors la variable DEST est G11, sinon, on part de la dernière cellule de la colonne G : Cells(Application.Rows.Count, "G"), on remonte à la dernière cellule éditée de la colonne avec : End(xlUp) puis on descend d'une ligne pour avoir la première cellule vide avec Offset(1, 0)) et DEST devient celle cellule...

Rechercher des sujets similaires à "saisie userform textbox colonne"