VBA : passer la souris sur une cellule et avoir des infos qui s'affichent
Bonjour à tous
En ce week end chaud, je m'exerce un peu sur Excel. Mais je ne connais strictement rien à VBA
J'ai vu faire quelque chose un jour par un collègue
que j'adorerais reproduire pour mon travail :
Il s'agit d'un tableau présentant des données de gestion agrégées (CA, volume, prix de vente)
J'aimerais qu'en passant la souris sur les écarts sur prix de vente, je puisse voir s'afficher le détail des écarts. Ce détail est présent sur un autre onglet
SI vous aviez un peu de temps pour résoudre ce problème, ce serait génial. J'espère que mon fichier-exemple est assez clair
Merci d'avance et bon week end
Nathalie
Salut Nathalie,
un moyen simple : créer un commentaire à la cellule-cible.
Comment ? En interceptant les changements de valeurs dans les deux cellules supérieures "Prix moyen vente".
Comme je me doute que le fichier présenté n'est guère conforme à la réalité, dans le fichier joint, je ne me soucie pas de calculer la recherche : je me contente de fabriquer les commentaires en piochant directement les infos.
Quand tu auras complété les données manquantes de la colonne 'RECAP' [C:C], tu auras une idée du résultat.
If Not Intersect(Target, Range("C19:C20")) Is Nothing Then
If WorksheetFunction.CountA(Range("C19:C20")) = 2 Then
If [C21].Comment Is Nothing Then [C21].AddComment
sMsg = "Impact avoirs : -0,5" & Chr(10) & "Impact Négo : -0,7" & Chr(10) & _
"Impact remise : -0,1" & Chr(10) & "Total écart PMV : " & [C21]
[C21].Comment.Text sMsg
Else
If Not [C21].Comment Is Nothing Then [C21].Comment.Delete
End If
End If
A+
Bonjour
Un grand merci pour votre réponse
J'ai néanmoins un problème : j'ai très très mal formulé ma demande. D'ailleurs je vais joindre un fichier un peu plus complet
Dans mon onglet récap, tout me vient des tables importées chaque mois, et de formules qui vont me chercher mes données (merci le forum, c'est ici qu'on m'a appris "sommeprod" qui a tout résolu!!!)
Une des tables me détaille les données concernant mon prix de vente. C'est celle qu'on trouve dans mon fichier. Je n'ai mis que 2 "groupes", mais en réalité il y en a plein d'autres
Ma galère est que c'est assez pénible d'aller chercher les explications sur mes prix de vente pour chaque groupe, dans mon onglet "détail prix de vente"
Mon souhait (rêve^^) serait que pour un mois donné et pour un groupe donné, les infos de mon onglet "détail" s'affichent quand je passe ma souris sur mon écart prix de vente
Cela est-il faisable? Ca me semble bien galère
PS : j'avais également besoin de la solution que vous m'avez proposée dans un tout autre contexte non dynamique. Merci beaucoup, c'est génial!!
Bonjour à tous,
Basé sur le code de curulis57 ...
Sur la feuille "Détail prix vente" > en colonne A > les noms sont des champs nommés ...
En retournant sur la feuille "Récap" > les macros s'activent afin de mettre à jour les commentaires > Private Sub Worksheet_Activate()
Il y a sûrement possibilité de faire mieux ... en attendant ...
Un essai ...
ric
Bonjour Nathalie,
rien de bien compliqué mais, avant de commencer, j'aimerais être à peu près certain que la disposition de tes tableaux est conforme à la réalité.
Y a-t-il d'autres infos (titres, sous-titres, dates...) permanents et récurrents sur tes feuilles qui pourraient aider à leur compréhension ?
Par exemple, je ne vois aucune mention d'année sur tes feuilles, les lignes vides (mauvaise idée !) entre tes tableaux sont-elles là pour l'exemple ou est-ce ainsi dans la réalité ?
Bref, pour ne pas recommencer dix fois, un fichier réel et complet, stp !
A+
Bonjour NathalieR, Curulis57, Ric,
Un essai que j'avais toujours envie de réaliser et grâce au fichier posté et vacances en cours; je me suis lancé.
A compléter en se basant sur le principe du code en feuille Récap. Un petit entrainement à VBA...
Si besoin reviens sur le sujet.
Bons tests, bonne continuation.
Bonjour à tous
Je vous remercie tous infiniment pour ces propositions
J'ai commencé sur un client, et ça semble fonctionner
Je vais donc continuer
très bonne journée
Nathalie
Salut Nathalie,
Salut l'équipe,
après avoir attendu une réponse, voici quand même une proposition montrant l'intégration possible, bien qu'hâtive, des données sur plusieurs années.
! Attention, dans le fichier exemple fourni précédemment, les écarts entre tableaux n'étaient pas réguliers !
Pour être exploitables aisément, les divers tableaux doivent être parfaitement identiques, placés de manière strictement régulière et présenter des données communes rigoureusement semblables.
Dans ce fichier, j'ai empilé les années (même données puisque simplement copiées) pour démontrer (sans couacs, j'espère) la chose.
Dans 'RECAP', colonne [A:A]
_ la cellule orange abrite une liste de validation contenant les divers groupes existants de l'année concernée afin de faciliter la navigation sur la ligne ;
- un clic sur l'année ramène l'affichage à gauche.
Sinon, même principe en 'Détail prix vente' : un commentaire o ucréé ou supprimé selon que les deux cellules "Prix moyen" sont remplies ou vides.
If (iRMod12 = 1 Or iRMod12 = 2) And (iCMod14 = 0 Or iCMod14 > 2) Then
sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
iRowT = iRow + IIf(iRMod12 = 1, 2, 1)
If WorksheetFunction.CountA(Range(sCol & iRow - IIf(iRMod12 = 1, 0, 1) & ":" & sCol & iRow + IIf(iRMod12 = 1, 1, 0))) = 2 Then
iMois = tMois(iCMod14)
sGr = Cells(iRow - IIf(iRMod12 = 1, 8, 9), iCol - iMois).Value
iYear = CInt(Range("A" & iRow - IIf(iRMod12 = 1, 8, 9)).Value)
If Range(sCol & iRowT).Comment Is Nothing Then Range(sCol & iRowT).AddComment
With Worksheets("Détail prix vente")
iRow = .Columns(1).Find(what:=iYear, lookat:=xlWhole, LookIn:=xlValues).Row
iRow = .Range("A" & iRow & ":A" & Rows.Count).Find(what:=sGr, lookat:=xlWhole, LookIn:=xlValues).Row
sMsg = "Impact avoirs : " & .Cells(iRow, -2 + (iMois * 4)) & Chr(10) & "Impact Négo : " & .Cells(iRow, -1 + (iMois * 4)) & Chr(10) & _
"Impact remise : " & .Cells(iRow, iMois * 4) & Chr(10) & "Total écart PMV : " & .Cells(iRow, 1 + (iMois * 4))
End With
Range(sCol & iRowT).Comment.Text sMsg
Else
If Not Range(sCol & iRowT).Comment Is Nothing Then Range(sCol & iRowT).Comment.Delete
End If
End If
A+