Problème macro d'insertion de commentaire
Bonjour à tous,
J'ai configuré une macro qui permet de prendre des valeurs d'un fichier (fichier source) pour les copier sous forme de commentaire dans un fichier (fichier destination).
J'arrive à copier des valeurs mais j'ai un blocage car quand j'utilise ma macro, un commentaire vient s'ajouter sur la bonne cellule mais le commentaire est vide...
Je ne comprends pas d'ou peut venir le problème...
Je vous transmet mon code VBA que vous pouvez trouver en bas, j'ai essayé de le commenter le plus possible afin de faciliter la compréhension du code.
Sub exportversFichierDestinationAudi()
Dim ListeOPEngagement As String
Application.ScreenUpdating = False
nom_fichier_source = ActiveWorkbook.Name ' Nom fichier source
CheminFichierDestination = "\" ' chemin fichier destination
nomFichierDestination = "Fichier destination.xlsm" ' nom fichier destination
Set ash = ActiveSheet
Set FichierSource = ActiveWorkbook ' Fichier source fenetre active
num_ligne_metier = 2 ' audi est ligne 2 sur fichier destination
ListeOPEngagement = "" ' contenu du commentaire
On Error Resume Next
Windows(nomFichierDestination).Activate ' fichier destination actif
If Err <> 0 Then
Set FichierDestination = Workbooks.Open(CheminFichierDestination & nomFichierDestination) ' ouvrir le fichier de destination via le chemin et le nom
Else
Set FichierDestination = ActiveWorkbook ' fichier destination fenetre active
End If
On Error GoTo 0
ladate = FichierSource.Sheets(1).Cells(2, 10).Value ' la date fichier source
onglet = "s" & DatePart("ww", ladate, 2, 2) ' le nom de l'onglet fichier destination
If Len(onglet) = 2 Then onglet = "s0" & DatePart("ww", ladate, 2, 2) ' fichier destination onglet
hr = FichierSource.Sheets(1).Cells(3, 14).Value ' Hr fichier source
On Error GoTo PbOnglet
FichierDestination.Sheets(onglet).Cells(num_ligne_metier, 2).Value = hr ' les HR réalisés viennent se placer en colonne B du fichier destination
On Error GoTo 0
For J = 1 To nbonglet
Set ash = FichierSource.Sheets(J)
nbligne = ash.Range("A" & Rows.Count).End(xlUp).Row
For I = 1 To nbligne - 7
ListeOPEngagement = ash.Cells(7 + I, 1) & " , OP " & ash.Cells(7 + I, 2) & " , descrip= " & ash.Cells(7 + I, 3) & " ,Hr= " & ash.Cells(7 + I, 5) ' vient prendre dans le commentaire les valeurs colonne A, B, C et E dans le fichier source
Next
Next
FichierDestination.Sheets(onglet).Cells(num_ligne_metier, 2).ClearComments ' effacer commentaire fichier destination
FichierDestination.Sheets(onglet).Cells(num_ligne_metier, 2).AddComment ' ajouter commentaire fichier destination
FichierDestination.Sheets(onglet).Cells(num_ligne_metier, 2).Comment.Text Text:=ListeOPEngagement ' Commenter la listeOPEngagement dans le commentaire fichier destination
With FichierDestination.Sheets(onglet).Cells(num_ligne_metier, 2).Comment.Shape ' commenter fichier destination
.OLEFormat.Object.Font.Size = 9 'Taille du texte
.TextFrame.AutoSize = True
End With
Windows(nom_fichier_source).Activate
Application.ScreenUpdating = True
On Error GoTo 0
Exit Sub
PbOnglet:
MsgBox "L'onglet " & onglet & " n'existe pas dans le fichier 'fichier destination.xlsm'"
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
End SubJe vous transmet également mes 2 fichiers : - fichier source ou on retrouve la macro,
- fichier destination ou est censé se mettre le commentaire.
Si vous avez des questions n'hésitez surtout pas.
Merci d'avance pour votre aide.
Bonjour
Une proposition avec le code assez profondément modifié
Bonjour
C'est normal que ça plante. Sheets("Audi") n'existe pas dans le classeur destination qui est activé à ce moment là.
Remplace : Set shSource = Sheets("Audi") par : Set shSource = wbSource.Sheets("Audi") et ça marchera puisque là on lui indique le bon classeur.

