ComboBox DataValidadtion

Signaler
Messages postés
7
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
26 novembre 2014
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,
Je travail sur un fichier excel ou il ya plusieurs feuilles et à la feuille "Feuille1" j'ai un bouton DataValidation qui extrait les données se trouvant dans feuille "Feuille2" dans la colonne "L".
Mon probleme est que ces données sont des codes et leurs descriptions sont sur la colonne "M". Je voudrai que le bouton de DataValidation affiche les deux colonnes(L & M), mais qu'en cliquant sur la donnée désirée, le champs soit rempli qu'avec linformation de la colonne "L"
Motif: Cela m'evitera de changer de feuille pour regarder a et certifier que le code choisie correspond bien a la descrition souhaite. Je ne veux pas ajouter une autre colone pour les description sur la "Feuille1"!
Le tout en vba svp!

Merci.

3 réponses

Messages postés
30310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2020
338
Bonsoir,

Je voudrai que le bouton de DataValidation affiche les deux colonnes
[...]
mais qu'en cliquant sur la donnée désirée, le champs soit rempli qu'avec linformation de la colonne "L"
Pourrais-tu être un peu plus précis ?
Par exemple :
- Qu'entends tu par "afficher" ...?
- Où clic tu ? (donnée désirée)


Par contre, ne sachant pas ce que fait ton code (je veux dire par là, que si tu ne nous le montre pas, on ne saura pas ce qu'il réalise comme "traitement" ), nous aurons du mal à t'apporter une réponse...


PS: Pense bien à suivre les recommandations du site sur la rédaction de tes questions.
Cela permettra aux personnes souhaitant t'aider à mieux comprendre le souci.



Messages postés
7
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
26 novembre 2014

Voici le mon code. Celui du module et celui de la feuille.

'Code du module:

Public Const AnalyticType = 8
Public Const MouvementType = 1
Public Const Account = 3

Public Const List_AnalyticType = 6
Public Const List_MouvementType = 9
Public Const List_Account = 12

Function InsertCombo(Target, ColonneClik, Liste, ColonneMapping, Optional Critere)
Dim Tbl() As Variant

If Target.Column = ColonneClik Then

If Not ColonneClik = Account Then

If IsMissing(Critere) Then Critere = "*"

Nb_Ligne = Sheets(SheetMapping).Cells(65536, ColonneMapping).End(3).Row

For i = 2 To Nb_Ligne
If Sheets(SheetMapping).Cells(i, ColonneMapping) Like Critere Then
x = x + 1
ReDim Preserve Tbl(1 To x) As Variant
Tbl(x) = Sheets(SheetMapping).Cells(i, ColonneMapping)
End If
Next i
Liste = Join(Tbl, ",")

With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Liste
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

End If

If ColonneClik = Account Then

With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Account"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

End If

End If

End Function

Function NoCombo(Target)

With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

End Function

Function ComboBoxValeur(Colonne)

Sheets(SheetMapping).Select

Nom = "Account"

f = Sheets(SheetMapping).Cells(65536, Colonne).End(3).Row

Set LaPlage = Range(Cells(2, Colonne), Cells(f, Colonne))
ActiveWorkbook.Names.Add Name:=Nom, RefersToR1C1:=LaPlage


End Function

' Voici le code de la feuille:

Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

If Target.Row = 1 And Target.Column < 19 Then
ActiveCell.Offset(1, 0).Select
End If

If Target.Row > 1 Then
Select Case Target.Column
Case MouvementType
Call InsertCombo(Target, MouvementType, LaPlage, List_MouvementType, "D*")
Case Account
Call InsertCombo(Target, Account, LaPlage, List_Account)
Case AnalyticType
Call InsertCombo(Target, AnalyticType, LaPlage, List_AnalyticType, "E*")
Case Else
Call NoCombo(Target)

End Select
End If

End Sub
Messages postés
30310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2020
338
Il te reste à répondre à mes questions et on devrait pouvoir t'aider. ^^
Messages postés
7
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
26 novembre 2014

Jordane45, au fait par "afficher" je veux dire, quand on clique sur le bouton du combobox comme c un datavalidation, il affiche la liste des choix sur lequel on peut cliquer. Je voudrais contrairement au fonctionnement du data validation qui quand on clique sur le bouton monter les information d'une plage(sur une seul colonne), moi je voudrais qu'il affiche une plage sur deux colonne ; mais qu'après avoir cliqué sur le choix désiré sur la cellule ne s'affiche que l'information de la première colonne.
Je clique sur une cellule où toutes les cellules de ladite colonne s'applique le code de datavalidation.
Messages postés
7
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
26 novembre 2014

Bonsoir à tous,
Après 24h d'attente, personne à pu trouver une solution à mon problème?
Je continu d'attendre.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
je ne suis pas intervenu jusqu'à présent dans cette discussion, car tout m'y semblait à la fois lourd et assez confus.
Je t'invite à changer ton fusil d'épaule après avoir lu attentivement tout ce qui est dans cette discussion :
http://codes-sources.commentcamarche.net/forum/affich-10010393-aide-a-la-selection-dans-une-liste-deroulante
et plus particulièrement mon intervention du 29 octobre.
Tu y verras comment utiliser avantageusement un activex combobox ou listbox
Je te laisse maintenant là