XL 2016 Recherche de référence... (VBA)

WEIDER

XLDnaute Impliqué
Bonsoir à toutes et tous !

Pouvez vous m'aider s'il vous plait à résoudre mon petit problème, car moi je n'y arrive pas....
Tout est dit dans ma pièce jointe.

Mille mercis à vous !
 

Pièces jointes

  • Test.xlsm
    37.6 KB · Affichages: 17

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, WEIDER

WEIDER
Tu peux répéter ce qui est dit dans la PJ directement dans ton message comme c'est l'usage sur le forum?
Merci.

PS: Cela permet de savoir si le sujet nous intéresse et si on a ou pas les compétences pour le résoudre.
Si ce n'est pas le cas, cela nous évite d'inutilement télécharger un fichier.
;)
 

WEIDER

XLDnaute Impliqué
Bonsoir Staple 1600,

Voici donc mon souci...

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

Pouvez vous m'aider à solutionner mon petit problème, car la je ne sais pas vraiment trouver la solution... Merci d'avance.

J'ai modifier mon fichier initial pour en laisser qu'une petite partie, celle qui m’intéresse et pour que le fichier soit moins lourd aussi...

Voilà, en tapant une référence dans ma cellule verte "Rechercher une référence", cela à pour effet de m'afficher juste en dessous dans l'autre boite, la ou les lignes concernées par cette référence et de me les mettre en vert dans le tableau (les 3 premières colonnes).

Problème : Les premiers et deuxième digit indiquent bien les lignes correspondantes mais au troisième, plus rien !?

Pouvez vous m'aider à régler ce problème, peut être dans mes lignes de codes ou les propriétés ?

Mille mercis à tous.
 

Staple1600

XLDnaute Barbatruc
Re

Merci pour les explications.
Dommage que le mot de passe sur ton fichier donne envie de le fermer illico presto ;)

Sinon pour ne pas simplement utiliser le filtre automatique avec comme critère:
Commence par:
ou
Contient
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Justement avant d'utiliser le VBA, il est plus sage d'apprendre à utiliser les fonctions basiques d'Excel.
Comme le filtre automatique, le tri, les tableaux croisés dynamiques.
Je te laisse réfléchir sur cette suggestion car moi là, je vais me coucher ;)
 

WEIDER

XLDnaute Impliqué
Bonjour Staple1600,

D'accord et pas d'accord avec toi :)
A l'époque, il y avait comme une 'urgence' dans la création du fichier en question, je me suis donc fait aider.
Après tu as tout à fait raison dans le sens ou maitriser le VBA est plus que recommandé si le besoin de modifier un tel fichier se fait sentir.

Bon, du coup, pas de solution à mon problème :(
Si un modérateur passe par ici, il peut supprimer ce fil, inutile d'encombrer le forum.
 

Staple1600

XLDnaute Barbatruc
Re

WEIDER
Testé sur mon fichier de test (sans mot de passe)
Je te laisse faire les adaptations nécessaires pour ton fichier ;)
VB:
Private Sub TextBox1_Change()
Dim Plg As Range, c As Range
Set Plg = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))
With ListBox1
    .Clear
    .ColumnCount = 3
    .ColumnWidths = "75;75;75"
End With
If Len(TextBox1) Then
  For Each c In Plg
    If c.Value Like "*" & Val(TextBox1) & "*" Then
    With ListBox1
    .AddItem c: .List(.ListCount - 1, 1) = c(1, 2): .List(.ListCount - 1, 2) = c(1, 3)
    End With
  End If
  Next c
End If
End Sub
 
Dernière édition:

WEIDER

XLDnaute Impliqué
Bonjour Staple1600 :)

Tout d’abord un grand merci pour ton aide ;)

J'ai recopié ton code dans celui de ma première textBox (Rechercher une référence), mais sans succès...

--> Le critère de recherche doit se faire sur la colonne 'Référence' !!!

Une question que je me pose...
Le code de mes deux TextBox ('Rechercher une référence' et 'Nombre d'occurrence(s) ci-dessous' est identique !? Est-ce normal ?

Sinon, une fois ton code coller en place de celui existant (j'ai copié le même pour les deux TextBox), même symptôme, au bout du troisième digit tapé, plus rien !?!?
De même, cela ne me bascule pas en vert les cellules trouvées !?

As tu repris mon fichier pour faire ton test ?

Amicalement

WEIDER.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

WEIDER
L'insuccès vient sans doute d'un moment inattention de ta part ;)
J'avais précisé...
Re
WEIDER
Testé sur mon fichier de test (sans mot de passe)
Je te laisse faire les adaptations nécessaires pour ton fichier ;)
Rappelles-moi dans quelle colonne se trouve tes Références
De mémoire, je dirais C, non
Et que lis-tu dans mon code VBA?
Set Plg = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))
Je te laisse donc cette fois-ci adapter en conséquence.

NB: Je ne parle pas des numéros de ligne...je te laisse là aussi faire ce qu'il faut ;)
 

WEIDER

XLDnaute Impliqué
Bonsoir Staple1600,

Depuis ce matin je cherche à rétablir le bon fonctionnement de mon fichier, mais en vain...

Par rapport à ce que tu me dis, j'ai changé :
Set Plg = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))
en
Set Plg = Range(Range("B2"), Range("B" & Rows.Count).End(xlUp)) car ma recherche se fait sur ma colonne "Référence", la 'B'.

- Il y à du mieux dans le sens ou j'ai l'impression que les 5 premiers digit sont bien pris en compte dans la recherche mais ensuite ça par en sucette, comme l'exemple que je montre, ma recherche finissant en 'D101' il devrait y avoir qu'une ligne qui apparait dans la boite du dessous !?!?!? Hors ça me laisse les 4 référence commençant par 31221.....

- Je n'arrive pas à étendre les espaces dans la deuxième boite, afin de voir la référence complète ainsi que la désignation...
Je pensais que cela se faisait dans les 'Propriétés' de la boite, mais ça ne change rien !?!?

- Je n'arrive pas non plus à inclure le N° de l'onglet dans ma deuxième boite, ne sachant pas ou cela se modifie....

- Et puis les ligne concernées par ma recherche ne sont plus vertes (colonne Onglet, Référence et Désignation) !?

Bref, c'est la m.... et ça me prends bien le choux...

Voilà l'état de mon code :

Private Sub TextBox1_Change()
Dim Plg As Range, c As Range
Set Plg = Range(Range("B2"), Range("B" & Rows.Count).End(xlUp)) ---> Ma recherche se fait bien sur la colonne 'Référence" !
With ListBox1
.Clear
.ColumnCount = 3
.ColumnWidths = "75;75;75" ---> Je pensais que c'était ici que l'on pouvait paramétrer l'ajout du N° d'onglet à mettre en plus dans la deuxième boite, ainsi que le paramétrage des dimensions des plages de caractères !
End With
If Len(TextBox1) Then
For Each c In Plg
If c.Value Like "*" & Val(TextBox1) & "*" Then
With ListBox1
.AddItem c: .List(.ListCount - 1, 1) = c(1, 2): .List(.ListCount - 1, 2) = c(1, 3) ---> A quoi sert cette ligne de commande ?
End With
End If
Next c
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

WEIDER
Ci-dessous juste pour te montrer que cela fonctionne
(ci-dessous test de mon 1er code sur un fichier lambda)
01_ListBox1.jpg

La ligne sur laquelle tu te poses des questions ne sert qu'à remplir la listbox.
(Et en vérité, c'est une ligne qui en fait trois;))
L'écriture classique est:
With ListBox1 .AddItem c .List(.ListCount - 1, 1) = c(1, 2) .List(.ListCount - 1, 2) = c(1, 3) End With
 

Discussions similaires

Réponses
3
Affichages
132
  • Résolu(e)
Microsoft 365 =somme.si
Réponses
4
Affichages
96
Réponses
1
Affichages
231

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 678
dernier inscrit
bibitm