vba excel : probleme de textbox

vba excel : probleme de textbox - VB/VBA/VBS - Programmation

Marsh Posté le 19-11-2005 à 22:20:26    

bonsoir
 
j'ai un textbox dans lequel je rentre des données sur 3 lignes et j'en récupère son contenu dans une cellule mais le ctrl+entrée du textbox fait apparaitre un petit carré dans la cellule.
 
je suppose qu'il faille supprimer le dernier caractere de chaque ligne mais je ne sais vers où m'orienter... quelqu'un aurait une petite idée ???
 
Sinon j'ai un autre textbox dans lequel j'aimerais effectuer un clic droit et pouvoir y coller du texte copié.
 
je suposse encore que ça puisse etre un evenement de la textbox mais lequel ???
 
 
merci

Reply

Marsh Posté le 19-11-2005 à 22:20:26   

Reply

Marsh Posté le 23-11-2005 à 21:02:34    

Salut,  
 
Je crois avoir en partit compris ton problème :  
 
Tu peux pour coller ton text avec un clic droit insérer ceci dans ThisWorkbook:  
 
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 ActiveSheet.Paste
End Sub
 
Tu peux aussi insérer le formule "ActiveSheet.Paste" dans un raccourci clavier ou fixer une condition dans ton textbox qui dit que si les lettre "XXX" son taper, il copie le text.
 
