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

Signaler
Messages postés
8
Date d'inscription
samedi 4 janvier 2020
Statut
Membre
Dernière intervention
6 janvier 2020
-
M-12
Messages postés
651
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
12 janvier 2020
-
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

3 réponses

Messages postés
651
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
12 janvier 2020
104
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
Messages postés
651
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
12 janvier 2020
104
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
Messages postés
8
Date d'inscription
samedi 4 janvier 2020
Statut
Membre
Dernière intervention
6 janvier 2020

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 ?