Double positionnement succésif du curseur dans un tableau

Bonjour

Sacré colle

Je ne sais pas pas pourquoi, et seulement si qu'un seul résultat

Je n'ai pas trouvé le pourquoi : Mais pour que ça m'arrange, je vais dire que cela vient de Micro$oft

Une parade dans le fichier, sinon il faut revenir à l'ancienne méthode

Bonjour

Et bien si tu ne sais pas pourquoi, il semble que tu es bien trouver la parade

Cela semble fonctionner parfaitement.

Je vais le tester sur mon fichier dès maintenant

Je voudrais également insérer cette macro dans un autre fichier :

Dans ce tableau la zone de recherche serait sur la colonne « AT »

Je devrais donc changer quelque part un « 2 » par « 46 » et même sans doute à plusieurs endroits ?

Je me suis essayé à tâtons, mais sans grands résultats

Pourrais-tu me dire quelles lignes je dois modifier ?

Ou mettre les zones en rouge ?

Encore merci

A+

Bonjour

Si la colonne de recherche est AT (46) il faut modifier dans

Private Sub TextBox1_Change()

If Cells(L, 46) Like "*" & TextBox1 & "*" Then

Aussi peut-être les colonnes qui doivent être affichées dans la ListBox (A toi de voir)

Private Sub ListBox1_Click()

Set x = Columns(46).Find(ListBox1.Value, , xlValues, xlPart, , , False)

  If Not x Is Nothing Then
    Application.Goto Cells(x.Row, 46), Scroll:=True
  End If
  Application.Goto Cells(Me.ListBox1.Column(5), 46)

Il n'y a que des tests (et sans fichier pas évident) qui préciseront si tout est conforme

Re,

J’en avais trouvé 3 sur 4

Il me manquait l’avant dernier

Il y a de l’espoir …....

Mais en fait, il doit y avoir encore autre chose à modifier

Car la recherche se fait toujours sur la colonne 2

Je corrige l’exemple en conséquence

Se sera plus simple !

Non en fait la recherche se fait bien sur la « Colonne 46 »

Mais c’est la « Colonne 2 » qui s’affiche dans la ListBox

J’ai donc changé :

Tablo(1, Nb) = Cells(L, 46)

A la place de

Tablo(1, Nb) = Cells(L, 2)

Mais ce n’est pas cela ou pas que cela !

Un autre problème :

Je suis dirigé sur la colonne 46

Alors que je souhaite continuer d’être dirigé sur la colonne 2

Exemple si je tape Ctrl L « Truc 1 » je souhaite quand même aller sur la cellule « B19 »

Dur, Dur !

Bonjour

Pas sur de tout comprendre

christG a écrit :

Exemple si je tape Ctrl L « Truc 1 » je souhaite quand même aller sur la cellule « B19 »

Et si tu choisis une cellule qui n'a pas l'équivalent en colonne B ?

Tu arrives sur une cellule vide, normal ?

Rebonjour

J’ai regardé un peu ton dernier envoi

Mais en fait, en installant la précédente macro dons mon tableau

Je viens découvrir un nouveau problème

Du coup cela fait un bon moment que j’essaye de comprendre d’où vient ce problème.

Mais là, je ne vois pas

Si toi tu vois

Encore une colle

Je te renvoie le précédant fichier, dans lequel je n’ai fait que de changer l’intitulé de 4 cellules dans la colonne B.

Tu tapes :

1) Ctrl L Tru (C’est Ok) Pour truc

2) Ctrl L Espe (C’est Ok) Pour Especes

3) Ctrl L Mach (Problème) Pour Machin

4) Ctrl L Ess (Problème) Pour Essai

En 3 et 4 le thème ne vient pas ce placer dans le coin supérieur gauche de l’écran

Alors qu’en 1 et 2, c’est parfait ??

A+

Bonjour

Ouf j'ai eu peur

Non pas une colle, mais un fonctionnement normal (pour le code) mais pas pour toi

Depuis le début c'est comme cela

Une fois le clic fait, un find cherche le mot qui est présent dans la 2ème colonne de la Listbox, comme c'est un Find, le premier trouvé (en cas de doublon) est valable et sert à positionner la liste

Puis on positionne sur le mot de la colonne 1 de la Listbox : Celui-ci c'est exactement le bon

Bonsoir

Une version à tester

Bonsoir

Encore une fois je crois que j’ai du mal m’expliquer

Ou c’est peut-être moi qui ne comprend pas ce que tu essais de m’expliquer

En tous cas j’ai trouvé la parade à mon problème.

Ou plutôt l’explication, d’où le remède.

Toi, tu aurais surement détecté l’erreur tout de suite

Mais comme moi je ne puis écrire une telle macro

Je suis passé à côté d’un raisonnement logique

Voila mon erreur

Prenons un exemple simple :

J’ai deux thèmes Machin A et Machin B

Dans le Thème Machin A, je mets les articles Machin Bidon, Machin Autre

Dans le thème Machin B, je mets l’article Machin Chouette

(Excuse-moi pour le peu d’imagination dans mes exemples)

Mon problème en l’occurrence, c’est que l’on retrouve le mot « Machin »

Aussi bien dans les thèmes, que dans les articles.

Donc si je fais une recherche sur Machin bidon, c’est bon

Mais si je fais ne recherche sur Machin Chouette, il considère que son thème n’est pas Machin B, mais Machin A !!!

Et il ne positionne donc pas le Thème B dans le coin supérieur

Pour corriger le problème dans cet exemple il suffit de remplacer

« Machin A » par « Machin.A » avec un point en plus

Et « Machin B » par « Machin.B »

Bon maintenant que j’ai réussi à m’auto-dépanner

Je vais poursuivre avec l’autre macro.

Après ce long blabla ...

A plus tard

Bonsoir

Je pensais avoir résolu le problème dans le dernier fichier posté

Je retourne à mes fourneaux

EDIT: Je rate quelque chose mais pour moi cela fonctionne bien

Re,

Mon dernier post s’est croisé avec le tien

(Normal le mien est beaucoup plus long que le tien !)

Ma réponse ne prend donc pas en compte ta version 007

Je vais la tester ……

A+

Bonjour

J’ai testé la version 6 avec donc une recherche sur la colonne 46

J’ai changé quelque peu la macro

Car il était préférable pour moi, que dans la 1ère colonne de la ListBox, se soit toujours la « Colonne B » qui soit présente

Cette colonne qui contrairement à mon précédant exemple n’est jamais vide.

Ce qui répond à ta remarque qui je le comprends ne pouvait que t‘étonner

Et si tu choisis une cellule qui n'a pas l'équivalent en colonne B ?

Tu arrives sur une cellule vide, normal ?

Je pensais remplacer la dernière colonne de la ListBox qui visualise les N° de ligne, ce dont je n’ai pas besoin, par la « Colonne 46 »

Mais je m’aperçois que je ne peux pas, ne pas mettre

Tablo(6, Nb) = L

Sinon cela bug la macro, dès que je clique sur un nom de la ListBox

Au niveau de

Application.Goto Cells(Me.ListBox1.Column(5), 2)

Bonsoir

Je ne sais pas ce que tu veux faire

christG a écrit :

Mais je m’aperçois que je ne peux pas, ne pas mettre

Double négation ---> Donc tu peux

J'ai remis en service cette ligne et pas de plantage

Tablo(6, Nb) = L

Maintenant elle se fait où la recherche en colonne 46 ou en colonne 6 ?

Bonsoir

Je résume :

- La recherche se fait bien sur la colonne AT soit la « colonne 46 du Tableau »

- Dans la listBox, je conserve comme avant, la « Colonne 2 du Tableau, soit la Colonne B » dans la « 1ère Colonne de la ListBox »

- Je n’ai pas besoin de « Colonne 6 de la ListBox »

Qui visualise les Numéros de ligne du tableau

- Je souhaite donc remplacer dans cette « Colonne 6 de la ListBox » ces N° de ligne dont je n’ai pas besoin par la « Colonne 46 du Tableau »

A+

Soit remplacer dans la macro

Tablo(6, Nb) = L

Par

Tablo(6, Nb) = Cells(L, 46) 'Colonne AT

Mais c'est dans ce cas, que le bug

Application.Goto Cells(Me.ListBox1.Column(5), 2)

apparait.

C'est peut-être plus claire comme cela

Bonsoir

Stop

christG a écrit :

- Je n’ai pas besoin de « Colonne 6 de la ListBox »

Qui visualise les Numéros de ligne du tableau

Si justement cette information est importante, et d'ailleurs c'est pour cela que j'avais une colonne masquée (0) pour y stocker cette information

Si tu veux tu peux rajouter un colonne dans la listbox (max 10) mais il faut impérativement une colonne pour y stocker le numéro de ligne

Merci pour cette précision.

Je n’avais pas prêté attention à celle colonne masquée

Je suppose que tu fais référence au « O » de

.ColumnWidths = "-1;-1;-1;-1;-1;-1;0"

Je vais donc masquer cette colonne nécessaire et en rajouter une pour ma colonne 46 …..

Je me pose une autre question en ce qui concerne la validation de la cellule recherchée.

En règle générale, la frappe du nom recherché est assez précise pour que la 1ere ligne qui apparait dans la ListBox, corresponde bien à ma recherche.

Est-il possible, dans dès lors, en appuyant sur « Entrée » de valider directement la recherche, soit sans pointer cette 1ère cellule dans la ListBox. ?

Un exemple pour être plus clair :

Je lance la macro Ctrl L

Je tape « Machin »

Dans la ListBox apparait dans l’ordre

Machin 1

Machin 2

Et ainsi de suite

Est-il possible en appuyant directement sur « Entrée » juste après avoir frappé « Machin » de valider la recherche sur « Machin 1 » qui se situe donc en 1er dans la liste ?

A+

Bonjour

Rajoutes cette macro dans le code de l'Userform

Private Sub ListBox1_Enter()
  If Me.ListBox1.ListCount > 0 Then
    Me.ListBox1.ListIndex = 0
  End If
End Sub

Bonsoir

Merci encore une fois pour cette nouvelle macro

C’est beaucoup plus pratique comme cela

Pour que se soit plus logique, je pensais sortir de la macro après avoir appuyé sur « Entrée »

Je pensais rajouter "Unload Me" dans cette dernière macro

Si cela fonctionne très bien si j’appuie sur « Entrée »

En revanche cela plante si je choisis de cliquer sur un autre article dans la ListBox, car je me retrouve du coup hors de la macro

Mais comment faire pour sortir de la macro après avoir appuyé sur « Entrée » tout en conservant la possibilité de choisir une autre sélection dans la ListBox ??

A+

Bonsoir

Je suis toujours dans cette même recherche de pouvoir sortir directement de la macro si je décide d’appuyer sur Entrée

J ai essayé plusieurs solutions qui me permettent de le faire, mais qui me pause le même problème de plantage

si je décide de choisir un autre "Produit" dans la ListBox"

A+

Rechercher des sujets similaires à "double positionnement succesif curseur tableau"