1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| Sub Test()
Dim NoLigne, DerniereLigne, NoCol, NoColCommentaire, DerniereColonne
Dim i, NbRef, blabla, Tableau
DerniereLigne = Range("A65535").End(xlUp).Row
On Error Resume Next
NoLigne = 1
NoCol = 1 'N° de colonne où tu places tes références - Tu adaptes
NoColCommentaire = 2 '... à adapter
Do While Cells(NoLigne, NoColCommentaire).Value <> ""
NbRef = 0
blabla = ""
Tableau = ""
If Cells(NoLigne, NoColCommentaire).Comment.Text = "" Then
'Le commentaire n'existe pas => Erreur
Else
blabla = Mid(Cells(NoLigne, NoColCommentaire).Comment.Text, _
InStr(Cells(NoLigne, NoColCommentaire).Comment.Text, ":") + 1, _
Len(Cells(NoLigne, NoColCommentaire).Comment.Text) - _
InStr(Cells(NoLigne, NoColCommentaire).Comment.Text, ":"))
End If
If InStr(blabla, vbLf) <> 0 Then
Tableau = Split(blabla, vbLf)
NbRef = UBound(Tableau) 'Nombre de ligne à ajouter = Nbre références - 1
End If
'Insertion de NbRef lignes en dessous de la ligne lue
If NbRef > 0 Then
'Vérification : Si le dernier indice du tableau est vide, on l'élimine
If Trim(Tableau(NbRef)) = "" Then NbRef = NbRef - 1 'NbRef = Nbre lignes à ajouter
For i = 1 To NbRef
Cells(NoLigne + 1, 1).EntireRow.Insert Shift:=xlDown
Next
'Copie de la ligne courante et collage sur les NbRef lignes suivantes
DerniereColonne = Range("IV1").End(xlToLeft).Column
Range(Cells(NoLigne, 1), Cells(NoLigne, DerniereColonne)).Copy _
Destination:=Range(Cells(NoLigne + 1, 1), Cells(NoLigne + NbRef, DerniereColonne))
'Ensuite on peut renseigner chaque nouvelle ligne de la référence
'Comme i = 0 au départ, on commence par la ligne contenant le commentaire
For i = 0 To NbRef
Cells(NoLigne + i, NoCol).Value = Tableau(i)
Next
End If
'On incrémente le NoLigne de 1 + NbRef correspondant au nbre de lignes ajoutées
NoLigne = NoLigne + 1 + NbRef
Loop
On Error GoTo 0
Exit Sub 'A supprimer quand tu auras vérifié que le code fait bien ce que tu veux...
'... ce qui activera les lignes suivantes et supprimera tous les commentaires
For Each Commentaire In Worksheets("Feuil4").Comments
Commentaire.Delete
Next
End Sub |
Partager