Faire suivre le commentaire d'une cellule
Bonsoir à tous.
Merci d'avance pour vos réponses positives et négatives cela me permettra de m'améliorer !
J'aimerais savoir si il est possible de faire suivre le commentaire d'une cellule dans une autre.
Je m'explique, dans ma première feuille, j'ai "une base de donnée" avec des commentaires contenant des images (comme ça j'ai un aperçu de l'objet en passant la souris dessus),
et dans ma seconde feuille, j'ai une formule qui me permet par le biais de menus déroulants de m'afficher certains objets. Hors le commentaire ne suit pas, donc je n'ai pas l'aperçus des objets.
Y a t'il une possibilité d'affiché les commentaires d'une quelconque façon dans les cases ? Et que ceux ci changent en fonction du contenu de la cellule ?
Bonjour et bienvenu sur le forum,
Merci de lire la charte
Cdt
Bonjour fronck, merci pour l'accueil.
Ne vous en faite pas la charte a bien été lu avant de poster ! J'espère ne pas avoir mis de bêtises dans le topic.
Bonn journée!
Bonjour Ideos,
J'ai cherché sur le net:
https://www.google.com/search?client=firefox-b-d&q=execution+macro+survol+cellule
Il faut une macro pour changer le commentaire sur la liste déroulante. Et en enregistrement macro tu obtiens çà:
Sub Macro4()
'ajout commentaire
Range("E4").AddComment
Range("E4").Comment.Visible = False
Range("E4").Comment.Text Text:="ton commentaire"
Range("E4").Select
'suppression commentaire
Selection.ClearComments
End SubMais il manque la procédure pour le mouseMove sur une cellule (ici image).
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End SubCdt
Bonsoir fronck,
Merci pour ta réponse !
Effectivement je n'aurais pas pensé à effectuer ce type de recherche, j'ai plutôt cherché en mot clé commentaire / duplication
Je vais regarder comment tout cela fonctionne, je n'ai jamais utiliser ou fait de macro je suis sur les cours VBA depuis le début d'aprem ! c'est très bien fait ahah
Je reviens vers toi après avoir tester tout ça
Merci encore !
Rebonsoir,
Je vais très certainement passer pour un idiot mais bon
Merci d'avance et bonne soirée !
Bonsoir Ideos, Fronck,
Je te propose une solution différente. En ajoutant dans ta première feuille portant les commentaires (notes) une colonne avec le chemin des images.
Dans la deuxième feuille créer une liste déroulante basée sur la colonne B de la première feuille (voir Menu Donnée, Liste de validation) et insérée sur toutes les lignes de la colonne C de cette 2ième feuille. Plus ajouter dans chacune de ces lignes une note (ton commentaire image) vide.
Ensuite copier dans le code de la 2ième feuille (ALT+F11) pour ouvrir l'éditeur VBA et faire clic droit sur le nom de cette 2ièeme feuille. Adapter le code aux bonnes colonnes et lignes.
Private Sub Worksheet_Change(ByVal Target As Range)
'Feuille active(la 2ième) ayant les listes déroulantes
On Error GoTo ErrCom
'Colonne et ligne des listes déroulantes en C2:C10. A adapter selon nombre de ligne
If Not Intersect(Target, Range("C2:C10")) Is Nothing Then
'Feuille Base portant la base de données et le chemin complet des images par ligne
'Récupération de la ligne ayant le nom de la photo ciblée. A adapter selon le nbre de lignes.
Lig = Sheets("Base").Range("B$1:B$30").Find(Target).Row
Application.EnableEvents = False
'Reprise du chemin complet dans la colonne/ligne en la feuille Base de la photo ciblée. Ici en colonne M
Cible = Sheets("Base").Range("M" & Lig)
'Application sur le commentaire de la liste déroulante cliquée.
Target.Comment.Shape.Fill.UserPicture (Cible)
End If
ErrCom:
Application.EnableEvents = True
End SubEn cliquant sur la flèche de la liste déroulante tu choisis un item de la liste basée sur la 1ière feuille. En passant par une liste de validation, cela évite des fautes de frappe.
Bonjour X Cellus,
Je te remercie énormément pour ta proposition, et le temps que tu as consacré à mon "problème".
Néanmoins, je ne crois pas que cela réponde à mes besoins.
La deuxième feuille ( screen 2 ) sert de "recherche" pour trier en fonction des besoins , si j'ai besoin d'un casque en armure lourde, ca me mettra en fonction de ces critères les casques lourds. Du coup mettre un menu déroulant les noms dans chaque cellule ne répondrait pas à ma problématique.
Peu être n'ai-je pas compris l'utilisation de la macro. Je vais quand même l'essayer !
J'ai réfléchis à une autre solution pour mon soucis.
Est-il possible, d'assigner un commentaire à un texte précis ?
Par exemple si dans une cellule le texte est "Banane" le commentaire associer soit une image de banane ; et que peu importe où si le texte "Banane" est affiché il y est le commentaire associé.
Et si ce texte est remplacé par un autre par exemple "Pomme" le commentaire change, et m'affiche un commentaire en image de pomme
Et ceci avec tout les objets / images associés
Je vous remercie pour le temps que vous me consacrez. Bonne journée à tous !
Bonsoir Ideos,
Si ton deuxième tableau sert uniquement à trier des données qui sont correctement orthographiées pour ressortir selon les critères souhaités.
Alors, pas de souci. Cela demande juste une légère adaptation du principe, qui est de trouver justement le produit qui matche.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Sur la 2ième feuille
On Error GoTo ErrCom
'Colonne et ligne en C2:C20. A adapter
If Not Intersect(Target, Range("C$2:C$20")) Is Nothing Then
'Feuille Base portant la base de données et le chemin complet des images par ligne
'Récupération de la ligne avec le nom de la photo cible (exemple: Aril Hamnlet...)
Lig = Sheets("Base").Range("C$2:C$30").Find(Target).Row ' Le Range est à adapter
'Reprise du chemin complet (ici en colonne K) dans la colonne/ligne en la feuille Base de la photo ciblée
Cible = Sheets("Base").Range("K" & Lig)
Application.EnableEvents = False
'Ajoute une note commentée puis la réduit. S'il y a déjà une note va en ErrCom pour affichage
'ou non selon que la variable Cible dispose du chemin ou est vide
Target.AddComment
Target.Comment.Visible = False
End If
ErrCom:
'Reprise du chemin complet dans la colonne/ligne en la feuille Base de la photo ciblée
'Puis application sur le commentaire de la cellule cliquée. Au survol la photo apparaît.
If Cible > "" Then
Target.Comment.Shape.Fill.UserPicture (Cible)
Target.Comment.Visible = False
End If
Application.EnableEvents = True
End SubVoilà, j'ai testé et cela répond correctement. A toi de bien recopier et a adapter à tes feuilles (noms) et disposition (lignes/colonnes)
Bonsoir…
Et avec de Faux Commentaires et du VBA* (ancien fichier joint) ? Le déplacement dans un contrôle ActiveX TextBox permet d’afficher l’image correspondante (attention aux noms des cellules et images associées).
*clic bouton droit sur le nom de la feuille puis sélectionner Visualiser le code :
Dim n As Byte
Private Sub C_1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Vu "I_1" ‘ déplacement sur la case en fin de cellule avec appel de la macro commune Vu
End Sub
Private Sub C_2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Vu "I_2"
End Sub
Private Sub C_3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Vu "I_3"
End Sub
Sub Vu(Nom As String) 'sous routine pour les 3 cas (ici)
For n = 1 To 3: Me.Shapes("I_" & n).Visible = 0: Next
Shapes(Nom).Visible = 1
Shapes(Nom).Top = Cells(Right(Nom, 1) + 5, 1).Top
Shapes(Nom).Left = Cells(Right(Nom, 1) + 5, 2).Left
End Sub
‘Procédure évènementielle pour cacher les Images
Private Sub Worksheet_SelectionChange(ByVal R As Range)
For n = 1 To 3: Me.Shapes("I_" & n).Visible = 0: Next
End Sub
Bonsoir, merci Ordonc, Merci X Cellus pour votre temps.
Je vais essayer tout ça je reviens vite auprès de vous pour les résultats, merci encore
@X Cellus lorsque tu écris, "Feuille Base portant la base de données et le chemin complet des images par ligne" qu'est ce que tu entends par 'chemin complet des images' ? Merci d'avance
Bonne soirée !
A nouveau,
La feuille Base, c'est ta 1ière feuille. Celle de la 1ière photo de ton post ou l'on voit l'image dans la note-commentaire.
Par exemple, pour cette image qui apparaît en colonne B (là ou est le commentaire). Je ne sais pas comment cette feuille est nommée. Moi elle se nomme Base.
Et sur la même ligne de cette Base en case B3 il y a une donnée. Mais en colonne K (pour mon exemple) donc en case K3. J'ai inscrit ce chemin là:
C:\Users\X Cellus\Pictures\Photo03. Soit le Disque C, suivi du Dossier Users puis du dossier nom de l'utilisateur (X Cellus), et le répertoire Images (Pictures) suivi du nom de l'image (Photo03). Mais ce sera différent chez toi. Et l'image peut aussi porter le nom du produit (casque en armure lourde ou Aril Hamlet)..
@X Cellus, merci encore pour ton temps. J'ai essayé ce que tu m'as dis. Je n'arrive pas du tout à faire fonctionner la macro, je me sens vraiment ridicule de gaspiller ton temps. Je te partage l'excel qui m'a servie de test.
Bonne soirée/Nuit
Bonjour Ideos,
Je n'arrive pas du tout à faire fonctionner la macro
Lorsque tu indiques un nom d'image. Il faut aussi renseigné son extension (c'est à dire son type d'image). Soit jpg, jpeg, etc...
Donc j'ai modifié cela dans la base en ajoutant en fin de ton chemin, soit .jpg
Vérifie que c'est bien l'extension de tes images, sinon corrige le.
Pour le reste, au vu de tes nombreuses formules dans les tableaux des deux feuilles dans les cellules j'ai changé de macro.
J'ai effacé toutes ces formules qui alourdissent le fichier. Ainsi que certaines noms dans le gestionnaire de noms dont ils manquaient des références.
En adaptant un code succinct de Jacques BOISGONTIER qui permet une filtrage efficace.
Ainsi le programme peut être plus réduit. Les En-têtes de tableaux doivent rester identiques. Afin que le report soit possible.
Correction Fichier, sur la formule afin de de couvrir un forfait de 5000 lignes sur la base.
Bonjour, merci pour ce que tu fais,
j'ai testé un peu et j'arrive sur des erreurs, j'ai bien changé le format ( en png pour moi ) et j'ai une erreur lors de la mise en route de la macro je crois ; "Erreur d'exécution '7' : Mémoire insuffisante
et le débogage me met une ligne en surbrillance ; la ligne est la suivante " Range("C" & Lig).Comment.Shape.Fill.UserPicture (Range("N" & Lig)) "
Merci pour ton aide
Bonne soirée
EDIT: J'ai recopier tout le chemin d'accès des images et cela semble fonctionner comme il faut ; y a t'il un moyen d'ajuster la taille du commentaire ou je devrai le faire manuellement ? Quelles sont les modifications à apporter si je souhaites augmenter le nombre de colonne ? Merci pour ton aide
Je test avec des lignes en plus, c'est vraiment parfait ce que tu as fais merci encore
A nouveau,
"Erreur d'exécution '7' : Mémoire insuffisante
Cette erreur arrive dans le programme, si tu n'as pas le bon chemin pour tes images. Donc sur (Range("N" & Lig))
Il est bien sur possible d'adapter la taille des notes-commentées. Mais je ne sais pas comment tu opères pour la première feuille (Base).
Est ce que tu augmente ou réduit l'image sur la note-commentée selon la taille réelle de l'image ou selon ta propre préférence ?
Pour cette dernière façon il serait alors gardé la taille occupée par l'image dans la première feuille. Tu n'aurais pas de différence dans les deux feuilles.
Quelles sont les modifications à apporter si je souhaites augmenter le nombre de colonne ?Il faudra que les deux feuilles aient le même nombre de colonnes et leurs en-têtes identiques. De plus il faudra changer dans la macro de la feuille Recherche la plage de cellules inscrite. Au lieu de
With Sheets("Base de données")
.Range("A1:M5000").AdEcrire une plage plus importante comme "A1:R5000" si tu agrandis de 5 colonnes, par exemple.
A +
Merci beaucoup pour ta réponse X Cellus , tout est parfait à présent. Je clos donc le sujet !
Merci aussi à Ordonc et fronck pour leurs propositions
Milles merci
Bonne soirée/Nuit
Suite,
N'hésites pas si besoin. Il y aura toujours un contributeur pour t'apporter une réponse.
Merci de ton parfait suivi.