Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Bonjour sousou
Avec ta macro, le nom "ww" sera sur la ligne 4 uniquement
mon principe est de modifier le contenu du nom suivant la ligne de la cellule cliquée et de remplir la liste avec les données de la ligne
Bonjour à tous, merci pour vos réponse @M12, pourquoi mettre un "%" après le "i" ?
pour être plus claire je souhaite une combobox (liste) dans les cellules AA4:AA171 qui récupère les données ligne par ligne de AD4:AO4. de la manières validation des donnèes (liste).
Donc par exemple pour une combobox dans AA4 j'ai la liste des données de la même ligne AD4:AO4
Bonjour à tous, merci pour vos réponse @M12, pourquoi mettre un "%" après le "i" ?
pour être plus claire je souhaite une combobox (liste) dans les cellules AA4:AA171 qui récupère les données ligne par ligne de AD4:AO4. de la manières validation des donnèes (liste).
Donc par exemple pour une combobox dans AA4 j'ai la liste des données de la même ligne AD4:AO4
Re,
C'est le cas,
pour info le "%" équivaut à l'expression "As Integer"
As-tu au moins testé que chaque ligne dans ta liste déroulante te donne les indications des colonnes correspondantes à la SEULE ligne
Re,
C'est le cas,
pour info le "%" équivaut à l'expression "As Integer"
As-tu au moins testé que chaque ligne dans ta liste déroulante te donne les indications des colonnes correspondantes à la SEULE ligne
Voyez le fichier joint et ces macros pour la ComboBox :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
If Intersect(ActiveCell, [AA4:AA171]) Is Nothing Then .Visible = False: Exit Sub
.Top = ActiveCell.Top
.Left = ActiveCell.Left
.Height = ActiveCell.Height
.Width = ActiveCell.Width
.Visible = True
.Activate
End With
End Sub
Private Sub ComboBox1_GotFocus()
Dim c As Range
With ComboBox1
.Clear 'RAZ
.AddItem "<vide>"
For Each c In ActiveCell(1, 4).Resize(, 12)
If c <> "" Then .AddItem c
Next
Application.ScreenUpdating = True 'mise à jour de l'écran
.DropDown 'déroule la liste
End With
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .ListIndex > -1 Then ActiveCell = IIf(.ListIndex = 0, "", .Text): ActiveCell(1, 0).Select
End With
End Sub
Voyez le fichier joint et ces macros pour la ComboBox :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
If Intersect(ActiveCell, [AA4:AA171]) Is Nothing Then .Visible = False: Exit Sub
.Top = ActiveCell.Top
.Left = ActiveCell.Left
.Height = ActiveCell.Height
.Width = ActiveCell.Width
.Clear 'RAZ
.Visible = True
.Activate
End With
End Sub
Private Sub ComboBox1_GotFocus()
Dim c As Range
With ComboBox1
.AddItem "<vide>"
For Each c In ActiveCell(1, 4).Resize(, 12)
If c <> "" Then .AddItem c
Next
Application.ScreenUpdating = True 'mise à jour de l'écran
.DropDown 'déroule la liste
End With
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .ListIndex > -1 Then ActiveCell = IIf(.ListIndex = 0, "", .Text): ActiveCell(1, 0).Select
End With
End Sub
Le fonctionnement du fichier (1) n'est pas tout à fait satisfaisant, du moins chez moi.
Je sélectionne AA5 pour afficher la ComboBox, j'enregistre et ferme le fichier.
Je rouvre le fichier et clique sur la flèche de la ComboBox : la liste ne se déroule pas correctement.
Ce fichier (2) y remédie avec ce nouveau code :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
If Intersect(ActiveCell, [AA4:AA171]) Is Nothing Then .Visible = False: Exit Sub
.Top = ActiveCell.Top
.Left = ActiveCell.Left
.Height = ActiveCell.Height
.Width = ActiveCell.Width
.Visible = True
Application.OnTime 1, Me.CodeName & ".Activation" 'activation différée
End With
End Sub
Sub Activation()
ComboBox1.Activate
End Sub
Private Sub ComboBox1_GotFocus()
Static flag As Boolean 'mémorise la variable
If flag Then Exit Sub
Dim c As Range
With ComboBox1
.Clear 'RAZ
.AddItem "<vide>"
For Each c In ActiveCell(1, 4).Resize(, 12)
If c <> "" Then .AddItem c
Next
flag = True
ActiveCell.Activate 'désactive ComboBox1
.DropDown 'déroule la liste
.Activate 'réactive ComboBox1
flag = False
End With
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .ListIndex > -1 Then ActiveCell = IIf(.ListIndex = 0, "", .Text): ActiveCell(1, 0).Select
End With
End Sub
La petite gymnastique active/désactive/réactive permet de dérouler correctement la liste.
Une solution peut-être plus simple avec ce fichier (3) :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
With ComboBox1
If Intersect(ActiveCell, [AA4:AA171]) Is Nothing Then .Visible = False: Exit Sub
.Clear 'RAZ
.AddItem "<vide>"
For Each c In ActiveCell(1, 4).Resize(, 12)
If c <> "" Then .AddItem c
Next
.Top = ActiveCell.Top
.Left = ActiveCell.Left
.Height = ActiveCell.Height
.Width = ActiveCell.Width
.Visible = True
Application.ScreenUpdating = True 'mise à jour de l'écran
.Activate
End With
End Sub
Private Sub ComboBox1_GotFocus()
ComboBox1.DropDown 'déroule la liste
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .ListIndex > -1 Then ActiveCell = IIf(.ListIndex = 0, "", .Text): ActiveCell(1, 0).Select
End With
End Sub
Mais il faut en plus ce code dans ThisWorkbook pour créer la liste si la ComboBox est affichée :
VB:
Private Sub Workbook_Open()
Dim c As Range
With Sheets("ARM").ComboBox1
If Not .Visible Then Exit Sub
.AddItem "<vide>"
For Each c In .TopLeftCell.Offset(, 3).Resize(, 12)
If c <> "" Then .AddItem c
Next
End With
End Sub
Une solution peut-être plus simple avec ce fichier (3) :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
With ComboBox1
If Intersect(ActiveCell, [AA4:AA171]) Is Nothing Then .Visible = False: Exit Sub
.Clear 'RAZ
.AddItem "<vide>"
For Each c In ActiveCell(1, 4).Resize(, 12)
If c <> "" Then .AddItem c
Next
.Top = ActiveCell.Top
.Left = ActiveCell.Left
.Height = ActiveCell.Height
.Width = ActiveCell.Width
.Visible = True
Application.ScreenUpdating = True 'mise à jour de l'écran
.Activate
End With
End Sub
Private Sub ComboBox1_GotFocus()
ComboBox1.DropDown 'déroule la liste
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .ListIndex > -1 Then ActiveCell = IIf(.ListIndex = 0, "", .Text): ActiveCell(1, 0).Select
End With
End Sub
Mais il faut en plus ce code dans ThisWorkbook pour créer la liste si la ComboBox est affichée :
VB:
Private Sub Workbook_Open()
Dim c As Range
With Sheets("ARM").ComboBox1
If Not .Visible Then Exit Sub
.AddItem "<vide>"
For Each c In .TopLeftCell.Offset(, 3).Resize(, 12)
If c <> "" Then .AddItem c
Next
End With
End Sub
Franchement merci pour ton aide. je vais pouvoir avancé, par hasard comme ça tu serais comment ajouter aussi les couleurs des cellules correspondante dans la combobox ?
- 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