Rechercher un mot et copier sa ligne
amelmotiv
-
mikebzh Messages postés 135 Statut Membre -
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
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:
- Rechercher un mot et copier sa ligne
- Partager photos en ligne - Guide
- Trousseau mot de passe iphone - Guide
- Identifiant et mot de passe - Guide
- Rechercher un mot dans word et le remplacer - Guide
- Rechercher ou entrer l'adresse - Guide
3 réponses
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
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
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
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
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
Encore merci