ComboBox DataValidadtion

NPY-TBTJ Messages postés 7 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 novembre 2014 - 5 nov. 2013 à 18:40
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 6 nov. 2013 à 18:17
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
5 nov. 2013 à 18:46
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.



0
NPY-TBTJ Messages postés 7 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 novembre 2014
5 nov. 2013 à 19:03
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
5 nov. 2013 à 19:13
Il te reste à répondre à mes questions et on devrait pouvoir t'aider. ^^
0
NPY-TBTJ Messages postés 7 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 novembre 2014
5 nov. 2013 à 19:27
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.
0
NPY-TBTJ Messages postés 7 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 novembre 2014
6 nov. 2013 à 18:00
Bonsoir à tous,
Après 24h d'attente, personne à pu trouver une solution à mon problème?
Je continu d'attendre.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 6/11/2013 à 18:20
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à
0
Rejoignez-nous