Microsoft 365 Cellules comportant un commentaire

Willmaz

XLDnaute Nouveau
Bonjour,

J'espère que vous ne souffrez pas trop des fortes chaleurs!
Toujours aussi médiocre en programmation VBA, (j'ai progressé en Excel basique grace à vous tous!) je souhaite réaliser un petit programme qui me parait tout simple, mais à mon niveau déjà compliqué!
Je souhaite faire en sorte que ce programme teste s'il y a un X dans ma colonne F et si c'est le cas, vérifier que dans la cellule qui comporte ce "X" il y ait bien un commentaire. S'il y en a pas, afficher en face dans la colonne G un message et mettre une MFC sur la cellule concernée. En revanche, dès que le commentaire est renseigné, le message et la MFC doivent disparaitre.
Je joins un petit exemple pour que mes explications soient plus claires.

Cordialement,
 

Pièces jointes

  • Equipe de france.xlsx
    18.3 KB · Affichages: 5
Solution
Bonjour Willmaz, sylvanu,
on ne peut pas détecter en VBA la suppression d'un commentaire.
Bien sûr que si, il suffit de faire tourner une macro en arrière-plan :
VB:
Sub ArrierePlan()
'menu Exécution => Réinitialiser pour arrêter la macro
Dim t#, tablo, resu(), i&
ThisWorkbook.Saved = False
Do
    t = Timer + 0.5
    While Timer < t And t < 86400: DoEvents: Wend 'attente de 0,5 seconde
    If Not ThisWorkbook.Saved Then
        With Feuil1.[A1].CurrentRegion.Columns(6) 'CodeName de la feuille à adapter
            tablo = .Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
            ReDim resu(1 To UBound(tablo), 1 To 1)
            For i = 2 To UBound(tablo)
                If tablo(i, 1) <> "" And .Cells(i).Comment...

Willmaz

XLDnaute Nouveau
Sur le classeur exemple que j'ai fourni ce n'était pas le cas et c'est pour celui la que je souhaitais un code. Donc les codes fournis étaient nickels. Mes bugs je le répète venaient du fait que j'ai des "notes" et des "commentaires" dans ma version d'Excel et apparemment, (.Comment) fait référence aux notes chez moi. Donc quand je modifiais une cellule, le résultat ne changeait pas et les cellules avec commentaire apparaissaient comme sans. Donc encore une fois ce que vous avez réalisé était très bien, nous sommes juste tombé sur une "anomalie" de ma version. d’où les incompréhensions du début.
 

Willmaz

XLDnaute Nouveau
Il est plutôt volumineux et surtout assez confidentiel. En gros, en référence à la capture si dessous, mes X sont dans la colonne G et ils apparaissent avec un =SI (cellx de ma feuillY = "blablabla";"X";""). En gros on ne vient sur cette feuille que pour voir le nombre de non-respect de procédure et il faut que l'utilisateur ajoute un commentaire pour préciser ce dont il s'agit. Donc la macro se déclenche à l'activation de cette feuille et s'arrête après. Même si on rentre un commentaire, elle ne se met à jour que la prochaine fois qu'on viendra dessus. c'est un peu frustrant quand on ajoute un commentaire de voir toujours un message d'alerte, mais celui-ci aura disparu la prochaine fois!

1658849859962.png
 

Willmaz

XLDnaute Nouveau
Ne serait il pas infiniment plus simple de rajouter une colonne pour les commentaires comme cela se fait dans beaucoup de fichier de synthèse.
Dans ce cas, même plus besoin de code, on doit pouvoir le faire directement en MFC.
Très belle proposition, mais je ne suis pas le seul à utiliser ce classeur et d'un point de vue global c'est le principe des "notes/Commentaires" qui fait l'unanimité...
 

job75

XLDnaute Barbatruc
Bonjour Willmaz, le forum,

Vous avez parlé de plusieurs feuilles donc j'ai rempli Feuil3, voyez ce fichier (2).

Le code dans Module1 :
VB:
Public activation As Boolean 'mémorise la variable

Sub ArrierePlan()
'menu Exécution => Réinitialiser pour arrêter la macro
Dim t#, tablo, resu(), i&
Do
    If activation Then ThisWorkbook.Saved = False: activation = False
    t = Timer + 0.5
    While Timer < t And t < 86400: DoEvents: Wend 'attente de 0,5 seconde
    If Not ThisWorkbook.Saved And TypeName(ActiveSheet) = "Worksheet" Then
        With ActiveSheet.[A1].CurrentRegion.Columns(6)
            tablo = .Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
            ReDim resu(1 To UBound(tablo), 1 To 1)
            For i = 2 To UBound(tablo)
                If tablo(i, 1) <> "" And .Cells(i).Comment Is Nothing Then resu(i, 1) = "Pas de commentaire"
            Next
            .Columns(2) = resu 'restitution
        End With
        ThisWorkbook.Saved = True 'évite le recalcul
    End If
Loop
End Sub
Et dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Workbook_SheetActivate ActiveSheet
Application.OnTime 1, "ArrierePlan" 'lance le processus
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
activation = TypeName(Sh) = "Worksheet" And Sh.Name <> "Base"
End Sub
Les feuilles sont traitées à chaque activation, pilotées par la variable activation.

Edit : ajouté dans Module1 And TypeName(ActiveSheet) = "Worksheet"

A+
 

Pièces jointes

  • Equipe de france(2).xlsm
    36.6 KB · Affichages: 1
Dernière édition:

Willmaz

XLDnaute Nouveau
À moins que ce ne soit encore ma version d'Excel qui fonctionne de façon marginale, on est d'accord que la feuille ne se met à jour que lorsqu'on la quitte et qu'on revient? En gros si je rajoute une note là ou il en faut une, elle ne se met pas à jour instantanément.. Ce n'est qu'en quittant la feuille et en revenant qu'elle est actualisée...?
 
Dernière édition:

job75

XLDnaute Barbatruc
À moins que ce ne soit encore ma version d'Excel qui fonctionne de façon marginale, on est d'accord que la feuille ne se met à jour que lorsqu'on la quitte et qu'on revient? En gros si je rajoute une note là ou il en faut une, elle ne se met pas à jour instantanément.. Ce n'est qu'en quittant la feuille et en revenant qu'elle est actualisée...?
Chez moi chaque feuille se met à jour dès qu'on modifie les commentaires en colonne F.
 

job75

XLDnaute Barbatruc
Je n'avais pas fait attention mais vous aviez mis une macro Worksheet_Activate dans la 1ère feuille.

Elle ne servait à rien et était même gênante, je l'ai supprimée dans ce fichier (3).
 

Pièces jointes

  • Equipe de france(3).xlsm
    35.4 KB · Affichages: 2

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 667
Messages
2 111 706
Membres
111 264
dernier inscrit
Monnoye