Après multiples essais, je m'incline à vous demander de l'aide.
J'aimerai dans mon classeur renseigner des commentaires en cellule H8 et L8 de la feuil "Avarie" venant des liste correspondante de la feuile "Base".
J'ai bien trouver un code (en essai dans feuil "Base") mais je n'arrive pas à l'adapter à ma demande.
Est-ce possible ?
Merci à vous.
J'ai ajouté un code dans This Workbook, ce qui va ajouter les commentaires s'ils n'existent pas à l'ouverture du classeur. Je n'ai pas trouvé le façon de faire pour ajouter une liste.
Je me suis permis d'ajouter un formatage à la fenêtre du message, si vous n'aimez pas juste supprimer tous ce qui se trouve entre With et End With inclus ces deux lignes.
Bonne Soirée
Noel
Ajout après c'est affichage: J'ai apporté une correction pour la justification.
Je te propose un module qui devrait faire l'affaire, Il suffit que tu glisses ce module dans ton programme.
avec tu peux récupérer le texte d'une cellule et le placé sur une autre cellule idem si c'est une formule.
pour ma part ton programme ne fonctionne pas chez moi trop ancien.
Pourtant ce sont des instructions de bases, ça devrait fonctionner.
Les commentaires sont aux cellules H5 et L5 non pas comme mentionné H8 et L8 car les flèches pointaient vraiment H5 et L5.
J'ai modifié le premier envoie pour corriger la justification.
En voici une autre copie.
Bonne journée
Noël
Extraordinaire ton module, c'est bien pensé. je vais m'en servir avec grand plaisir.
Noel, Oui excuse pour la nomination des cellules, en effet c'est bien H5 et L5 et ta proposition est forte interressante également.
Merci à vous
Cordialement
pompaero
Le plus simple est d'insérer dans le commentaire l'image de la plage :
Code:
Private Sub Worksheet_Activate()
With Sheets("Base")
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
InsereImage .Range(.[E1], .[E65536].End(xlUp)), [H5]
InsereImage .Range(.[H1], .[H65536].End(xlUp)), [L5]
End With
End Sub
Sub InsereImage(plage As Range, cel As Range)
plage.CopyPicture
With plage.Parent.ChartObjects.Add(0, 0, plage.Width, plage.Height).Chart
.Paste
.Export ThisWorkbook.Path & "\MonImage.gif", "GIF"
.Parent.Delete 'supprime le graphique temporaire
End With
cel.ClearComments
With cel.AddComment("").Shape
.Width = plage.Width
.Height = plage.Height
.Fill.UserPicture ThisWorkbook.Path & "\MonImage.gif"
End With
Kill ThisWorkbook.Path & "\MonImage.gif" 'supprime le fichier gif
End Sub
S'agissant de tableaux Excel il faut compléter le code pour les "défiltrer" :
Code:
Private Sub Worksheet_Activate()
With Sheets("Base")
If .ListObjects.Count Then .ListObjects(1).Range.AutoFilter: .ListObjects(1).Range.AutoFilter
If .ListObjects.Count > 1 Then .ListObjects(2).Range.AutoFilter: .ListObjects(2).Range.AutoFilter
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
InsereImage .Range(.[E1], .[E65536].End(xlUp)), [H5]
InsereImage .Range(.[H1], .[H65536].End(xlUp)), [L5]
End With
End Sub
Oui effectivement ça fonctionne très bien votre code job75,
Probablement que Pompaero a nommée sa page autrement que Base ou comme vous dites des cellules vide.
Allons, vous avez forcément testé un fichier où les colonnes E et H de la feuille "Base" sont vides.
Ceux que j'ai déposés fonctionnent très bien : ils ont reçu 3 "J'aime"...
Si en feuille "Base"les tableaux sont toujours des tableaux Excel utiliser bien sûr :
Code:
Private Sub Worksheet_Activate()
With Sheets("Base")
.ListObjects(1).Range.AutoFilter: .ListObjects(1).Range.AutoFilter
.ListObjects(2).Range.AutoFilter: .ListObjects(2).Range.AutoFilter
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
InsereImage .ListObjects(1).Range, [H5]
InsereImage .ListObjects(2).Range, [L5]
End With
End Sub
Fichier (3).
Edit : vous êtes un rapide Noël, j'ai à peine eu le temps de refaire mon post en ajoutant la macro !
Allons, vous avez forcément testé un fichier où les colonnes E et H de la feuille "Base" sont vides.
Ceux que j'ai déposés fonctionnent très bien : ils ont reçu 3 "J'aime"...
Si en feuille "Base"les tableaux sont toujours des tableaux Excel utiliser bien sûr :
Code:
Private Sub Worksheet_Activate()
With Sheets("Base")
.ListObjects(1).Range.AutoFilter: .ListObjects(1).Range.AutoFilter
.ListObjects(2).Range.AutoFilter: .ListObjects(2).Range.AutoFilter
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
InsereImage .ListObjects(1).Range, [H5]
InsereImage .ListObjects(2).Range, [L5]
End With
End Sub
Fichier (3).
Edit : vous êtes un rapide Noël, j'ai à peine eu le temps de refaire mon post en ajoutant la macro !
Je vous rassure, j'ai bien des tableaux excel en colonne E et H de la feuille "Base" mais le commentaire est vide, je ne comprends pas et ne doute absolument pas de vos compétences, bien au contraire.
C'est juste que je ne comprends pas pourquoi cela ne fonctionne pas.