Cherche et Copie

ryadus

XLDnaute Junior
Bonjour le Forum;

Je voulais faire une macro qui me cherche une valeur et lorsqu'il l'a trouve il me copie la ligne vers une autre feuille. mais sa me bug, est ce que queqlun pourrait voir se qui cloche?

Merci

Code:
Sub ChercheCopieLigne()
Dim j, i, val As Variant
 
 With Sheets("Feuil1")
    For j = 2 To .Range("A51").End(xlUp).Row
        val = Cells(j, 1).Value
 
     With Sheets("Sortie")
        For i = 1 To .Range("A65536").End(xlUp).Row
          If LCase(.Cells(i, 1).Value) = LCase(val) Then
                Rows("i:i").Select
                Selection.Copy
                Sheets("Feuil1").Select
                Range("j:j").Select
                ActiveSheet.Paste
            End If
        Next i
     End With
 
    Next j
 End With
End Sub
 

JeanMarie

XLDnaute Barbatruc
Re : Cherche et Copie

Re...

En simplifiant la commande de copier/coller
Code:
Sub ChercheCopieLigne()
Dim j, i, val As Variant
 
 With Sheets("Feuil1")
    For j = 2 To .Range("A51").End(xlUp).Row
        val = Cells(j, 1).Value
 
     With Sheets("Sortie")
        For i = 1 To .Range("A65536").End(xlUp).Row
          If LCase(.Cells(i, 1).Value) = LCase(val) Then
                .Range("A" & i).EntireRow.Copy Destination:=Sheets("Feuil1").Range("A" & j).EntireRow
          End If
        Next i
     End With
 
    Next j
 End With
End Sub
en utilisant la fonction Match
Code:
Sub ChercheCopieLigne()
Dim j, i, val As Variant
 
 With Sheets("Feuil1")
    For j = 2 To .Range("A51").End(xlUp).Row
        val = Cells(j, 1).Value
 
     With Sheets("Sortie")
        i = Application.Match(val, .Range("A:A"), 0)
        If Not IsError(i) Then
          .Range("A" & i).EntireRow.Copy Destination:=Sheets("Feuil1").Range("A" & j).EntireRow
        End If
     End With
 
    Next j
 End With
End Sub
PS : j'ai rajouté une gestion d'erreur dans le 2ème code

@+Jean-Marie
 
Dernière édition:

ryadus

XLDnaute Junior
Re : Cherche et Copie

Ok merci,
sa m'aide à decouvrir de nouvel fonction.

Si j'ai bien compris:
Code:
i = Application.Match(val, .Range("A:A"), 0)
fait la recherche de la valeur val et affecte la position à i, mais elle recherche dans la colonne A ou la ligne A ?

Merci
 

JeanMarie

XLDnaute Barbatruc
Re : Cherche et Copie

Re...

Cela dépend de la plage spécifiée, comme elle correspond à la colonne A, la recherche est verticale, si la plage est range("1:1") la recherche aurait été horizontale.

La largeur de la plage spécifiée ne peut être que d'une unité, ces deux exemples de fonctionnent pas range("1:2") ou range("A:B").

@+Jean-Marie
 

Discussions similaires

Réponses
11
Affichages
298

Statistiques des forums

Discussions
312 321
Messages
2 087 253
Membres
103 498
dernier inscrit
FAHDE