Double positionnement succésif du curseur dans un tableau

Bonsoir

Je n'ai pas d'idée

Fournis le fichier qui plante

Bonsoir

Voici un exemple

J’ai donc rajouté « Unload Me » dans cette macro :

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

Cela fonctionne parfaitement si j’appuie sur "Entrée" directement

Mais cela plante inévitablement si je décide de cliquer sur un article de la ListBox

J’ai également rajouté une 2ème macro dans cet exemple

Ctrl N

Mon tableau étant très grand, j’aimerais pour certains thèmes plutôt vastes, faire une sélection sur 2 critères :

(Un article plus ou moins identique peut se retrouver dans plusieurs « Genre » différents),

Le 1er comme avant sur l’ « Article »

Et en 2ème sur le « Genre »

Rajouter une 2ème TextBox dans l’UserForm c’est tout ce qu’il y a de plus facile, en revanche, le gérer cela parait beaucoup plus complexe

Merci

A+

Bonjour

Un début d'explication pour le plantage

Lors du clic dans la listbox, il se passe d'abord l'évènement Enter et ensuite l'évènement Click

Si dans une des 2 macros tu fermes l'userform, le programme ne peut pas traiter le 2ème événemet et plante

Solution : Ne pas fermer l'userform dans aucune de ces 2 macros (bouton ou Double clic (comme tu as fait))

Pour le 2ème cas voir fichier

Bonjour

Je comprends bien que le problème vient de ce que en rajoutant « Unload Me » dans la macro « ListBox1_Enter », je sors de l’UserForm.

Ce que j’ai du mal à admettre, c’est pourquoi la macro « ListBox1_DblClick » passe également par la macro « ListBox1_Enter »

Et pourquoi, vu que la macro « ListBox1_Enter » qui doit passer également par la macro « ListBox1_DblClick », laquelle contient aussi « Unload Me » et que là cela ne pose pas de problème ?

Pour la nouvelle macro, cela semble fonctionner à merveille

Juste de temps de l’adapter à mon tableau, ce que je vais faire tout de suite

Une question cependant au niveau de la recherche, cette recherche se fait sans tenir compte de la position des lettres

Ex je recherche « cale »

La recherche va lister « Cale » mais aussi « Locale »

Peut-on forcer la recherche de manière à ce qu’elle se fasse à partir du début du mot ?

Soit que la recherche « cale »

Donne cale, cales, calment ……, mais pas locale ?

Merci encore

et A+

Bonjour

C'est pour ça que j'avais marqué

Banzai64 a écrit :

Un début d'explication pour le plantage

Je n'ai pas autre chose en stock

christG a écrit :

Peut-on forcer la recherche de manière à ce qu’elle se fasse à partir du début du mot ?

Enlèves le début de la recherche

        'If Cells(L, 2) Like "*" & TextBox1 & "*" And Cells(L, 7) Like "*" & TextBox2 & "*" Then
        If Cells(L, 2) Like TextBox1 & "*" And Cells(L, 7) Like TextBox2 & "*" Then

Bonjour

Je n'ai pas autre chose en stock

Alors je vais volontiers m'en contenter

peut-être qu'un jour, je serais plus à même de trouver une solution

Il suffit juste de taper sur "Esc" après près avoir appuyé sur "Entrée" .....

Enlèves le début de la recherche

Merci, j'aurais du y penser !

Je constate que si je fais une recherche sur le genre

Voir exemple avec le fichier joint (Ctrl N Genre A)

Je visualise les lignes vides

Y aurait-il un moyen d’éviter cela ?

Pour des recherches portant sur des articles nombreux

J’avais pensé faire une macro spécifique en pré-rentrant le début de l’intitulé de cet article dans le TextBox

Voir exemple avec le fichier joint (Ctrl L) où j’ai pré-rentré « Article »

Mais pour initialiser la ListBox, il me faut quand même rentrer au moins 1 caractère

Peut-on également éviter cela ?

Merci

A+

Bonjour

Juste pour l'userform "UserForm9dnew"

Re

Tu as répondu à mes 2 questions dans le même UserForm

Du coup j’ai du mal à m’y retrouver

Pour la gestion des lignes vides

J’ai trouvé que tu as rajouté :

If Cells(L, 2) <> "" Then

..............

End if

Je l’ai transféré dans mon ancienne macro

C’est Ok

Pour ce qui est de l’initialisation de la ListBox, sans taper de caractère dans le TextBox

Et que je souhaite pas forcément mettre dans cet UserForm, mais dans l’autre, je n’arrive pas à trouver

Merci

A+

Bonjour

Regardes la procédure UserForm_Initialize()

Aussi modification de la procédure Alimente_Listbox()

Bonsoir

Merci pour la réponse

Cela me bouchait la vue, mais je n’avais pas été assez loin

En fait, je cherchais dans la ListBox !

J’ai essayé de remplacer la TexBox2 Par un ComboBox

J’ai un effet de grisé dans le texte sélectionné à l’intérieur de la ComboBox

Cela disparait quand je clique en dehors de la ComboBox

Je voudrais bien éliminer cet effet indésirable

As-tu une idée d’où cela provient

Merci

A+

Bonjour

Pas gênant (je n'y ai jamais prêté attention)

Je n'ai pas la solution mais fais comme tu as dis

christG a écrit :

Cela disparait quand je clique en dehors de la ComboBox

Exemple

Private Sub ComboBox1_Change()
  Me.TextBox1.SetFocus
  Alimente_Listbox
End Sub

Bonjour

C’est mieux ainsi

Cela redevient grisé, juste quand on désire changer de sélection

Puis cela s’en va aussitôt après .....

Merci

Je n’ai pas trouvé de détail là dessus, mais l’ordre des différents composants dans un UserForm semblent n’avoir aucune importance, non ?

Bonjour

Tu as des questions ... déroutantes

Qu'entends tu par "ordre" ?

L'ordre de création ?

L'ordre (la numérotation) ?

Comme c'est toi qui fait le code, un certain ordre dans la numérotation peut conditionner la simplification d'un code

et cet ordre est souvent tributaire de l'ordre lors de la création

Bonsoir

Excuse-moi

Je voulais dire par exemple ces différents codes

Peuvent être rentrés dans cet ordre

Mais l’ordre ne semble pas influer sur le déroulement de l’UserForm ?

Private Sub CommandButton1_Click()
......
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
......
Private Sub Aller_Click()
......
Private Sub ListBox1_Click()
......
Private Sub TextBox1_Change()

Bonjour

L'ordre des macros est sans importance

Les procédures vides sont créées dans l'ordre alphabétique

Bonjour

Les procédures vides sont créées dans l'ordre alphabétique

Que veux tu dire par procédures vides ?

A+

Bonjour

Crées un contrôle dans un userform

Double clic sur ce contrôle et tu vas savoir

Bonne journée

Bonjour

Merci pour ta réponse, j'ai compris

Je n'avais jamais fait attention à cet ordre alphabétique

Serait-il possible de concevoir ce même UserForm

Mais dans le 1er TextBox (Marqué « NOM »), au lieu de faire une recherche dans une colonne dans le tableau,

de faire une recherche sur les « Noms enregistrés » commençant par « Thème_ ».

Le 2ème TextBox reste identique avec une recherche dans la « Colonne B »

Exemple d’une recherche :

1er Textbox : Thème_Article_CatégorieB

2ème Textbox : Article de catégorie

Ci-joint un fichier exemple

Je reste à l’écoute dans le cas où ma demande se serait pas trop claire

Merci

A+

Bonjour

Tu n’as peut-être pas vu mon dernier post, ou pas eu le temps d’y répondre...

Mais en modifiant un ancien UserForm que tu m’as donné,

J’ai constaté que je ne peux pas modifier la position du « Theme » dans la ListBox

Je ne peux pas remplacer

          Tablo(2, Nb) = Theme
          Tablo(3, Nb) = Cells(L, 7)

Par

          Tablo(3, Nb) = Theme
          Tablo(2, Nb) = Cells(L, 7)

Si non le positionnement sur l’article est bon, mais le double-positionnement sur le thème, lui ne s’effectue pas

J’ai essayé pas mal de modif, mais pas trouvé la raison

Ci-joint le fichier en question

Bonjour

Il faut rester toujours sur la dernière version du programme car je ne suis plus

Pour ce problème, dans les propriétés de la ListBox1 change la valeur 2 de BoundColumn par 3

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