Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Cherche et Copie

  • Initiateur de la discussion Initiateur de la discussion ryadus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

ryadus

Guest
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
 
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:
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
 
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
 
Re : Cherche et Copie

Merci pour tes explications
Est ce que tu peux être plus précis sur la fonction Range("1:2") stp?
Que signifie le 1 et le 2?
Est ce que c'est genre la ligne 1 et la colonne 2 ???

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
788
Réponses
4
Affichages
281
Réponses
5
Affichages
914
Réponses
4
Affichages
735
Réponses
8
Affichages
390
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…