Cellules adjacantes à la recherche avec la methode find + additem

  • Initiateur de la discussion Creepy
  • Date de début
C

Creepy

Guest
Kikoo,

Pour faire ma recherche j'ai utilisé cette méthode (Merci @+Thierry) :

Set C = .Find(Cherche, LookIn:=xlValues)
If Not C Is Nothing Then
FirstADdress = C.Address
Do
LstResultat.AddItem C
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstADdress
End If

Ca marche très bien et j'ai bien le resultat de ma recherche dans ma ListBox. Par contre je voudrais aussi qu'il me mette dans la listbox le contenu de ma cellule adjacente à ma recherche, et, 2 cellules apres

par exemple si j'ai dans mon tableau = dudul / cellule d'à coté : 123 et encore apres 456, je veux que le resultat de ma recherche soit :

dudul / 123 / 456.

Je sais formater ma listbox pour avoir trois colonne ca c'est pas le problème par contre je sais pas prendre les cellules adjacentes.

Merci

Creepy
 
J

john

Guest
Re,

Voilà le même exemple mais n'ayant pas comme en-tête de colonne le nom des colonnes, mais l'en-tête que toi tu as choisis (sur la première ligne de ta feuille dans ce cas si).

Du temps où je cherchais à faire ce petit fichier, j'ai cherché pendant des heures car je ne trouvais pas évident l'aide d'excel, mais à force de chercher j'ai trouvé, donc ne perdez pas courage à force de persévérence on fini toujours par y arriver, surtout que maintenant il y a ce forum super génial qui m'aurait bien servi au temps où je débutais en VBA (qui n'est pas si loin que ça l'air de rien).

Bon travail.

Bonne soirée à tous.

john
 

Pièces jointes

  • listbox_colonneb.zip
    11 KB · Affichages: 38
C

Creepy

Guest
Salut,

Merci c'est tout à fait ce que je cherche, mais aurait tu la solution pour que je puisse faire une rechercher sur la colonne A et afficher dans la liste box le resultat de ma recherche et ses cellules adjacantes.

Par exemple si je recherche les "DEDE" en colonne A, je veux que dans ma liste box j'ai par exemple :

DEDE 123 456
DEDE1 457 456
DEDE27 478 745

Saurais-tu comment faire SVP

Merci d'avance

Creepy
 
J

john

Guest
Re,

Je pense que ce serai plus facile pour moi que tu m'envois ton fichier (sans les infos perso). Pas évident sans avoir le fichier devant moi.

Sinon j'ai déjà ma petite idée, le tout est de pouvoir l'afficher comme dans les exemples que je t'ai envoyé.

Merci d'avance pour ton fichier.

Bonne soirée

John
 
J

john

Guest
Re,

Voilà, j'ai imaginé un petit programme (à ma façon), apparemment ça fonctionne, mais vous pouvez biensur le modifié et le faire évoluer à votre manière.

Moi c'est un programme vite fait pour essayer de te dépanner.

Bon je vais dodo maintenant.

Bonne nuit à tous.

John
 

Pièces jointes

  • listbox_colonnec.zip
    17.6 KB · Affichages: 36
C

Creepy

Guest
Merci pour la procedure,

Je l'ai regardé cela a l'air de fonctionner 1 fois mais après ca plante.

Je suis absent toute la journée (permis bateau !) Mais je regarderais plu sen detail ce soir, d'ici là si kk1 à kke chose à rajouer il est le bienvenue.

++

Creepy
 
Z

zon

Guest
Bonjour à tous,


Cela ne plante pas mais il y a un pb de select


avec dudul ça fonctionne car il est en A2. (range("A2").select de cmdrechercher_Click(), mais pa ludud qui est en A3 ,je pense qu'il va copier jusqu'à la ligne 65536 et + mais j'ai arrêté le code avant.


=> Donc une solution John et Creepy, est de selectionner la cellule correspondant au textbox une fois qu'on l'a trouvée est:

Private Sub cmdrechercher_Click()
Dim cell As Range
If txtcherche <> "" Then
Application.ScreenUpdating = False
For Each cell In Range("A2", "A" & Range("A65536").End(xlUp).Row)
If cell = txtcherche Then
cell.Select
Call Macro(txtcherche)
Exit For
End If
Next cell
Range("A1").Select
Else
MsgBox "Veuillez entrer un critère de recherche", vbInformation + vbOKOnly, "Erreur de recherche"
End If
Application.ScreenUpdating = True
End Sub


A+++
 
C

Creepy

Guest
Merci Zon,

Mais je m'apercois que cette procedure va alourdir grandement mon application, y aurait-il un autre moyen par mon Additem C de prendre la valeur des 2 celluls adjacantes ??

Merci d'avance

A++

Creepy
 
Z

zon

Guest
Re,



Voici donc une petite démo avec un tableau qui produit le même résultat que le code de John....

ATTENTION, si tu penses avoir plus de 100 "dudul" il faut déclarer le tableau différemment ex: Dim TAB1(0 to tonnombre,0 to 2) as String.

Idem pour I qui est en Byte, le mettre en Integer si tu dois avoir 256 et + dudul.



A+++



PS Juve 3-1 Real, dommage pour moi, trés forts ces italiens...
 

Pièces jointes

  • listbox_colonneZON1.zip
    17.1 KB · Affichages: 44
C

Creepy

Guest
Re,

Merci Zon c'est tout a fait ca que je souhaitais, cependant j'ai 3 questions :

1 - Pour que le resultat de la recherche soit affiché dans la listbox, il faut imperativement que le texte entré soit Exacte, si par exemple mon client est : Kronembourg il faut imperativement que l'utilisateur tape : Kronembourg.

S'il tape kro ou kronembourg (sans majuscule) ca marche pas. en faites il me faudrait une recherche incorporer dedans, mais la je bute grave !!

2 - On peut enlever le chiffre devant le resultat c serait + beau (oui oui je chipote !!).

3 - Pkoa tu dis dommage pour moi, t'avais parié ?

Merci Creepy

Ps voici mon code source propre si besoin sans mes essais avec mon Find

If TxtQuoi.Value <> "" Then <- TxtQuoi est une Textbox
For Each cell In Sheets("BdeD").Range("A2", "A" & Range("A65536").End(xlUp).Row)
If cell = TxtQuoi.Value Then
TAB1(I, 0) = cell.Text & I
TAB1(I, 1) = cell.Offset(0, 1).Text
TAB1(I, 2) = cell.Offset(0, 2).Text
I = I + 1
End If
Next cell
Else
MsgBox "Veuillez entrer un critère de recherche", vbInformation + vbOKOnly, "Erreur de recherche"
Exit Sub
End If
LstResultat.Visible = True
LstResultat.ColumnCount = 3
LstResultat.ColumnWidths = "6cm" & ";" & "6cm" & ";" & "3cm"
LstResultat.List = TAB1()
 

Discussions similaires

Réponses
12
Affichages
645
Réponses
8
Affichages
555
Réponses
12
Affichages
639

Statistiques des forums

Discussions
312 755
Messages
2 091 700
Membres
105 051
dernier inscrit
gaethano