Liste en cliquant sur cellule en VBA

davidp

XLDnaute Occasionnel
Bonjour le forum,

j'ai une nouvelle fois besoin de vous pour un projet (ce n'est pas pressé).

Voilà , je cherche en vba une fonction qui lorsque je clique sur une cellule (vide ou pleine) d'une colonne exemple "c " , un menu déroulant me propose une liste avec 3 choix :
-En cours
-Historique
-"cellule sans rien dedans" donc vide.

ensuite ,si je sélectionne ex: En cours , la valeur va dans la cellule selectionnée

Je ne sais pas si c'est possible

Merci d'avance pour ceux qui passeront du temps sur mon problème.

Bonne journée à tous le forum


DAVID
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Liste en cliquant sur cellule en VBA

Bonjour David, bonjour le forum,

Pourquoi du VBA alors qu'Excel te propose cela par le menu Donnéees/Validation... ? Par exemple :
tu écris en A1 En Cours, en A2 Historique. Tu sélectionnes les cellules dans lesquelles tu veux que cela s'applique (la colonne B par exemple) et tu fais menu Donnéees/Validation... La dans le champ Autoriser tu choisis Liste et là dans le champs Source, tu cliques sur la petite flèche rouge à droite (cela va réduire la boîte de dialogue) et tu fais un cliquer-glisser de A1 à A3 (vide). Tu recliques sur la petite flèche rouge à droite (la boîte de dialogue s'ouvre à nouveau en grand) et tu valides par Entrée ou sur le bouton Ok. Maintenant, dès que tu cliqueras sur n'importe laquelle des cellules de la colonne B, tu auras une flèche noire qui t'affichera tois options : En Cours, Historique et Vide.

Mais, si tu tiens absolument à du VBA, on peut le faire aussi...
 

davidp

XLDnaute Occasionnel
Re : Liste en cliquant sur cellule en VBA

Bonsoir Robert,


je te remercie pour le temps que tu as passé sur mon problème (description détaillée parfaite).
cela fonctionne parfaitement.

Je te souhaite une bonne soirée et à bientôt sur le forum

DAVID
 

fredl

XLDnaute Impliqué
Liste menu déroulant par VBA

Bonjour à tous, je réactive également ce vieux fil de discussion...
J'ai de mon côté aussi besoin de le faire en vba...
en effet, je souhaiterai générer un menu déroulant dont les données seraient récupérée dans une base de donnée Access.

- J'aimerai éviter d'utiliser "Données /Validation" car cela m'oblige de stocker ces informations sur l'onglet excel? (je sais faire)
- J'aimerais aussi éviter de charger un userform (je sais faire)...

L'objectif serait de charger les données à l'ouverture du fichier par exemple (recup des données par une macro ADO dans l'evenement workbook open= je sais faire)
Il ne me manque plus que la ligne de code qui me permettrait de charger la donnée dans le menu déroulant d'une cellule excel.....

Mais peut etre suis je trop exigeant?

Merci d'avance pour vos eventuelles réponses.

Frédéric
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste en cliquant sur cellule en VBA

Bonjour,

Avec Données/Validation
-si la liste est <200 caractères

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  'Microsoft Data Object library 2.8 doit être coché
  If Target.Address = "$B$2" Then
    repertoire = ThisWorkbook.Path & "\"
    Set cnn = New ADODB.Connection
    cnn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & repertoire & "Access2000.mdb"
    Set rs = cnn.Execute("SELECT nom_client FROM client Order By nom_client")
    Do While Not rs.EOF
      temp = temp & rs("nom_client") & ","
      rs.MoveNext
    Loop
    Target.Validation.Delete
    Target.Validation.Add xlValidateList, Formula1:=Left(temp, Len(temp) - 1)
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
   End If
End Sub

Avec ComboBox dans la feuille


Code:
Sub auto_open()
    repertoire = ThisWorkbook.Path & "\"
    Set cnn = New ADODB.Connection
    cnn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & repertoire & "Access2000.mdb"
    Set rs = cnn.Execute("SELECT nom_client FROM client Order By nom_client")
    Sheets(1).ComboBox1.List = Application.Transpose(rs.GetRows)
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub

http://boisgontierjacques.free.fr/pages_site/ado.htm#DVAccess

JB
 

Pièces jointes

  • DvAccess2.xls
    25.5 KB · Affichages: 157
  • FormAccess2.xls
    29.5 KB · Affichages: 127
Dernière édition:
G

Guest

Guest
Re : Liste en cliquant sur cellule en VBA

Fred,

Qu' appelle-tu 'menu déroulant d'une cellule excel.....'?

Le menu contextuel.
Une liste de validation (t'en veux pas)
Un liste de la boîte à outils contrôles?

que retourne ton recordset? un champ? Plusieurs? Une ligne? Plusieures?

Etc....

A+
 

fredl

XLDnaute Impliqué
Re : Liste en cliquant sur cellule en VBA

Bonjour à vous deux,

je vais avoir plus de 200 caractères (+/- 300 noms)
Une liste de validation m'irait bien..., mais ne pointant pas sur des données dans la feuille.
Quand au recordset, il me permettra de récupérer une liste de noms contenues dans une table "ressources".

dans tous les cas, merci pour votre contribution.
 
G

Guest

Guest
Re : Liste en cliquant sur cellule en VBA

Re,

Dans le fichier Joint:

1 - feuille cachée nommée 'Datas'
2 - un nom 'SourceDatas' faisant référence aux données de la colonne A de la feuille 'Datas'

3 - une macro (ADO) sans boucle qui alimente cette source de données.

4 - dans la feuille 'feuil1' les cellules de la colonne A ont une validation dont la formule est =SourceDatas.

C'est peut-être pour toi un pis aller mais c'est rapide une fois la connexion établie, et je ne vois pas autrement.
A+
 
G

Guest

Guest
Re : Liste en cliquant sur cellule en VBA

Re,

@Chrisdu, fait Alt+F11 dans la fenêtre qui s'ouvre, sélectionne ton fichier dans la liste à gauche, dévelloppe la branche le cas échéant et clique sur le nom de la feuille que tu veux cacher. Dans la liste des propriétés (F4 si elle n'est pas affichée) en bas tu choisis la propriété 'Visible' et là tu clique sur la flèche à droite pour choisir l'option voulue:
1 -visible
2- xlSheetHidden (cachée mais pourra être affichée par l'utilisateur)
3- xlSheetVeryHidden (ne peut-être ré-affichée que par le code ou cette méthode)

A+
 

ennrik

XLDnaute Nouveau
Re : Liste en cliquant sur cellule en VBA

bonjour

pour une validation de donné il n'est pas essentiel qu'elle se trouve dans la même feuille il suffit de la pointer avec un nom.
je m'explique: dans une feuille annexe mettre la liste puis lui donner un nom et dans la validation de donnée mettre dans source ="nom de la liste" sans "".
:)
 

fredl

XLDnaute Impliqué
Re : Liste en cliquant sur cellule en VBA

Bonjour à tous,
Honte à moi de constater que je n'ai fait aucun retour à vos propositions grace auxquelles j'ai résolu mon problème.
Merci hasco.
J'ai adopté ta solution

Encore une fois désolé pour cet oubli...

Cordialement

Frédéric
 

Discussions similaires

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 199
dernier inscrit
ATS1