Rapatrier plusieurs occurences avec recherche

C

coco

Guest
Bonjour à tous.
Je voudrais savoir comment obtenir avec les fonctions recherche tous les enregistrements qui correspondent à un critère donné. Exemple, j'ai une grille dont la permière colonne contient un code (de 1 à 300). plusieurs enregistrements ont le même code. Mon besoin est de récupérer dans une autre feuille ou un autre classeur toutes les infos (ligne par ligne) des enregistrement qui correspondent à un code que je choisis en fonction de mes besoins. Merci d'avance à tous ceux qui pourraient m'aider. Coco
 
@

@+Thierry

Guest
Bonjour Coco, le Forum

Ce n'est pas du "cousu main" car celà a été fait pour quelqu'un d'autre, mais j'ai fait une démo qui devrait tout de même t'être très utile :

La démo => USF_ListBox_A_La_Volee.zip(48k)

Le Fil de Discussion => Lien supprimé

Regarde un petit peu ceci (notamment la feuille "Historik").....

Bonne Soirée
@+Thierry
 
C

coco

Guest
Salut Thierry salut tout le monde.
J'ai regardé ta démo et c'est super chouette. Mais je ne pense pas que, compte-tenu de mes piètres connaissances en VBA je puisse m'en sortir. En fait ce que je souhaite obtenir c'est que les infos des enregistrements sélectionnés par le code soient recopiées dans une autre feuille dans laquelle j'aurai d'autres actions à traiter. Avec ta démo les infos apparaissent dans une boîte de dialogue et là je ne sais pas les récupérer.
Je tends ma main vers tous ceux qui pourraient m'aider et que je remercie d'avance.

Coco
 
@

@+Thierry

Guest
Bonjour Coco, le Forum

Voici un code simplifié qui va récupérer toutes les occurrences de la "Feuil1" Range "A1:A300" par rapport à ce que tu as tapé dans l'InputBox au départ... Une liste de ces occurrences sera créée automatiquement en "Feuil2" avec le reports des données de la même ligne jusqu'en colonne "H"...


Option Explicit
Sub Recherche()
Dim C As Range
Dim Text As String
Dim Firstaddress As String
Dim i As Integer

Text = InputBox("Taper le Text Recherché", "Recherche", "Toto")
If Text = "" Then Exit Sub

i = 1
With Sheets("Feuil1").Range("A1:A300")
Set C = .Find(Text, LookIn:=xlValues)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
Sheets("Feuil2").Range("A" & i & ":H" & i) = Range(C, C.Offset(0, 7)).Value
i = i + 1
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
End With
Set C = Nothing
End Sub

Si celà peut correspondre... (Changer "H" et "7" si tu as besoin de plus ou moins de colonne dans cette ligne :
Sheets("Feuil2").Range("A" & i & ":H" & i) = Range(C, C.Offset(0, 7)).Value


Bon Travail et Bonne découverte du VBA Coco !

@+Thierry
 
C

coco

Guest
Bonjour thierry et le forum. Merci Thierry. Je constate que tu es intarissable en solutions. Je te "bade" et je ne dois pas être le seul. Pendant quelques jours je vais m'absenter et je reprendrai mon projet un peu plus tard.Je te tiendrai un courant de l'évolution. A +
Coco.
 
C

coco

Guest
Salut Thierry, salut le forum. Je rentre de quelques jours de vacances (méritées) et j'ai réalisé le code que Thierry m'a gentillement passé. Hélas, j'obtiens le message suivant : " la méthode "Range" de l'objet_'worksheet' a échoué". Serait-ce parce que je travaille sur excel 2000?
Merci d'avance aux dépanneurs..

Coco.
 
V

vincent

Guest
Bonjour Thierry,coco

Je suis sur que Thierry sera à meme de te depanner mais en attendant pourrais tu confirmés sur quel ligne du code s'arrete la procedure (je pense que cela aidera Thierry aussi)

@+Vincent
 
@

@+Thierry

Guest
SAlut Coco, le Forum

A mon avis un message comme celui-ci indique que les feuilles n'ont pas le même nom que celui indiqué dans le code....

As-tu au moins une Feuille "Feuil1" et une Feuille "Feuil2"... sinon il faut bien évidemment adapter le code avec les noms de tes onglets de feuille....

Sinon post ton code en indiquant quelle ligne plante ....

Bon Aprèm
@+Thierry
 
C

coco

Guest
Salut Thierry, Vincent et le forum. Merci pour vos interventions. J'ai tapé le code de Thierry à la lettre (j'ai simplement remplacé H par C et 7 par 2. Il plante à la ligne " Sheets("feuil2").Range("A" & i & " C" & i) = Range(C,C.Offset(0,2)).Value".
J'ai bien une feuil2 dans mon classeur.

voici le code

Sub importer_Click()
Dim C As Range
Dim Text As String
Dim Firstaddress As String
Dim i As Integer

Text = InputBox("tapez le texte recherché", "recherche", "toto")
If Text = "" Then Exit Sub

i = 1
With Sheets("Feuil1").Range("A1:A300")
Set C = .Find(Text, LookIn:=xlValues)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
Sheets("Feuil2").Range("A" & i & ":C" & i) = Range(C, C.Offset(0, 2)).Value
i = i + 1
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
End With
Set C = Nothing
End Sub

Bien à vous tous.
Coco
 
@

@+Thierry

Guest
Salut Coco, Vincent, le Forum


Huum donc tu travailles avec Excel 97 Coco ! Fallait le dire !!!

Enfin c'est tout ce que je vois qui te ferait des problèmes avec ce code...

Essaies comme ceci, car d'après ce que Michel me ré-apprend d'XL97, il lui faut des Select de partout !

Sub importer_Click()
Dim C As Range
Dim Text As String
Dim Firstaddress As String
Dim i As Integer

Application.ScreenUpdating = False

Text = InputBox("tapez le texte recherché", "recherche", "toto")
If Text = "" Then Exit Sub

i = 1
With Sheets("Feuil1").Range("A1:A300")
Set C = .Find(Text, LookIn:=xlValues)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
Sheets("Feuil2").Select
Sheets("Feuil2").Range("A" & i & ":C" & i) = Sheets("Feuil1").Range(C, C.Offset(0, 2)).Value
i = i + 1
Sheets("Feuil1").Select
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
End With
Set C = Nothing
Application.ScreenUpdating = True

End Sub


Sinon il faudra encore voir autrement...

Plus çà va, plus je conseille à tous et toutes de préciser systématiquement leur version d'Excel / Windows pour éviter ce genre de désagrément.

Bonne Soirée
@+Thierry
 
V

vincent

Guest
Salut coco,Thierry

Je viens ajouter un grain de sable ,j'ai fait un copier coller du code de coco et .......pas de probleme je suis sous 97.(j'ai fait le test dans un classeur vierge avec une recherche de texte et une de chiffre).

je pense qu'il va falloir que coco envoi son fichier pour voir ce qui cloche.

@+Vincent
 
M

michel

Guest
bonsoir Coco , Vincent ,@+Thierry

dans son message du 30-08-03 16:27 , coco indique qu'il travaille sous excel2000


Vincent , pour mon info personnelle , moi qui suis aussi sur excel97 , quel type de bouton tu utilises pour lancer la procédure ? d'avance merci

Bonne soirée à vous tous
Michel
lapin4.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87