Recherche d'un terme dans une colonne et copie de la ligne correspondante

Dedudelefabs Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

Dans une de mes pages, j'ai encodé une macro effectuant une recherche sur un terme précis dans une colonne (M). A chaque fois que je trouve ce terme, je souhaiterais copier la ligne correspondante de la colonne A à L uniquement sur une feuille spécifique ou j'ai demandé d'abord l'insertion d'une ligne pour ne pas écraser l'info précédente (si vous avez autre chose à proposer pour ne pas passer par cette phase, je suis preneur). Ensuite je souhaiterais revenir sur le feuille initiale, sélectionner la ligne sur laquelle je m'étais arrêté de A à M pour l'effacer avant de continuer la recherche dans le reste de la colonne M.

Voici le code testé sur base de morceaux trouvé sur le net :

Sub Encodage()
Dim cell As Range
Sheets("Encodage").Select
Application.ScreenUpdating = False
For Each cell In Sheets("Encodage").Range("M3:M" & Sheets("Encodage").Range("M65536").End(xlUp).Row)
If cell.Value = "ruche1" Then
Sheets("Ruche 1").Select
Rows("5:5").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Sheets("Encodage").Select
cell.EntireRow.Copy Destination:=Sheets("Ruche 1").Rows(5)
Sheets("Encodage").Select
Rows("3:3").Select
Application.CutCopyMode = False
Selection.ClearContents

End If
Next
Application.ScreenUpdating = True
End Sub


- la sélection de la ligne à copier se fait sur toute la ligne (cell.EntireRow.Copy) et non de A à L
- Le retour sur la feuille d'origine pour effacer la ligne de A à M ne se fait pas sur la bonne ligne (celle que je viens de copier après avoir trouvé le terme recherché)

Pourriez vous corriger mon code SVP ?

Merci
A voir également:

3 réponses

M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285
 
Re,

Je ne suis pas devin et j'ai modifié suivant le code placé dans le post
Sur mon écran, je ne vois pas ton écran,
alors....

Sheets("Encodage").Rows(lig).ClearContents
2
M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285
 
Bonjour

Teste avec ce code
Option Explicit

Sub Encodage()
Dim cell As Range, lig%
Sheets("Encodage").Activate
Application.ScreenUpdating = False
  For Each cell In Sheets("Encodage").Range("M3:M" & Sheets("Encodage").Range("M65536").End(xlUp).Row)
    If cell.Value = "ruche1" Then
      lig = cell.Row
      Sheets("Ruche 1").Rows("5:5").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      Sheets("Encodage").Range(Cells(lig, "A"), Cells(lig, "L")).Copy Destination:=Sheets("Ruche 1").Rows(5)
      Sheets("Encodage").Rows("3:3").ClearContents
    End If
  Next
Application.ScreenUpdating = True
End Sub
1
Dedudelefabs Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci M-12 on y est presque.
Ca copie ce que ca doit copier au bon endroit. Le problème est l'effacement. Il efface uniquement la première ligne de la page d'origine, la ligne 3 (qui contient justement dans mon test le mot ruche1) puis quand il passe sur la 3ème par exemple, il la copie mais ne l'efface pas... le Clear content s'applique à 3:3 (ca veut dire ligne 3 ??) or il devrait s'appliquer à la ligne qu'il vient de trouver et qu'il vient de copier or celle ci varie à chaque fois. Comment donc modifier cela ?
0