Résultat de recherche dans un commentaire

Cyr25

XLDnaute Nouveau
Bonjour à tous,

Voila mon problème (hormis le fait que je suis débutant en vba), j'ai dans un classeur 2 onglets: le premier me sert de base de donnée avec des configurations d'outils et le second liste les outils disponibles.
Dans ce second onglet je voudrais à l'aide d'une macro afficher en commentaire, pour chaque référence d'outil (colonne A) les 3 premieres lignes de chaque colonne ou on le trouve dans le premier onglet.

J'ai bien trouvé un code pour automatiser l'affichage dans les commentaires, mais pour la recherche des occurences c'est encore au dessus de mes compétences.

Option Explicit
Sub Commentaire()
Dim vCellule As Object


For Each vCellule In Range("A2:A" & Range("A5").End(xlDown).Row)

vCellule.Select
vCellule.ClearComments
vCellule.AddComment
vCellule.Comment.Text vCellule.Value

Next
End Sub

Je vous joins le fichier allegé avec un commentaire en exemple

merci de votre intéret.
 

Pièces jointes

  • macro.zip
    43.5 KB · Affichages: 36
  • macro.zip
    43.5 KB · Affichages: 32
  • macro.zip
    43.5 KB · Affichages: 42

skoobi

XLDnaute Barbatruc
Re : Résultat de recherche dans un commentaire

Bonsoir,

voici une proposition:

Code:
Option Explicit
Sub Commentaire()
Dim vCellule As Range, c As Range, firstAddress As String, temp

For Each vCellule In Range("A2:A" & Range("A5").End(xlDown).Row)
  With Worksheets("RECHERCHE acet").Cells
    Set c = .Find(vCellule.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
      firstAddress = c.Address
      Do
        temp = temp & .Cells(1, c.Column).Value & "  " _
          & .Cells(2, c.Column).Value & "  " & .Cells(3, c.Column).Value & vbLf
        Set c = .FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
  End With
  vCellule.ClearComments
  vCellule.AddComment
  vCellule.Comment.Text temp
  temp = ""
Next
End Sub
 

ninbihan

XLDnaute Impliqué
Re : Résultat de recherche dans un commentaire

Bonsoir Cyr et Skoobi,

Ma version, bien moins concise que celle de Skoobi (et oui j'ai encore du chemin à parcourir), le seul petit plus étant peut être le dimensionnement auto des commentaires:
Code:
Sub init_commentaire()
Dim Plage As Range
Dim Vcellule As Range
Dim Vfind As Range
Dim Comment() As String
Dim Commentaire_entier As String
Dim i As Integer
Dim j As Integer
Dim k As Integer

With Worksheets("Recherche acet")
Set Plage = .Range("A1:DZ65")

For Each Vcellule In Worksheets("liste_outil").Range("A2:A" & Worksheets("liste_outil").Range("A5").End(xlDown).Row)
i = 0
j = 0
ReDim Comment(1, 0)
Comment(0, 0) = "$A$1"
Vcellule.ClearComments
Do While j = 0
Set Vfind = Plage.Find(Vcellule, .Range(Comment(0, i)), LookIn:=xlValues)
    If Vfind Is Nothing Then
        j = 1
    Else
        For k = 0 To UBound(Comment, 2)
        If Comment(0, k) = Vfind.Address Then j = 1
        Next k
    End If
    If j = 0 Then
    i = i + 1
    ReDim Preserve Comment(1, i)
    Comment(0, i) = Vfind.Address
    Comment(1, i) = Vfind.Column
    End If
Loop
For j = 1 To UBound(Comment, 2)
Commentaire_entier = Commentaire_entier & .Cells(1, CInt(Comment(1, j))).Value & " " & .Cells(2, CInt(Comment(1, j))).Value _
& " " & .Cells(3, CInt(Comment(1, j))).Value & vbLf
Next j

If Commentaire_entier <> "" Then
    Vcellule.AddComment
    Vcellule.Comment.Text Commentaire_entier
    Vcellule.Comment.Shape.TextFrame.AutoSize = True
    Commentaire_entier = ""
End If

Next
End With
End Sub

Bonne soirée,

Ninbihan
 
Dernière édition:

Cyr25

XLDnaute Nouveau
Re : Résultat de recherche dans un commentaire

Merci à vous deux pour votre rapidité, j'étais parti me coucher et comme toujours, sur Excel-downloads, la nuit me porte conseil.
Je vais tester vos 2 codes et surtout essayer de comprendre vos routines.

Merci Skoobi et Ninbinhan.:p
 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 713
Membres
102 637
dernier inscrit
TOTO33000