Dresser une liste à partir des commentaires : Dur dur

Salutations,

Je trouve ce forum et les membres fans de Excel, géniaux ! Votre aide me permet d'apprendre à force de chercher à comprendre vos syntaxes notamment dans les codes.

Sur une feuille qui comprend pas mal de commentaires, j'aimerais trouver une solution pour que les commentaires situés dans une certaine zone, forment une liste.

Exemple : Entre B8 et C15 (ce qui peut représenter un max de 16 cellules), plusieurs cellules disposent d'un commentaire.

J'aimerais une liste de ces commentaires entre J1 et J16...

J'ai pensé à CONCATENER mais çà ne semble pas être çà, faut dire que je suis nul par rapport à vous

Bonjour

Un petit fichier exemple STP

Amicalement

Nad

Voilà un fichier de test

Merci de placer ton fichier sur le site :

EbNYLzTz5wM

Nad

Ah merci pour l'info, je ne savais pas.

18commentaires.xlsx (10.71 Ko)

Re

Regarde si ça te convient (active les macros à l'ouverture)

Amicalement

Nad

C'est presque çà.

Par contre, il faudrait que les commentaires apparaissant dans d'autres cellules (hors celles du tableau) ne figurent pas dans la liste.

Bonjour

Ma contribution

C'est très utile Banzai64 et çà fonctionne. Mais à y regarder de plus près, le contenu des commentaires ne correspond pas.

Par contre, dés que je protège la feuille, la macro ne veut plus s'enclencher.

Je joins le fichier Global (RSU.xls) la feuille concernée (ateliers v) est déverouillée. Je joins également le classeur Test2R.xls (c'est de là que sont remplies les cases correspondants aux lignes 2RA et 2RB utilisées dans le test).

pour le RSU.xls (trop gros)

16test2r.zip (31.31 Ko)

Bonjour

Il faut que tu déprotèges en début de macro et que reprotéges en fin de macro

Exemple

Option Explicit

Sub ListeCommentaire()
Dim Plage As Range
Dim Cel As Range
Dim Tablo
Dim Indice As Integer

  ActiveSheet.Unprotect Password:="Mot de passe"
  Application.ScreenUpdating = False
  If Range("B19") <> "" Then
    Range("B19:B" & Range("B" & Rows.Count).End(xlUp).Row).ClearContents
  End If
  On Error Resume Next
  Set Plage = Range("C5:T10").SpecialCells(xlCellTypeComments)
  On Error GoTo 0
  If Plage Is Nothing Then Exit Sub
  ReDim Tablo(1 To Plage.Count, 1 To 1)
  For Each Cel In Plage
    Indice = Indice + 1
    Tablo(Indice, 1) = Replace(Cel.Comment.Text, Chr(10), "")
  Next Cel
  Range("B19").Resize(Indice, 1) = Tablo
  ActiveSheet.Protect Password:="Mot de passe"
End Sub

Sub effacerlisteateliersv()
  ActiveSheet.Unprotect Password:="Mot de passe"
  Range("B19:B61").ClearContents
  ActiveSheet.Protect Password:="Mot de passe"
End Sub

A toi de définir Mot de passe

EDIT:

cmbodson2 a écrit :

Mais à y regarder de plus près, le contenu des commentaires ne correspond pas.

Remplaces la ligne existante par la ligne surlignée (certains commentaires on un LineFeed et d'autres non)

Merci pour tout. Tu es un As

Bonjour

Regardes l'edit de mon message précédent

Messages croisés

Merci pour tout, je viens de rentrer, je vais travailler dessus pour l'appliquer sur mon fichier.

Je rame, je n'y arrive pas.

Pourrais-tu me le réaliser ? Les modules s'emmêlent, je ne m'y retrouve plus.

J'ai déverrouillé les feuilles "atelier v" - "atelier w" - "atelier z".

(fichier > 300 Ko)

Banzai64 m'a fait un superbe code qui fonctionne parfaitement sur une feuille qui ne demande qu'une seule liste.

Mais j'ai d'autres feuilles où plusieurs listes doivent être dressées. Alors me suis dit que je devais copier-coller son code pour réaliser mes trois listes et j'y ai changé les cibles, mais ce n'est pas suffisant. Il doit y avoir une erreur dans la syntaxe du code ici-bas.

Quelqu'un pourrait-il vérifier ?

La première liste reprend bien les bonnes infos, mais pas la 2e liste ni la 3e

Sub ListeAtelierW()
Dim Plage As Range
Dim Cel As Range
Dim Tablo
Dim Indice As Integer

  ActiveSheet.Unprotect Password:="mot de passe"
  Application.ScreenUpdating = False
  If Range("D34") <> "" Then
    Range("D34:D60" & Range("D" & Rows.Count).End(xlUp).Row).ClearContents
  End If
  On Error Resume Next
  Set Plage = Range("C5:T10").SpecialCells(xlCellTypeComments)
  On Error GoTo 0
  If Plage Is Nothing Then Exit Sub
  ReDim Tablo(1 To Plage.Count, 1 To 1)
  For Each Cel In Plage
    Indice = Indice + 1
    Tablo(Indice, 1) = Replace(Cel.Comment.Text, Chr(10), "")
  Next Cel
  Range("D34").Resize(Indice, 1) = Tablo

  If Range("I34") <> "" Then
    Range("I34:I60" & Range("I" & Rows.Count).End(xlUp).Row).ClearContents
  End If
  On Error Resume Next
  Set Plage = Range("C14:T19").SpecialCells(xlCellTypeComments)
  On Error GoTo 0
  If Plage Is Nothing Then Exit Sub
  ReDim Tablo(1 To Plage.Count, 1 To 1)
  For Each Cel In Plage
    Indice = Indice + 1
    Tablo(Indice, 1) = Replace(Cel.Comment.Text, Chr(10), "")
  Next Cel
  Range("I34").Resize(Indice, 1) = Tablo

  If Range("N34") <> "" Then
    Range("N34:N60" & Range("N" & Rows.Count).End(xlUp).Row).ClearContents
  End If
  On Error Resume Next
  Set Plage = Range("C23:T28").SpecialCells(xlCellTypeComments)
  On Error GoTo 0
  If Plage Is Nothing Then Exit Sub
  ReDim Tablo(1 To Plage.Count, 1 To 1)
  For Each Cel In Plage
    Indice = Indice + 1
    Tablo(Indice, 1) = Replace(Cel.Comment.Text, Chr(10), "")
  Next Cel
  Range("N34").Resize(Indice, 1) = Tablo

  ActiveSheet.Protect Password:="mot de passe"
End Sub

Bonjour

Quand on me cite, j'aime bien que l'on ne déforme ce que j'écris

Range("D34:D60" & Range("D" & Rows.Count).End(xlUp).Row).ClearContents

Ca ce n'est pas mon style

Si à partir de la 2ème plage cela plante c'est qu'il faut réinitialiser les variables

Donc à placer avant le début de la 2ème et le début de la 3ème zone

  Indice = 0
  Set Plage = Nothing
  If Range("J33") <> "" Then
    Range("J33:J" & Range("J" & Rows.Count).End(xlUp).Row).ClearContents
  End If
.
.
  Indice = 0
  Set Plage = Nothing
  If Range("O33") <> "" Then
    Range("O33:J" & Range("O" & Rows.Count).End(xlUp).Row).ClearContents
  End If

Un très très grand merci à Banzai64.

Rechercher des sujets similaires à "dresser liste partir commentaires dur"