OVH Cloud OVH Cloud

Liste de sélection VBA "like" tableur

5 réponses
Avatar
M41
Bonjour

Quand on fait un click droit sur une cellule, la boîte de dialogue propose
"une liste de choix..." correspondant au contenu de la colonne. Comment
programmer exactement la même chose en VBA sans passer par un combobox ou
une listbox ?
L'enregistreur de macro ne fonctionne pas dans ce cas là.

Même question pour un contenu de la ligne ?

Merci

M41

5 réponses

Avatar
Jacky
Bonjour,

Données / validation >>liste ne convient pas ??

--
Salutations
JJ

"M41" a écrit dans le message de news:
451e6625$0$5111$
Bonjour

Quand on fait un click droit sur une cellule, la boîte de dialogue propose
"une liste de choix..." correspondant au contenu de la colonne. Comment
programmer exactement la même chose en VBA sans passer par un combobox ou
une listbox ?
L'enregistreur de macro ne fonctionne pas dans ce cas là.

Même question pour un contenu de la ligne ?

Merci

M41



Avatar
JB
Bonjour,

Sur clic/Droit, construit une liste triée sans doublons avec les
valeurs de la colonne:

http://cjoint.com/?jEp0GFaDsc

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)
If Not Intersect([A1:D30], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = True
Dim temp
ReDim temp(1 To 1)
j = 0
Set champ = Range(Cells(1, Target.Column), Cells(65000,
Target.Column).End(xlUp))
For Each c In champ
If c <> "" Then
If IsError(Application.Match(c, temp, 0)) Then
j = j + 1
ReDim Preserve temp(1 To j)
temp(j) = c
End If
End If
Next c
'---- tri
For i = LBound(temp) To UBound(temp)
For j = i To UBound(temp)
If temp(j) < temp(i) Then
Tempo = temp(j)
temp(j) = temp(i)
temp(i) = Tempo
End If
Next j
Next i
'--
temp2 = Join(temp, ",")
On Error Resume Next
Target.Validation.Delete
Target.Validation.Add xlValidateList,
AlertStyle:=xlValidAlertInformation, Formula1:=Left(temp2, 255)
Cancel = True
End If
Application.EnableEvents = False
End Sub

Cordialement JB



Bonjour

Quand on fait un click droit sur une cellule, la boîte de dialogue prop ose
"une liste de choix..." correspondant au contenu de la colonne. Comment
programmer exactement la même chose en VBA sans passer par un combobox ou
une listbox ?
L'enregistreur de macro ne fonctionne pas dans ce cas là.

Même question pour un contenu de la ligne ?

Merci

M41


Avatar
JB
http://cjoint.com/?jEqdBmLJnD

JB


Bonjour

Quand on fait un click droit sur une cellule, la boîte de dialogue prop ose
"une liste de choix..." correspondant au contenu de la colonne. Comment
programmer exactement la même chose en VBA sans passer par un combobox ou
une listbox ?
L'enregistreur de macro ne fonctionne pas dans ce cas là.

Même question pour un contenu de la ligne ?

Merci

M41


Avatar
Patrick Penet
C'est le menu contextuel.

Exemple :

'Suppression des Barres de menu et Barres d 'outils Excel.
Dim oCB As CommandBar
For Each oCB In Application.CommandBars
oCB.Enabled = False
Next oCB

Dim CB As CommandBar
Set CB = Application.CommandBars.Add("cbCMenu", msoBarPopup, , True)

Dim cc As CommandBarControl
With CB

Set cc = .Controls.Add(msoControlButton, , , , True)
cc.Caption = "&Tintin"
cc.OnAction = "subTintin"
cc.FaceId = 2773
cc.TooltipText = "Tintin"

Set cc = .Controls.Add(msoControlButton, , , , True)
cc.Caption = "&Milou"
cc.OnAction = "subMilou"
cc.FaceId = 316
cc.BeginGroup = True '<===== nouvelle zone
cc.TooltipText = "Ouah ! Ouah !"

Set cc = .Controls.Add(msoControlButton, , , , True)
cc.Caption = "&Haddock"
cc.OnAction = "subHaddock"
cc.FaceId = 317
cc.Enabled = False
cc.TooltipText = "Mille sabords !"

End With

PP

"M41" a écrit dans le message de news: 451e6625$0$5111$
Bonjour

Quand on fait un click droit sur une cellule, la boîte de dialogue propose "une liste de choix..." correspondant au contenu de la
colonne. Comment programmer exactement la même chose en VBA sans passer par un combobox ou une listbox ?
L'enregistreur de macro ne fonctionne pas dans ce cas là.

Même question pour un contenu de la ligne ?

Merci

M41



Avatar
M41
Bonsoir et merci
M41


"M41" a écrit dans le message de news:
451e6625$0$5111$
Bonjour

Quand on fait un click droit sur une cellule, la boîte de dialogue propose
"une liste de choix..." correspondant au contenu de la colonne. Comment
programmer exactement la même chose en VBA sans passer par un combobox ou
une listbox ?
L'enregistreur de macro ne fonctionne pas dans ce cas là.

Même question pour un contenu de la ligne ?

Merci

M41