|
|
|
|
Bonjour,
J'ai un tableau Excel de X colonnes et Y lignes. Le but est de pouvoir inserer dans une inputBox un mot de recherche, et que la macro trouve chaque ligne ou ce mot est présent, copie toutes ces lignes, et les colles dans une 3ème fenêtre.
Novice en VBA, j'ai déjà fais une ébauche qui me permet de trouver ou le mot est ( pour l'instant il le trouve une foi et cherche pas plu loin :S ), il active toute la ligne, la copie ... et après ne veux pas l'insérer dans la 3ème page!
Je souhaiterai également savoir si il existe un code permettant de rechercher juste dans les cellules occupé, et non sur toute la feuille.
Ci dessous, le code que j'ai réussi a tapé :
Public Sub CommandButton1_Click()
Dim a As String
a = InputBox("quel mot recherchez vous ?")
Range("h16") = a
For sh = 1 To Sheets.Count
With Sheets(sh).Range("a1:iv6553")
Set t = .Find(Sheets(1).Range("h16").Value, LookIn:=xlValues)
If Not t Is Nothing Then
Sheets(sh).Activate
b = t.Address
Range(b).Activate
b = ActiveCell.EntireRow.Select
Selection.Copy
Sheets("Recherche").Select
Range("A1").Select
ActiveRange.EntireRow.Select
Selection.Paste
End If
Exit Sub
End With
Next
End Sub
Le tout étant bien brouillon, j'espère pouvoir trouver qqn qui pourrais m'aider !
Merci d'avance!
Configuration: Windows XP Firefox 3.0.11
Après vérification, ActiveSheet.Paste fonctionne, il suffisais d'agrandir les ligne dans la 3ème feuille.
|
Alors pour régler le problème de toujours coller dans la même ligne tu peux sélectionner ta cellule A1 de ta 2e feuille par Range("A1").Select.
Ensuite tu places le code suivant : Do While ActiveCell <> "" 'tant que la cellule active n'est pas vide ActiveCell.Offset(0,1).Select 'tu sélectionnes la cellule (donc la ligne) d'en dessous Loop Ceci devrait te permettre de coller tes lignes les unes en dessous des autres. Pour le problème d'effectuer la recherche plusieurs fois, je vais me pencher dessus ce weekend. Cordialement. Si l'on devait enfermer tous les cons dans des placards, il n'y aurait plus personne pour fermer les portes. Chossette un jour, chossette toujours ! |
Bonjour,
|
Bonjour,
|
Bonjour
Public Sub CommandButton1_Click()
Dim mot As String
Dim cellule As Range
Dim sh as byte 'maxi 255 feuilles
'première lig vide dans rech gcs
With Sheets("Recherche GCS")
derlig = Range("A65536").End(xlUp).Row + 1
End With
mot = InputBox("quel mot recherchez vous ?")
If mot = "" Then: Exit Sub 'gère le vide ou l'appui sur le bouton rouge
For sh = 1 To Sheets.Count
With Sheets(sh).Cells
Set cellule = .Find(mot, LookIn:=xlValues)
If Not cellule Is Nothing Then
'copie la ligne
.Rows(cellule.Row).Copy Sheets("Recherche GCS").Cells(derlig, 1)
End If
End With
derlig = derlig + 1
Next
set cellule=nothing
Sheets("Recherche GCS").activate
End Sub
Cordialement, Michel |
Bonjour,
|
Bonjour,
|
OK,
|
Je vais essayer de mieu poser ma situation, peutêtre que cela aidera.
|
Public Sub CommandButton1_Click()
|
Re,
Private Sub CommandButton1_Click()
Dim mot As Variant
Dim ligvide As Long, derlig As Long
Dim lig As Long
mot = InputBox("nom?")
If mot = "" Then Exit Sub
'Range("H16") = mot '???? fera recopier la ligne 16 dans rech gcs
'-----initialisations
'première ligne vide dans rech gcs
ligvide = Sheets("recherche gcs").Range("A65536").End(xlUp).Row + 1
'dernière ligne de gcs où il y a le mot
derlig = Cells.Find(mot, , xlFormulas, , xlByRows, xlPrevious).Row
lig = 0
While lig < derlig
'détection d 'une ligne avec mot
lig = Cells.Find(mot, Cells(lig + 1, 1)).Row
'copie la ligne en rech gcs
Rows(lig).Copy Sheets("recherche gcs").Cells(ligvide, 1)
ligvide = ligvide + 1
Wend
End Sub
fichier test
http://cjoint.com/?hgonMxdvnU
question à 1000 €: si le 2) mot est toto, quelles lignes recopier? toutes ou seulement celes ou il n'y avait pas "tata" ? je te laisse chercher... Cordialement, Michel |
Bonjour,
|
Question à 1000 €
|