XL 2013 Combobox au lieu de plages de validation

michir

XLDnaute Occasionnel
Bonjour
Je reviens vers le forum car je n'arrive pas à faire fonctionner la proposition de JB que je remercie, mais la procédure (que j'ai recopiée) bug de ma faute car je n'ai pas su l'adapter à mon fichier joint
Je souhaite afficher dans les cellules des colonnes A, B D et E ( rien dans la colonne C) des combox qui affichent des données de validation figurant sous le tableau (ligne 860)
La procédure bugue dès le départ
Si JB ou un VBiste plus doué que moi pouvait me donner un coup de main
Merci à tous
Michel
 

Pièces jointes

  • test combo.xls
    378.5 KB · Affichages: 37

Patrice33740

XLDnaute Impliqué
Bonsoir à tous

En PJ, création de listes de validations.

L'idée de départ c'est justement de remplacer des listes de validation par des ComboBox
d'où la proposition de JB que Michir n'avait pas réussi à mettre en œuvre :
Bonjour
Je reviens vers le forum car je n'arrive pas à faire fonctionner la proposition de JB que je remercie, .....
 

michir

XLDnaute Occasionnel
Merci à tous notamment à Patrice,
Cela fonctionne comme je le souhaite mais maintenant je dois recopier la procédure qui comprend deux feuilles (Worsheet et Cbxchoix) dans mon fichier original que je voudrais éviter de casser
Comment puis je faire pour tout récupérer à partir du fichier Test ?.
Existe t il une techniques d'exportation (ce que j'ai essayé ne fonctionne pas) ?
Merci pour votre patiente
Michel

Derniers petite question. Si je souhaite malgré tout, garder les listes dans la page (plus facile d'accès pour les mises à jour par des personne inexpérimentées) que dois je faire? Sinon je reste avec la proposition de Patrice avec les listes dans une feuille séparée
 

Patrice33740

XLDnaute Impliqué
Bonjour,

1) ouvrir les 2 fichiers
2) à partir du fichier test, déplacer la feuille BdD vers ton fichier :
clic droit sur l'onglet BdD / Copier ou Déplacer / Dans le classeur : ton Classeur
3) sur la feuille Chrono DR CFA de ton fichier, insérer un combobox :
Onglet développeur / Mode création / Inserer / Zone de liste déroulante (contrôle ActiveX)
4) Renommer le combobox cbxChoix :
clic droit sur le combobox / Propriétés / modifier (Name) = cbxChoix
fermer la fenêtre propriétés / ôter le mode création
5) copier la macro depuis le fichier test vers la feuille Chrono DR CFA de ton fichier
6) enregistres ton fichier / fermes le fichier test sans l'enregistrer.
 

michir

XLDnaute Occasionnel
Merci Patrice
j'ai suivi tes indications précises et précieuses. J'espère que je n'ai pas manqué une marche
Je te joins un extrait de mon fichier (Test2) afin que tu puisses me dire si la recopie de la procédure est correcte
Merci encore
Michel
 

Pièces jointes

  • Test2.xlsx
    417.3 KB · Affichages: 30

Patrice33740

XLDnaute Impliqué
Re,

Il fallait l'enregistrer au format xlsm pour prendre en charge les macros.
Il fallait aussi supprimer les listes de validation de cellule qui ne te plaisent pas (caractères trop petits).
Edit: et supprimer les listes en fin de tableau (la longueur du tableau n'est donc pas limitée)
Ton fichier corrigé en retour.
 

Pièces jointes

  • Test2.xlsm
    381.5 KB · Affichages: 41

michir

XLDnaute Occasionnel
Je vous remercie tous notamment JB et Patrice dont les solutions sont très proches
Je ne comprends pas tout, mais cela fonctionne
je me pose la question de savoir, si je partage le fichier (c'est une association humanitaire), je devrai indiquer la manip pour en lever la sécurité macros
quoiqu'il en soit j'ai avancé sérieusement grâce à votre patiente
Merci à vous tous
 

michir

XLDnaute Occasionnel
Bonjour,

juste une petite question à l'intention de Patrice
pourquoi lorsque je clique dans le feuille BdD, j'ai le message suivant
"Membre ou méthode de données introuvable"

La procédure bugue sur les lignes en rouge:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Range
Me.CbxChoix.Visible = False
If Target.Count > 1 Or Target.Row < 4 Then Exit Sub
Select Case Target.Column
Case 1
Set r = [Liste_Années]
Case 2
Set r = [Liste_Comptables]
Case 4
Set r = [Liste_Villages]
Case 5
Set r = [Liste_Postes]
Case Else
Exit Sub
End Select
Me.CbxChoix.List = r.Value
Me.CbxChoix.Height = Target.Height + 3
Me.CbxChoix.Width = Target.Width
Me.CbxChoix.Top = Target.Top
Me.CbxChoix.Left = Target.Left
If Target.HorizontalAlignment = xlCenter Then
Me.CbxChoix.TextAlign = fmTextAlignCenter
Else
Me.CbxChoix.TextAlign = fmTextAlignLeft
End If
Me.CbxChoix.Text = Target.Value
Me.CbxChoix.Visible = True
End Sub

Private Sub cbxChoix_Change()
ActiveCell.Value = Me.CbxChoix
End Sub

Private Sub cbxChoix_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub

Private Sub CbxChoixVisible()
Me.CbxChoix.Visible = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib