Rechercher un mot et copier sa ligne

amelmotiv -  
mikebzh Messages postés 135 Statut Membre -
Bonjour,

J'ai fait un programme pour chercher un mot (exemple directeur) dans une colonne puis si il est trouvé,je copie la ligne correspondante dans une autre feuille.

J'ai reussi à le faire si je cherche une cellule, mais mon programme ne fonctionne pas si je cherche dans une colonne. Pouvez vous me dire quelle est l'erreur?

voici le progamme

Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 10
If Sheets("feuil7").Range("A1").Offset(i, 0).Find(What:="directeur") Is Nothing Then
Else
Sheets("feuil7").Range("A1").Offset(i, 0).Find(What:="directeur").Activate
Sheets("feuil7").Range("A1").Offset(i, 0).EntireRow.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil8").Select
Sheets("feuil8").Range("A1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End If
Next i
End Sub
A voir également:

3 réponses

mikebzh Messages postés 135 Statut Membre 28
 
Salut
Propriété Offset
Pour renvoyer une plage avec un décalage spécifié dans une autre plage, spécifiez Offset(row, column), row et column définissant les décalages de ligne et de colonne.

Pour les lignes tu as décalé en offset(i,0) essayes offset(0,i) pour les colonnes
Sinon ton code est pas joli, joli et il y a moyen de chercher en lignes et colonnes en même temps

Cherches bien (petit info : regardes bien les propriétés de range)

Bon courage
0
amelmotiv
 
Bonjour,

en fait, la macro doit chercher si dans la cellule "A1" il y a le mot directeur, si oui, on colle la ligne dans une autre feuille, sinon on ne fait rien. Puis on repète l'opération jusque la cellule A10. C'est pour ça que j'ai utilisé la fnction offset
0
amelmotiv
 
Je te remercie beaucoup, j'ai compris ce que tu voulais dire, je me suis compliquée la vie pour rien.

Encore merci
0
amelmotiv
 
En fait, j'ai mal regardé donc toujours pas trouver, si je modifie la fonction range, ça copie tout alors que je ne veux que les lignes avec le mot directeur de dans.
0
mikebzh Messages postés 135 Statut Membre 28
 
Je ne comprends plus ce que tu veux faire exactement
0
mikebzh Messages postés 135 Statut Membre 28
 
Peut-être un truc du style

Là je scanne dans chaque ligne les colonnes

[code]
Option Explicit

Private Sub CommandButton1_Click()

Dim zone As Range 'zone de travail
Dim ligne As Range 'ligne
Dim colonne As Range 'colonne
Dim origine As Worksheet 'feuille de recherche
Dim destination As Worksheet 'feuille de copie
Dim lignedest As Integer 'ligne dans feuille copie

Set origine = Worksheets("Feuil1")
Set destination = Worksheets("Feuil2")

Set zone = Range(origine.Cells(1, 1), origine.Cells(1, 1).SpecialCells(xlLastCell))

lignedest = 1
'Pour toutes les lignes de la selection on regarde
For Each ligne In zone.Rows
'si dans une des colonnes
For Each colonne In ligne.Columns
'il y a le mot directeur
If colonne.Cells(1, 1).Value = "directeur" Then
ligne.Copy destination.Cells(lignedest, 1)
lignedest = lignedest + 1
'on a trouvé on a copié et on sort sans regarder le reste des colonnes
Exit For
End If
Next
Next
End Sub
[\code]

Bonne nuit à demain
0