Liste déroulante VS Positionnement dans une feuille et + [Résolu/Fermé]

Signaler
-
 Patscaph -
Bonjour,
Sur exel 2007.

Je me questionne comment associer le choix d'un nom selectionné dans une liste déroulante (tel que ci-bas décrite) avec sa position physique dans la feuil d'où il provient (Classeur2, Feuil2)? En fait je cherche à utiliser cette position pour y sélectionner le contenu d'un cerains nombre de cellule de la même ligne que je souhaite importer dans un autre Classeur1, Feuil1. Que faire et Comment?
Après avoir importé le contenu des cellules en question (cellules qui sont toutes sur la même ligne) du Classeur2, Feuil2, je souhaite supprimer la ligne en question car le traitement prévu d'être fait au classseur1 ferait en sorte de créer un doublon au Classeur2, Feuil2.

Les lignes de codes ci-bas font en sorte d'alimenter le combobox mais je n'arrive pas à voir coment y associer la position du nom choisi.

Merci à l'un des king pour une précieuse réponse.

Private Sub UserForm_Initialize()
Dim I As Long, DerLig As Long
With Sheets("Feuil1") 'Ici, il faut mettre le bon nom de l'onglet
DerLig = .Cells(Rows.Count, 35).End(xlUp).Row 'Spécifie la colonne35 de la Feuille de calcul
For I = 6 To DerLig 'Débute à la ligne 6 pour se poursuivre jusqu'à la dernière ligne
Me.ComboBox1.AddItem .Cells(I, 35).Value 'incorpore les infos de la colonne 35 de la I ligne jusqu'à DerLig
Next I
End With
End Sub

4 réponses

Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
Bonjour,

Pour trouver la ligne du choix dans le combo essaies la fonction "FIND"

par ex

Ligne=columns(35).find(choixdantoncombo,cells(5,35),xlvalues).Row
Merci Michel!
Ce que je comprends de ta proposition de code est que le ''choixdantoncombo'' est l'objet de la recherche et qu'il prendra le premier mot correspondant à ''choixdantoncombo'' pour en résulter un numéro de ligne.... Si c'est le cas, la question n'est pas réglée pour moi car il se peut qu'il y ait deux fois le même nom alors ce code ne verra que le premier nom correspondant. Est-ce bien le résultat de ton code?
Si je tente de te préciser d'avantage ma pensée, je souhaite, entre autre, utiliser la liste déroulante pour rechercher un nom et en corriger les données associées à ce nom mais il se peut y avoir deux fois le même nom, qui par la liste déroulant je saute le premier pour en prendre le suivant ou plus.
Peut être une idée qui pourrait passer par une seconde condition choix (textebox) dans mon formulaire où j'y indiquerait le 1 le 2 ou le 3i'me ''choixdantoncombo'' rencontrée.
Est-ce quelque chose de simple à ajouter à ton code ou je m'enfonce dans le champs?
Comment aditionner le choix suivant 1 2 ou 3 à ton code pour qu'il considère la bonne ligne?.
Peut être que la liste n'est pas idéale pour ce que je souhaite faire mais pour moi elle m'apparaît une solution très simple et visuelle.
Merci pour les infos
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
Bonjour,

Pourquoi ne pas préciser ce que tu veux PRECISEMENT au départ ?

Pour réaliser ce que tu veux, il faut créer une listbox multicolonne qui affichera les noms identiques du choix dans la combo et ainsi l'utilisateur pourra choisir le nom qu'il désire.

alternative:
plutôt qu"un combo, on pourrait mettre un textbox qui affine la recherche des noms suivant les lettres tapées dans le textbox et affiche les résultats dans la listbox

J' attend ta réaction pour voir si j'ai un truc similaire dans mon grenier
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 594
Bonjour Patscaph, Michel_m,

Excusez l'incruste...

S'il s'agit juste de retrouver le numéro de la ligne en fonction du choix dans la ComboBox, pourquoi ne pas utiliser la propriété ListIndex?
Si on lui ajoute 6, on devrait trouver la bonne ligne non?
Un peu comme ceci :
Private Sub ComboBox1_Change()
Dim Lig As Long

If ComboBox1.Value <> "" Then Lig = ComboBox1.ListIndex + 6
End Sub
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
salut Franck ;o)

Bien vu mais Patcaft indique qu'il y a plusieurs noms à partir du choix dans le combo: sont ils dans une liste de données ailleurs ou dans la colonne 35 ? mystère et boule de gomme...
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 594
attendons donc sa réaction pour voir...

En attendant, bon app à toi!
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
De m^me :o)
aujourd'hui, c'est raviolis au cheval
Bonjour Messieurs Michel et Pijaku,

Désolé de mon manque de clarté. Je vais y aller par étape:

1-Le contenu de la liste déroulante Combobox1 cible uniquement une colonne et dans mon cas c'est la colonne 35 de la feuil2(Sheet) à l'intérieur du classeur 2 (Woorkbook). Cette feuil2 contient des entrées client ligne par ligne et la colonne 35 contient tous les noms qui sont la clé de la recheche des infos que se je souhaite sélectionner sur la ligne correspondante du client. Le choix du mode de recherche via une liste déroulante est requise pour faciliter la sélection du nom voulu. À noter qu'il faut que la liste déroulante soit ordonnée (alphabet). Peut être dois-je faire exécuter un tri du chiffrier de la feuil2 avant d'alimenter le ComboBox1....

2-Précision importante: Dans la colonne 35, il se peut qu'il y ait plus d'un mot qui soit identique. Donc plusieurs choix de ligne pour un même nom rechercher. Ça peut poser problème....... Je peux ici ajouter un textbox au formulaire qui sélectionne le 2 ième ou 3 ième noms....DerLig+1 ou +2, une façon de sélectionner le bon nom non?

3-Une fois le choix du nom fait dans la liste triée, je compte sélectionner le contenu de certaines cellules de cette même ligne que le nom sélectionné pour les importer dans un autre classeur ''classeur1'' Feuil1. Pour en faire d'autre traitement (correction) et regénérer une nouvelle ligne de ce client dans mon classeur2.

4-Évidemment le transfert des informations du lien vers un second classeur doit faire en sorte de supprimer complètement la ligne correspondante au client sélectionné du classeur2, feuil2.

?? Je vous propose donc un début de code auquel il manque plusieurs éléments de code pour faire tout ce que je souhaite mais je crois que vous pouvez m'aider. Pour ce qui ce passe au classeur1 je serai en mesure de me débrouiller ''J'espère''. Merci

Est-ce la bonne façon de faire....

Là y a un problème de compilation (Référence incorrecte ou non qualifiée???) et il se bloque au début à Derlig = . Cells........

'1-je trie la feuil2 juqu'à ''Derlig'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub UserForm_Initialize()
Dim I As Long, DerLig As Long

DerLig = .Cells(Rows.Count, 35).End(xlUp).Row 'Spécifie la colonne35 de la Feuille de calcul
Rows("6:" & DerLig).Select
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("AI6:AI" & DerLig _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("AQ6:AQ" & DerLig _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil2").Sort
.Set Range("A6:AR" & DerLig)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

'2-j'alimente la combobox'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Sheets("Feuil2") 'Ici, il faut mettre le bon nom de l'onglet
DerLig = .Cells(Rows.Count, 35).End(xlUp).Row 'Spécifie la colonne35 de la Feuille de calcul
For I = 6 To DerLig 'Débute à la ligne 6 pour se poursuivre jusqu'à la dernière ligne
Me.ComboBox1.AddItem .Cells(I, 35).Value 'Aditionne les infos de la colonne 35 à la DerLig
Next I
End With

End Sub
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
Bonjour,

Dans une combobox, tu ne devrais avoir que des éléments uniques sinon l'utilisateur sera toujours perturbé dans son choix et ton appli sera vite abandonnée
soit tu concaténétes des données sur la ligne pour rendre la liste sans doublon, soit tu utilises un textbox qui va ciblé le nom à chaque caractère écrit dans le textbox (autre avantage pas besoin de tri)
Je te mets un exemple de recherche d'une ligne (sur 37000)par affinage progressif ; c'est fait sans userform mais dans un userform la liste des résultats (colonnes C:H) serait alors dans une listbox sur laquelle l'utilisateur clique sur la commune voulue). pour te montrer des communes de m^me nom recherche Valence par ex)
https://www.cjoint.com/?3CbiUSCJ3NR

Maintenant, si on échange une fois par jour, on est pas prêts de résoudre ton souci; donc essaies de réagir + rapidement dans les possibilités du décalage horaire
Bonjour Michel,
Effectivement il y a décalage horaire et je peux difficilement faire mieux. Je suis d'accord avec toi pour dire que de cette manière ça allonge le temps de résolution mais ne tant fait pas trop pour moi ça ne me gêne pas. Crois bien que je ne veux surtout pas t'ennuyer à répétition avec mon problème.
J'ai regardé ton code De Commune et c'est très intéressant et ceci me dit que je vais repenser la structure de ce que je veux faire pour possiblement refléter d'avantage à ta proposition de programme.
Merci et A+

Y a aussi PIJAKU qui m'a référé un site de Jacques Bois Gonthier duquel je trouve beaucoup d'information pertinente. Avec tout ça j'ai pas mal à faire. Je constate que l'info est fort possiblement là aussi et je prendrai le temps de les comprendre avant de revenir vous communiquer.
Merci à tous de votre précieuse collaboration qui contribue très bien à informer ceux qui le sont moins.