Copier les lignes d'un commentaire

Ashaar

XLDnaute Junior
Bonjour à tous,

Dans une cellule, j'ai un commentaire qui comporte 6 lignes.

Je sélectionne toutes les lignes puis les copie.
Je peux alors faire un collage spécial/Texte vers une cellule.
Cela me permet d'avoir 1 ligne de commentaire par cellule.

Et bien je n'arrive pas à faire la même chose sous VB.

J'arrive à copier le commentaire et à l'afficher dans une cellule mais ce n'est pas exploitable pour ce que je veux faire.

Avez vous une idée sur la façon d'y arriver ?

Merci
 

Nikolaï

XLDnaute Nouveau
Bonjour

Si je comprends bien tu as un commentaire avec plusieurs lignes et chaque ligne tu veux l'insérer dans une nouvelle cellule.

Si c'est cela que tu veux faire, il faut:

Fait un loop avec une fonction instr() avec comme mot à rechercher chr(10) qui est en fait une nouvelle ligne et ainsi de suite.

Je n'ai pas le temps de l'écrire car je dois filer à un meeting maintenant mais si personne ne trouve, je la ferais quand je reviendrai.

A plus tard
Christophe
 

Hervé

XLDnaute Barbatruc
Bonjour ashaar, nikolai, le forum

en pièce jointe une proposition, si j'ai compris comme niloaï.

le code

Sub Bouton2_QuandClic()
Dim tablo As Variant
Dim i As Byte

'incompatible excel 97
tablo = Split(Range('c5').Comment.Text, Chr(10))

For i = 0 To UBound(tablo)
    Cells(i + 1, 1) = tablo(i)
Next i

End Sub


salut
[file name=Classeur6_20051025152545.zip size=7087]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur6_20051025152545.zip[/file]
 

Pièces jointes

  • Classeur6_20051025152545.zip
    6.9 KB · Affichages: 20

Hervé

XLDnaute Barbatruc
re

Merci Nikolaï, mais pas parfait.

Pour eviter la boucle for to, je voulais renvoyer le tablo directement dans les cells, comme ceci :

Sub Bouton2_QuandClic()
Dim tablo As Variant

tablo = Split(Range('c5').Comment.Text, Chr(10))
Range('a1', Cells(UBound(tablo), 1)) = tablo

End Sub


Mais ce code ne me renvoi que l'index 0 du tablo (toto en l'occurence), et je ne sais pas pourquoi. si vous avez la réponse, merci de m'en faire profiter.


salut a vous tous
 

PascalXLD

XLDnaute Barbatruc
Modérateur
SAlut

En fait j'ai remarqué pour qu'un tableau soit copié direct dans des cellules il faut pour une rangée qu'il est cette structure

tablo(1,1) toto
tablo(2,1) tata
tablo(3,1) titi
tablo(4,1) tutu

et non

tablo(1) toto
tablo(2) tata
tablo(3) titi
tablo(4) tutu

Dans ton cas ton tableau a la deuxième structure donc ne peut être copié direct

Bonne soirée
 

Ashaar

XLDnaute Junior
Bonjour à tous,

Suite à l'idée de Nikolaï, j'ai développé un truc qui fonctionne :

Sub Macro2()
Commentaire = Range('E23').Comment.Text

PremCar = 1
xx = 4
'Calcul de la 1ere position du chr(10)
MyPos = InStr(PremCar, Commentaire, Chr(10), 1)

boucle:
If Mid(Commentaire, PremCar, (MyPos - 1)) = '' Then Exit Sub
Cells(xx, 8) = Mid(Commentaire, PremCar, (MyPos - 1))
xx = xx + 1
PremCar = PremCar + MyPos
GoTo boucle

End Sub

Mais je crois que mon code va partir joyeusement à la poubelle...
Très interessant le 'Split', Hervé, je ne connaissais pas.
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour à tous,

Il y a aussi ce petit bout de code (moins élégant que celui d'Hervé mais bon...) :

Code:
Sub CopieCommentaires()
'
Dim Contenu As DataObject
'
  Set Contenu = New DataObject
  Contenu.SetText Range('A1').Comment.Text
  Contenu.PutInClipboard
  Range('B1').Select
  ActiveSheet.PasteSpecial Format:='Texte'
End Sub

La cellule B1 étant la première cellule où l'on souhaite copier...

Amicalement
Charly
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11