[VBA] Aide pour un script

Résolu
thepatatane Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   -  
thepatatane Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je vous explique mon cas.
Dans un premier tableau j'ai une liste de noms avec une valeur devant chaque noms.

Dans une autres feuille, j'ai un tableau avec plusieurs "validation des données" qui me permettent d'avoir une liste déroulante de tous les noms. J'aimerais que quand on choisissent un nom, un petit message avec la valeur qui lui correspond s'affiche (et que si la valeur est 0, il n'y est pas de message).


J'ai pensé à un commentaire dans la cellule du nom. J'ai commencé à faire un petit macro en VBA sur une feuille vierge pour tester. Voila :
Sub Test()
If Range("J7").Value Like "0" Then
Range("I7").Comment.Visible = False
Else:
Range("I7").Comment.Text Text:="valeur de la cellule J7"
End If
End Sub

Je n'arrive pas : a masquer le commentaire; mettre la valeur de la cellule correspondante; le faire pour plusieurs ligne de nom


Si je me suis mal exprimé ou que certains points ne sont pas claires n'hésitez pas. Et si vous avez d'autres propositions pour résoudre mon problème je vous écoute.
Un grand merci d'avance.
Bonne soirée.


Edit 1 :
Sub Test()
If Range("J7").Value Like "0" Then
Range("I7").Comment.Delete
Else:
Range("I7").AddComment
Range("I7").Comment.Text Text:="valeur"
End If
End Sub
A voir également:

3 réponses

m@rina Messages postés 23906 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
Bonsoir,

Pour moi, ce que tu demandes n'est pas clair... Je n'ai pas compris ce que tu veux comme message. Parce que afficher ce que tu es en train de choisir, je ne vois pas bien l'intérêt...

m@rina
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Bonjour,

En effet, sans les positons des différents tableaux et liste de validation, pas simple, mais code a mettre dans VBA de la feuille en adaptant a vos tableaux

si j'ai bien compris votre besoin, une façon de faire:

Private Sub Worksheet_Change(ByVal Target As Range)
    'liste de validation de donnees
    If Not Application.Intersect(Target, Range("C1:C7")) Is Nothing And Target <> "" Then
        'recherche dans table de noms la ligne pour "voir" la valeur de la cellule colonne suivante
        Ln = Application.WorksheetFunction.Match(Target, Range("A1:A7"), 0)
        If Range("B" & Ln).Value = 0 Then
            Target.Comment.Delete   'efface le commentaire
        Else:       'creation commentaire avec effacement pour mise a jour si changement de valeur
            With Range("C" & Target.Row)
                .Comment.Delete
                .AddComment
                .Comment.Text Text:=CStr(Range("B" & Ln))
                .Comment.Visible = False
            End With
        End If
    End If
End Sub
0
thepatatane Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci !
J'ai trouvé avec votre aide, ça fonctionne.

Bonne journée.
0