Copier les lignes d'un commentaire

  • Initiateur de la discussion Initiateur de la discussion Ashaar
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Ashaar

Guest
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
 
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
 
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

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
 
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
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
553
Réponses
9
Affichages
361
Retour