Message au passage sur une cellule
Bonjour,
J'ai un excel avec 2 onglets.
- Onglet 1:
- Colonne A : Liste de noms de projets (ex: A2 : ProjetX1, A3 : ProjetY2, etc.)
- Colonne B : Les points bloquants de chaque projet (ex: B2 : Pas de budget, B3 : Pas de points bloquants, etc.)
- Onglet 2 :
- Colonne A : on retrouve une liste de noms de projets
- Colonne B : juste "oui" ou "non" si pour le projet en colonne A, il y a un point bloquant ou non (j'ai utilisé une formule en référence à l'onglet 1)
Jusqu'ici pas de problème.
Maintenant j'aimerais que lorsque je passe la souris dans l'onglet 2 sur un "Oui" ou un "Non" de la colonne B, s'affiche en infobulle ou en commentaire ou autre, le points bloquant associé au projet (et qui se trouve en colonne B de l'onglet 1).
J'imagine qu'il faudrait avoir recours à la fonction xlookup.
Chose que je sais faire si je veux faire apparaitre l'info associée dans une autre cellule.
Mais là il faudrait que l'info associée apparaisse temporairement au survol des cellules de la colonne B (onglet 2) ; dans une fenêtre, un commentaire, quelque chose de flottant ou autre...
D'avance merci!
Bonsoir,
sans se lancer dans une programmation "usine à gaz" le commentaire est de loin le plus simple car les cellules n'ont pas par VBA de détection "survol".
A l'activation de l'onglet, un code VBA va chercher les données et les inscrit dans le commentaire de chaque cellule. Comme cela, au survol de la souris, le commentaire s'affiche avec les données.
Mon code en exemple, mais pas facile sorti du contexte :
Sub Init_Commentaires()
Application.ScreenUpdating = False
Worksheets("Accueil").Unprotect
Worksheets("Accueil").Range("A8:A" & [nb_personnels] + 7).ClearComments
Dim liste_opération As String, hauteur, texte As String
' scan de toutes les feuilles du personnel
début = [décalage] + 2
fin = [décalage] + [nb_opérations] + 1
' nombre de feuilles dans le classeur
nb_feuille = Worksheets.Count
' nombre de feuille autre que fiche de suivi personnel
nb_feuille_sys = [nb_feuilles_system]
' on boucle toutes les feuilles de suivi de personnel
For onglet = nb_feuille_sys + 1 To nb_feuille
liste_opération = ""
hauteur = 0.2
texte = ""
' on boucle sur chaque opération
For operation = début To fin
' si l'opération est suivi par ce personnel
If Worksheets(onglet).Cells(operation, 33).Value = True Then
' si l'opération est périmée
If Worksheets(onglet).Cells(operation, 36).Value = True Then
texte = " - dépassée depuis le " & Worksheets(onglet).Cells(operation, 13).Value
' si l'opération est limite
ElseIf Worksheets(onglet).Cells(operation, 35).Value = True Then
texte = " - limite de validitée le " & Worksheets(onglet).Cells(operation, 13).Value
' si l'opération n'est pas faite
ElseIf Worksheets(onglet).Cells(operation, 11).Value = "" Then
texte = " - Non effectuée"
Else
texte = ""
End If
' si il ya a un commentaire sur cette opération on agrandit la zone commentaire
If texte <> "" Then
liste_opération = liste_opération & texte & " - " & Worksheets(onglet).Cells(operation, 9).Value & Chr(10)
hauteur = hauteur + 0.2
End If
End If
Next operation
' on boucle sur la liste des personnel pour trouver "le bon"
For i = 1 To [nb_personnels]
' quand on le trouve et s'il y a un commentaire à afficher
If Worksheets("Accueil").Cells(7 + i, 1).Value = Worksheets(onglet).Name And liste_opération <> "" Then
' ajout du commentaire et mise en forme
Worksheets("Accueil").Cells(7 + i, 1).AddComment
Worksheets("Accueil").Cells(7 + i, 1).Comment.Visible = True
Worksheets("Accueil").Cells(7 + i, 1).Comment.Text Text:=liste_opération
Worksheets("Accueil").Cells(7 + i, 1).Comment.Visible = False
Worksheets("Accueil").Cells(7 + i, 1).Comment.Shape.ScaleWidth 8#, msoFalse, msoScaleFromTopLeft
Worksheets("Accueil").Cells(7 + i, 1).Comment.Shape.ScaleHeight hauteur, msoFalse, msoScaleFromTopLeft
End If
Next i
Next onglet
Worksheets("Accueil").Protect
Application.ScreenUpdating = True
End SubEn vous le postant je me rend compte d'incohérence dans le code mais mis à part ça, il fonctionne, il ajoute un commentaire avec une ligne pour chaque opération périmée ou en limite etc... Evidemment pour vous ce seront d'autre données !
@ bientôt
LouReeD