[VBA] Créer une TextBox dans Excel et copier des cellules dedans [Résolu]

cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 11 avril 2012 à 22:11 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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.

Merci

PS : Je suis sur Excel 2007

Raph
Afficher la suite 

14 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 avril 2012 à 16:34
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 avril 2012 à 22:16
0
Utile
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.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 avril 2012 à 22:22
0
Utile
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.
Commenter la réponse de ucfoutu
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 11 avril 2012 à 22:48
0
Utile
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
Commenter la réponse de cs_Raph04
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 11 avril 2012 à 22:59
0
Utile
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.


Raph
Commenter la réponse de cs_Raph04
MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention - 12 avril 2012 à 00:00
0
Utile
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 !
Commenter la réponse de MarcPL
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 12 avril 2012 à 15:31
0
Utile
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 ?

Raph
Commenter la réponse de cs_Raph04
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 avril 2012 à 16:20
0
Utile
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
Commenter la réponse de ucfoutu
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 12 avril 2012 à 16:55
0
Utile
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.

Un grand merci à toi !

Raph
Commenter la réponse de cs_Raph04
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 12 avril 2012 à 17:06
0
Utile
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 ?

Raph
Commenter la réponse de cs_Raph04
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 avril 2012 à 17:19
0
Utile
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
Commenter la réponse de ucfoutu
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 12 avril 2012 à 17:59
0
Utile
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.

Donc peut être qu'on a pas la même version de la doc, mais moi j'ai celle qui check en ligne : http://msdn.microsoft.com/en-us/library/aa221790(v=office.11).aspx

Sur shape on a un peu plus d'info en bas sur les parents et les "enfants" :
http://msdn.microsoft.com/en-us/library/aa174305(v=office.11).aspx

Raph
Commenter la réponse de cs_Raph04
cs_Raph04 10 Messages postés samedi 25 novembre 2006Date d'inscription 12 avril 2012 Dernière intervention - 12 avril 2012 à 18:10
0
Utile
Ha je crois que j'ai comnpris, il faut remonter dans l'objet shape et ensuite aller dans "Child Objects | ShapeRange Object" :
http://msdn.microsoft.com/en-us/library/aa174304(v=office.11).aspx

Et là on a les propriété dans la zone de texte a hérité.
Raph
Commenter la réponse de cs_Raph04
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 avril 2012 à 18:13
0
Utile
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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.