Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro en remplacement d'une liste de choix

  • Initiateur de la discussion Initiateur de la discussion boudebois
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

boudebois

Guest
Bonjour,
Pour le suivi d'un budget, j'ai préparé un tableau avec Excel 2003
J'aimerai créer un bouton avec une macro pour remplacer la liste de choix avec index que j'ai actuellement.
Ci joint des captures d'écran de mon fichier
Je dois remplir automatiquement la colonne C selon le choix de la ligne B.😱

Merci
 

Pièces jointes

  • support.jpg
    36.5 KB · Affichages: 44
Re : Macro en remplacement d'une liste de choix

Bonjour boudebois, tototiti,

Voyez le fichier joint.

Dans ThisWorkbook :

Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.Name = "Budget 09" Or Target.Interior.ColorIndex > 0 _
  Or Intersect(Target, Sh.Columns(2)) Is Nothing Then Exit Sub
Cancel = True
UserForm1.Show
End Sub

Dans le code de l'UserForm :

Code:
Private Sub ComboBox1_Change()
Dim lig As Variant
ActiveCell = ComboBox1
lig = Application.Match(ComboBox1, [Categories], 0)
If IsNumeric(lig) Then
ActiveCell.Offset(, 1) = [Categories].Offset(, 1)(lig)
Else
ActiveCell.Offset(, 1) = ""
End If
End Sub

Private Sub UserForm_Initialize()
ComboBox1.SetFocus
SendKeys "%{DOWN}"
End Sub

A+
 

Pièces jointes

Dernière édition:
Re : Macro en remplacement d'une liste de choix

Re,

On peut aussi utiliser des listes de validation, c'est plus classique mais pas toujours très lisible...

Dans ThisWorkbook :

Code:
Private Sub WorkBook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
If Sh.Name = "Budget 09" Or Intersect(Source, Sh.Columns(2)) Is Nothing Or Source.Count > 1 Then Exit Sub
If Source.Interior.ColorIndex > 0 Then Exit Sub
Dim lig As Variant
lig = Application.Match(Source, [Categories], 0)
If IsNumeric(lig) Then
Source.Offset(, 1) = [Categories].Offset(, 1)(lig)
Else
Source.Offset(, 1) = ""
End If
End Sub

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
321
Réponses
1
Affichages
162
Réponses
15
Affichages
619
Réponses
40
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…