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

Fermé
Dedudelefabs Messages postés 8 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 janvier 2020 - Modifié le 5 janv. 2020 à 23:42
M-12 Messages postés 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 - 6 janv. 2020 à 07:14
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 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 299
Modifié le 6 janv. 2020 à 07:16
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 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 299
Modifié le 6 janv. 2020 à 06:16
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 samedi 4 janvier 2020 Statut Membre Dernière intervention 6 janvier 2020
6 janv. 2020 à 07:09
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