Pour le  (C' est ça ?), je peux pas trop proposer quelque chose car je ne sais pas répartir mes donnée sur trois lignes dans un textBox. Mais, si tu donnait le contenu de ton texbox, ça pourait peut être aider.
 

Reply

Marsh Posté le 23-11-2005 à 21:18:24    

Le code qui apparait sous la forme d'un carré dans ton cas est un code vbLf, autrement dit un chr(10). Il est possible de remplacer les chr(10) par des espaces avec l'instruction Replace(le_texte, chr(10), " " ).

Reply

Marsh Posté le 25-11-2005 à 00:59:36    

Désolé pour ma réponse tardive faute de temps
 
je vous remercie d'abord pour avoir chercher une solution au problème
 
Je voulais coller dans un textbox (avec un clic droit si possible) des informations que je récupère par un clic droit - copier dans le forum par exemple. Où sont stockées les données que tu copie par un clic droit ????
Je pense que le début doit être :  
 
Private Sub TextBox_BeforeRightClick(???)  
 
Pour le contenu de mes textbox c'est le(s) nom(s) et le(s) prénom(s) d'artiste(s). Le nom, en majuscules, en premier, et le ou les prénoms en second en minuscules (sauf la première lettre bien sûr !!!) ensuite je fais ctrl+entrée pour éventuellement entrer un autre nom dans le meme textbox.
 
Ou sinon faudrait remplacé le carré directement dans la cellule ???
 
Alors là ça voudrait dire qui faut que je fasse une boucle du genre
 
For each cellule in selection
 
Replace(???,chr(10)," " ) 'l'espace entre les guillemets est obligatoire ???
 
Next
 
mais ma sélection est une plage qui s'allonge continuellement vers le bas ...
 
Je vais réfléchir à la dernière question ça m'a l'air simple mais de l'aide n'est pas malvenue.
 
Merci. Bonne Nuit.

Reply

Marsh Posté le 25-11-2005 à 10:18:16    

Les informations qui sont copiées ou coupées (par un clic droit faisant apparaitre un menu contextuel et un clic gauche sur l'option "copier" ou "coller" de ce menu, ou bien par l'utilisation des combinaisaisons de touches ctrl+c ou ctrl+x ou ctrlj+insert) sont affectées au presse-papier de Windows. Le presse-papier enregistre l'adresse mémoire de ces données, et permet à n'importe quelle application windows de demander l'adresse où se trouvent ces données pour les récupérer par une action de collage.
 
L'instruction Replace est une instruction VBA, mais contrairement à ce que je croyais, il semble que tu ne fasses pas de programmation VBA, au moins pas pour ce problème. Mais sans programmation, je ne vois pas comment enlever les petits carrés, autrement qu'avec les touches du clavier "suprr" ou "del".
 
Avec de la programmation VB, il faut récupérer le texte contenant les carrés dans une variable de type chaine. Puis modifier le contenu de cette variable avec l'instruction Replace, ou Left , Mid, et Right, ou autres. Puis lorsque les petits carrés ont ainsi été supprimés ou remplacés par des espaces (comme je le croyais (c'est pour cela que j'avais suggéré le remplacement par " " au lieu de "" ), mais en fait tu souhaites peut-être les supprimer entièrement) ou remplacés par autres choses, alors il faut insérer cette chaine sans petit carré dans une cellule. Bien sûr cela nécessite les connaissances de base de VBA pour mettre le contenu d'une cellule dans une variable et pour mettre dans une cellule le contenu d'une variable.
 
De plus, il est possible que les petits carrés ne soient pas des caractère vbLf (chr(10)) comme je le pensais, mais peut-être autre chose. Pour le savoir, il faudrait examiner le code Ascii des caractères constituant le texte. Dans un cas que j'avais traité, il s'agissait de vbLf, mais là le problème est peut-être différent cette fois-ci.

Reply

Marsh Posté le 25-11-2005 à 11:08:31    

Salut McKoy,
 
Jai trouvé un petit truc qui va peut être t'aider.
 
Pour ton copier coller dans le textbox, j'ai trouvé ceci :

Code :
  1. Private Sub TextBox1_DropButtonClick()
  2.      TextBox1.Paste
  3. End Sub

Ca ne t'ouvre pas de menu déroulant en cliquant droit, mais quand tu es dans le textbox en faisant F4 ça te colle le contenu du presse papier. Il y a surement mieux, mais c'est une piste.
 
Pour ton histoire de valeur dans la textbox, tu as dèja le multiline = true, place aussi le enterkeybehavior= true dans les proprièté du textbox. comme ça tu ne fais que "entrée" pour aller à la ligne. Même si tu as toujours le carré (dû à un CHr(13)) quand tu envois dans une cellule. avec ça, tu supprime ce caractère:

Code :
  1. Valeur = Replace(TextBox1.Value, Chr(13), "" )


 
Pour la mise en forme, j'ai éventuellement réussi à faire en sorte que le premier mot soit en majuscule, ensuite après un espace la première lettre en majuscule le reste en minuscule et tous les premiers mots de chaque ligne en majuscule :

Code :
  1. Private Sub CommandButton1_Click()
  2. Dim Valeur, NValeur, test As Integer, i As Integer
  3. 'récupération du contenu de la textbox avec suppréssion du chr(13)
  4. 'qui te crée un carré dans la cellule
  5. Valeur = Replace(TextBox1.Value, Chr(13), "" )
  6. 'Mise en place de la nouvelle valeur
  7. NValeur = ""
  8. 'Placement d'un test pour savoir où tu te situe (Chr(32) = espace
  9. ' donc première lettre qui suit en maj, Chr(10) retour à la ligne donc
  10. ' majuscules
  11. test = 1
  12. For i = 1 To Len(Valeur)
  13. 'Definition de la valeur de test
  14.      Select Case Mid(Valeur, i, 1)
  15.           Case Chr(10)
  16.                test = 2
  17.           Case Chr(32)
  18.                test = 0
  19.      End Select
  20.      Select Case test
  21.           Case 1 ' Mot après un chr(10)
  22.           NValeur = NValeur & UCase(Mid(Valeur, i, 1))
  23.           Case 2 'traitement du chr(10)
  24.           NValeur = NValeur & Chr(10)
  25.           test = 1
  26.           Case 0  'Après l'espace tout de suite première lettre en maj
  27.           NValeur = NValeur & Chr(32) & UCase(Mid(Valeur, i + 1, 1))
  28.           test = 3
  29.           i = i + 1
  30.           Case 3  'Fin du mot en minuscule
  31.           NValeur = NValeur & LCase(Mid(Valeur, i, 1))
  32.      End Select
  33. Next i
  34. Range("B1" ).Formula = NValeur
  35. End Sub

Hésite pas à demander des infos sur les fonctions. Tu pouuras aussi modifier cette fonction pour la faire passer en boucle sur ta liste déjà saisie :)
 
@+
 
 


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 27-11-2005 à 00:29:06    

merci a olivthill pour son cours de théorie et a watashi pour son cours de pratique
 
g réussi à placer le replace range("B1" ).value = (textbox.value,chr(13),"" ) ça marche nickel sans espace entre les 2 guillemets
 
J'ai oci utiliser la méthode du textbox.paste qui marche bien avec F4 alors je me suis dis pourquoi pas placé un pti sendkeys(F4) ou un truc du genre...  
J'avais trop vite eu une idée (ça ne pouvait pas être la bonne ) alors je vais chercher comment coller directement a partir du presse papiers
 
Mais je n'ai pas oublier l'idée de faire apparaitre um menu contextuel par clic droit et pouvoir coller....
 
Puis je vais m'attaquer aux majuscules et minuscules après je répondrais dans unn prochain message
 
merci encore a vous 2 a+

Reply

Marsh Posté le 05-04-2006 à 00:17:14    

J'avais lacher ce ptit programme et me voila enfin de retour dessus...
 
Je me lance a l'assaut des majuscules je comprends mais j'aimerais si vous pouviez me décrire comment fonctionne test et select case...???
 

Reply

Marsh Posté le 05-04-2006 à 12:50:56    

Avec les commentaires tu ne comprends pas quoi ?
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed