cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012
-
11 avril 2012 à 22:11
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
12 avril 2012 à 18:13
Bonjour,
Je souhaiterais créer une TextBox en VBA pour la mettre directement dans un Excel (pas un formulaire).
Ensuite je souhaiterais copier les valeurs de certaines cellules pour les mettre les une à la suite des autres dans la TextBox créée juste avant.
Je n'ai pas trouver la fonction pour créer la TextBox. Quand j'enregistre une Macro, il ne met rien du tout lorsque je créer la TextBox... comme si la textbox été apparue par miracle ou qu'elle avait toujours été là.
Est ce que vous connaissez la fonction pour créer la TextBox avec des paramètres d'entrée comme la je pourrais adapter sa taille et son emplacement.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 avril 2012 à 16:34
J'espère que tu as corrigé mon intrgrt et mon srring (écrits à main levée avec mes gros doigts).
Pour répondre à ta question relative au nom, je te propose ce petit exercice auto-explicite :
Dim Hauteur As Integer, Largeur As Integer, c As Range, texte As String
Largeur = 100
Hauteur = 200
For Each c In Range("G5:G12")
texte = texte & vbCrLf & c.Value
Next
With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50, Largeur, Hauteur)
.Name = "blala"
End With
ActiveSheet.Shapes("blala").TextFrame.Characters.Text = texte
MsgBox "regarde ce qu'il y a dans cette zone de texte"
ActiveSheet.Shapes("blala").TextFrame.Characters.Text = "texte modifié"
MsgBox "regarde maintenant à nouveau"
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 11 avril 2012 à 22:16
Bonjour,
Je n'ai pas trouver la fonction pour créer la TextBox. Quand j'enregistre une Macro, il ne met rien du tout lorsque je créer la TextBox... comme si la textbox été apparue par miracle ou qu'elle avait toujours été là.
explique-moi pourquoi, lorsque je le fais, moi, j'obtiens ceci (copié/collé) ===>>
Sub Macro2()
'
' Macro2 Macro
'
'
ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=344.25, Top:=117, Width:=150, Height:= _
46.5).Select
End Sub
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 11 avril 2012 à 22:22
Conclusions :
- ou tu ne sais pas utiliser l'enregistreur de macros
- ou tu en es encore à confondre TextBox et Zone de texte
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.
cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012 11 avril 2012 à 22:48
Alors en effet, on ne parle pas de la même chose.
Comme je suis au canada, j'ai mon Excel en anglais, donc ça doit être une zone de Text :-s
En tout cas l'objet se trouve dans Insert>Text>TextBox, j'en conclue qu'en Français ça doit être Insérer>Texte>Zone de texte.
Désolé pour la confusion,
Raph
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012 11 avril 2012 à 22:59
Bon alors avec le bon nom c'est plus simple pour les recherches sur google...
J'ai trouvé ça qui fonctionne :
Dim Hauteur As Single
Dim Largeur As Single
Largeur = 100
Hauteur = 200
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, Largeur, Hauteur).Select
Je vais chercher un peu plus pour voir comment copier coller dedans.
MarcPL
Messages postés172Date d'inscriptionjeudi 8 décembre 2011StatutMembreDernière intervention21 juillet 20132 12 avril 2012 à 00:00
Peut-être du côté de .TextFrame.Characters.Text ...
___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012 12 avril 2012 à 15:31
Salut,
Alors le mieux que j'arrive à faire c'est :
Sub Macro1()
Dim Hauteur As Single
Dim Largeur As Single
Largeur = 100
Hauteur = 200
Range("G5:G12").Select
Selection.Copy
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50, Largeur, Hauteur).TextFrame.Characters.Text = ActiveSheet.Paste
End Sub
Mais le problème c'est que ça ne copie pas les valeurs des cellules (alors qu'à la fin du programme les cellules sont toujours entouré en mode copie et donc toujours dans le buffer)
Un autre truc qui me frustre un peu, c'est qu'un fois créer je ne peu plus accéder à la zone de texte, parce que je n'ai déclarer aucun nom...
Connaissez-vous un moyen d'y accéder malgré tout ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 avril 2012 à 16:20
Bon.
Une chose apès l'autre.
- On ne travaille pas à coups de Select, Copy et Paste ! on pointe directement vers les objets !
- il te faut parcourir ta plage et en extraire les contenus.
Exemple :
Dim Hauteur As intrgrt, Largeur As Integer, c As Range, texte As srring
Largeur = 100
Hauteur = 200
For Each c In Range("G5:G12")
texte = texte & vbCrLf & c.Value
Next
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50, Largeur, Hauteur).TextFrame.Characters.Text = texte
Sans préjuger de l'utilité d'afficher dans une zone de texte le contenu d'une plage ! Tu ne pourras même pas en extraire agilement les éléments !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012 12 avril 2012 à 16:55
Magnifique !
Ça fonctionne !
Sinon crois moi je n'aime pas trop non plus utiliser ce genre d'objet. C'est juste que je travail avec un outil propriétaire dans un langage spécifique à ma compagnie, et que ce que je dois faire et les désirs du clients m'oblige à utiliser ça
Enfin je me doutais bien qu'il fallait fonctionner en objet, mais après plusieurs tentative je n'arrivais pas à trouver comment acceder à l'objet après coup... en lui donnant un non c'est bien aussi
Je vais checker aussi pour garder le format du texte, mais ça je pense que je devrais m'en sortir.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 avril 2012 à 17:19
Tu as du faire une mauvaise manip, car je viens de le faire et j'aboutis à la bonne rubrique.
C'est dans l'aide de VBA et non dans celle de Excel, qu'il faut chercher, bien sûr.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012 12 avril 2012 à 17:59
En fait lorsque je suis dans l'editeur de VBA, je selectionne "AddTextbox" par exemple et je fait F1.
J'arrive sur l'aide de la méthode de AddTextbox avec ses paramètres.
Par contre je n'arrive pas à savoir qu'est ce que je peux mettre après le point de AddTextbox. par exemple "Name" ou "Select" ou encore "TextFrame".
Et après lorsque je suis à TextFrame que puis-je mettre après le point ? et ainsi de suite.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 avril 2012 à 18:13
Voilà !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
cs_Raph04
Messages postés10Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention12 avril 2012 12 avril 2012 à 17:06
Au passage, ça fait longtemps que j'avais pas codé en VBA et je trouve que la doc est maintenant assez mal faite...
Comment est ce que je peux trouver les éléments qui découlent de AddTextbox.
Parce que quand je tape AddTextbox. il ne me propose rien comme objet après et là doc me donne juste les paramètres de la méthode AddTextbox...
Est ce qu'il existe un arbre qui montre les objets et les héritages ?