[VBA] Aide pour un script

Résolu/Fermé
thepatatane Messages postés 180 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 22 mai 2016 - Modifié par thepatatane le 21/05/2016 à 22:51
thepatatane Messages postés 180 Date d'inscription vendredi 11 février 2011 Statut Membre Dernière intervention 22 mai 2016 - 22 mai 2016 à 15:01
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

3 réponses

m@rina Messages postés 21108 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 30 novembre 2024 11 364
22 mai 2016 à 04:51
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 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
22 mai 2016 à 09:21
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 vendredi 11 février 2011 Statut Membre Dernière intervention 22 mai 2016 4
22 mai 2016 à 15:01
Merci !
J'ai trouvé avec votre aide, ça fonctionne.

Bonne journée.
0