Bonjour,
J'ai un soucis avec une macro, autant dire que je suis complètement paumé puisque je n'y pige rien...
Voila, je voulais une macro me permettant de faire une recherche "intuitive" : je commence a taper le nom de mon client dans la cellule et il me fait les propositions les plus proches.
Cela marche très bien sur deux onglets... mais pas sur un troisième.
Une différence entre les deux premiers et le dernier, qui, je pense est importante, sur les deux premier, c'est toutes les cellules d'une même colonne qui sont concernés par l'application de la macro. Tandis que sur le 3 ème onglet, je voudrais appliqué la macro sur une seule cellule.
Chose étrange, quand la macro est doit s'applique de G3 : G4, ça fonctionne en G3 mais pas en G4, et si je met G4 : G5, ça plante encore, et toujours en G4.
En sachant que je voudrais que cela ne s'applique QUE en G4, j'ai trop (a mon gout) de formule a modifier pour déplacer ce choix...
Voici la macro (je l'ai trouvé sur internet, car je suis strictement incapable de faire ça tout seul...
Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([G4:G4], Target) Is Nothing And Target.Count = 1 Then
a = Sheets("Paramètres de choix").Range("'Paramètres de choix'!$B$7:$B$38949").Value
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Set d1 = CreateObject("Scripting.Dictionary")
tmp = UCase(Me.ComboBox1) & "*"
For Each c In a
If UCase(c) Like tmp Then d1(c) = ""
Next c
Me.ComboBox1.List = d1.keys
Me.ComboBox1.DropDown
End If
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = Sheets("Paramètres de choix").Range("'Paramètres de choix'!$B$7:$B$38949").Value
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub
Visiblement ce qui bug (selon excel) c'est " If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then "
Quelqu'un a une idée?
Merci, AU grand merci d'avance!
Pablo
J'ai un soucis avec une macro, autant dire que je suis complètement paumé puisque je n'y pige rien...
Voila, je voulais une macro me permettant de faire une recherche "intuitive" : je commence a taper le nom de mon client dans la cellule et il me fait les propositions les plus proches.
Cela marche très bien sur deux onglets... mais pas sur un troisième.
Une différence entre les deux premiers et le dernier, qui, je pense est importante, sur les deux premier, c'est toutes les cellules d'une même colonne qui sont concernés par l'application de la macro. Tandis que sur le 3 ème onglet, je voudrais appliqué la macro sur une seule cellule.
Chose étrange, quand la macro est doit s'applique de G3 : G4, ça fonctionne en G3 mais pas en G4, et si je met G4 : G5, ça plante encore, et toujours en G4.
En sachant que je voudrais que cela ne s'applique QUE en G4, j'ai trop (a mon gout) de formule a modifier pour déplacer ce choix...
Voici la macro (je l'ai trouvé sur internet, car je suis strictement incapable de faire ça tout seul...
Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([G4:G4], Target) Is Nothing And Target.Count = 1 Then
a = Sheets("Paramètres de choix").Range("'Paramètres de choix'!$B$7:$B$38949").Value
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Set d1 = CreateObject("Scripting.Dictionary")
tmp = UCase(Me.ComboBox1) & "*"
For Each c In a
If UCase(c) Like tmp Then d1(c) = ""
Next c
Me.ComboBox1.List = d1.keys
Me.ComboBox1.DropDown
End If
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = Sheets("Paramètres de choix").Range("'Paramètres de choix'!$B$7:$B$38949").Value
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub
Visiblement ce qui bug (selon excel) c'est " If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then "
Quelqu'un a une idée?
Merci, AU grand merci d'avance!
Pablo