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

XL 2016 Extraire des données

ROI1482

XLDnaute Nouveau
Bonjour,
A partir d'une feuille "Base" contenant des données j'extrait celles commençant par CLXXXX et les recopie dans la feuille "Result" pour cela j'utilise le filtrage aavancé.
N'existerait il pas une fonction pour simplifier le processus.
Je joint fichier exemple
Merci
 

Pièces jointes

  • Extrait.xlsx
    69 KB · Affichages: 7

Franc58

XLDnaute Occasionnel
Salut, une suggestion avec utilisation de tableau en mémoire pour plus de performance en cas de beaucoup de lignes à traiter.

VB:
Sub CopierCollerLignes()
    Dim wsBase As Worksheet
    Dim wsResult As Worksheet
    Dim data As Variant
    Dim i As Long
    Dim ref As String
    Dim startRow As Long
    Dim endRow As Long
    
    Set wsBase = ThisWorkbook.Sheets("Base")
    Set wsResult = ThisWorkbook.Sheets("Result")
    
    ref = wsResult.Range("B2").Value
    
    wsResult.Range("C2:Q" & wsResult.Cells(wsResult.Rows.Count, "D").End(xlUp).Row).ClearContents
    
    data = wsBase.Range("A2:O" & wsBase.Cells(wsBase.Rows.Count, "A").End(xlUp).Row).Value
    
    Application.ScreenUpdating = False
    
    For i = 1 To UBound(data, 1)
        ' Si la cellule commence par la référence
        If Left(data(i, 1), Len(ref)) = ref Then
            ' Copier la ligne du tableau dans "Result"
            wsResult.Range("C" & wsResult.Cells(wsResult.Rows.Count, "C").End(xlUp).Row + 1 & ":Q" & wsResult.Cells(wsResult.Rows.Count, "C").End(xlUp).Row + 1).Value = Application.Index(data, i, 0)
        ElseIf Left(data(i, 1), Len(ref)) > ref Then
            ' Si la cellule contient une valeur supérieure à la référence, quitter la boucle
            Exit For
        End If
    Next i
    
    Set wsBase = Nothing
    Set wsResult = Nothing
    
End Sub
 

Discussions similaires

Réponses
32
Affichages
857
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…