extraction d'un commentaire

nadem0068

XLDnaute Junior
Bonjour,

je viens vers vous afin de savoir s'il est possible d'extraire un commentaire d'une cellule sans ouvrir le classeur source.

ci-joint un dossier qui contient 2 classeur (classeur 1 et classeur 2)
le classeur 2 est copier sur le classeur 1 mais les commentaires lié aux cellules ne sont pas copier.

d’avance merci à tous ceux qui prendront le temps de ce pencher sur mon problème :)
 

Pièces jointes

  • extraction.zip
    23 KB · Affichages: 32
  • extraction.zip
    23 KB · Affichages: 25
  • extraction.zip
    23 KB · Affichages: 33

PMO2

XLDnaute Accro
Re : extraction d'un commentaire

je viens vers vous afin de savoir s'il est possible d'extraire un commentaire d'une cellule sans ouvrir le classeur source.

Bonjour,

Je ne sais pas si cela est possible sans l'ouvrir, peut être avec ADO.
Mais on peut le faire en ouvrant le classeur source par Automation (GetObject ou CreateObject) sans que cela ne soit trop perceptible par l'utilisateur.
 

PMO2

XLDnaute Accro
Re : extraction d'un commentaire

Bonjour,

Voici un exemple d'automation avec GetObject.
Les 2 classeurs doivent être dans le même dossier OU ALORS il faut adapter le Path.
Code:
Sub extraction()
Dim WB1 As Workbook
Dim WB2 As Workbook
'--- Le classeur récepteur ---
Set WB1 = ThisWorkbook
'--- Ouvre le classeur source ---
On Error Resume Next
Set WB2 = GetObject(WB1.Path & "\Classeur2.xlsm") 'le path et nom du classeur sont à adapter
If Err <> 0 Then
  MsgBox Err.Number & vbCrLf & Err.Description
  Exit Sub
End If
'--- Copie et colle ---
WB2.Sheets("Feuil1").UsedRange.Copy
With WB1.ActiveSheet
  .[a1].Select
  .Paste
End With
'--- Fermeture et nettoyage de la mémoire ---
WB2.Close False
Set WB2 = Nothing
Application.CutCopyMode = False
End Sub
 

Pièces jointes

  • extraction_GetObject.zip
    23 KB · Affichages: 11

nadem0068

XLDnaute Junior
Re : extraction d'un commentaire

Bonjour,

merci pour ton aide PMO2, je vais adapter cette méthode à mon fichier qui récupère les donnée de 17 fichiers et je verrais ce que cela donne je continue de chercher encore un peut si je trouve une technique je la ferais partager bien sûr.

:D
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : extraction d'un commentaire

Windows(fichier).Visible = False

Code:
Sub TriBaseOPen()
 répertoire = ThisWorkbook.Path
 fichier = "bd.xls"
 Application.ScreenUpdating = False
 Workbooks.Open (répertoire & "\" & fichier)
 Windows(fichier).Visible = False
 Workbooks(fichier).Sheets(1).[A1].CurrentRegion.Sort _
   Key1:=Workbooks(fichier).Sheets(1).[A1], Order1:=xlAscending, Header:=xlGuess
 Windows(fichier).Visible = True
 Workbooks(fichier).Save
 Workbooks(fichier).Close
End Sub

JB
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : extraction d'un commentaire

Bonjour nadem0068, Patrick, Jacques,

Pour le fun, si l'on ne veut vraiment pas ouvrir le fichier source.

1) Ouvrir le fichier source Classeur2.xlsm et coller dans ThisWorkbook :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim c As Comment
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Workbooks("Commentaires").Close False 'si le fichier est ouvert il est fermé
Workbooks.Add 'nouveau document
For Each c In Feuil1.Comments 'CodeName de la feuille source
   Range(c.Parent.Address) = c.Text
Next
ActiveWorkbook.SaveAs Me.Path & "\Commentaires"
ActiveWorkbook.Close
End Sub
Le fichier Commentaires.xlsx est créé ou mis à jour à la fermeture.

2) Dans le fichier Classeur1.xlsm le code du bouton :

Code:
Sub extraction()
Dim r As Range, t As Variant
Set r = [A1:O15] 'plage 15 x 15 à adapter
Application.ScreenUpdating = False
r.ClearComments 'RAZ
For Each r In r
  r.Formula = "='" & ThisWorkbook.Path & "\[Commentaires.xlsx]Feuil1'!" & r.Address
  t = r
  r.Formula = "='" & ThisWorkbook.Path & "\[Classeur2.xlsm]Feuil1'!" & r.Address
  r = IIf(r = 0, "", r)
  If t <> 0 Then r.AddComment t
Next
End Sub
Fichiers joints.

A+
 

Pièces jointes

  • Classeur2.xlsm
    15.6 KB · Affichages: 37
  • Classeur1.xlsm
    15 KB · Affichages: 40
  • Classeur2.xlsm
    15.6 KB · Affichages: 35
  • Classeur1.xlsm
    15 KB · Affichages: 41
  • Classeur2.xlsm
    15.6 KB · Affichages: 29
  • Classeur1.xlsm
    15 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re : extraction d'un commentaire

Re,

Il est bien plus simple de stocker les textes des commentaires dans une 2ème feuille du fichier source :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim s As Boolean, c As Comment
Application.ScreenUpdating = False
s = Me.Saved
Feuil2.Cells.Clear 'RAZ
For Each c In Feuil1.Comments
  Feuil2.Range(c.Parent.Address) = c.Text
Next
'Feuil2.Visible = False 'facultatif
If s Then Me.Save
End Sub
Code:
Sub extraction()
'Feuil1 et Feuil2 sont les noms des onglets
Dim r As Range, t As Variant
Set r = [A1:O15] 'plage 15 x 15 à adapter
Application.ScreenUpdating = False
r.ClearComments 'RAZ
For Each r In r
  r.Formula = "='" & ThisWorkbook.Path & "\[Source.xlsm]Feuil2'!" & r.Address
  t = r
  r.Formula = "='" & ThisWorkbook.Path & "\[Source.xlsm]Feuil1'!" & r.Address
  r = IIf(r = 0, "", r)
  If t <> 0 Then r.AddComment t
Next
End Sub
Nouveaux fichiers joints.

A+
 

Pièces jointes

  • Extraction(1).xlsm
    14.8 KB · Affichages: 29
  • Source.xlsm
    16.7 KB · Affichages: 31
  • Source.xlsm
    16.7 KB · Affichages: 42
  • Extraction(1).xlsm
    14.8 KB · Affichages: 34
  • Source.xlsm
    16.7 KB · Affichages: 32

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 947
Membres
103 404
dernier inscrit
sultan87