Coller toute la ligne sous une condition

Statisticien Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Statisticien Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et tous,

De nouveau parmi vous, sollicitant encore une autre fois votre aide. J'en profite pour vous remercier.

je voudrais sous une condition sur la dexième colonne (dans ma feuille source), coller l'entière ligne dans une autre feuille( dans ma feuille cible), j'ai appliqué le code suivant :
Dim i As Integer
Dim dernligne As Long

dernligne = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To dernligne
If Range("B" & i).Value Like "717*" Then Sheets("spfin016").Rows(i).Copy Sheets("new831201").Range("A" & Rows.Count).End(xlUp)(2)

Alors il fait quoi ? il ne copie que la dernière ligne de mon fichier source et il la colle à partir de la deuxième cellule de mon fichier cible.
Alors que je voudrais qu'il copie toutes lignes (dont la Range("B" & i) commence par 717 et non pas uniquement la dernière). Et qu'il la colle dans ma feuille cible, à partir de la première ligne vide et ds la cellule qui figure dans la première colonne.

Une proposition ?


Je vous remercie d'avance.

Cordialement,


EDIT : Ajout des balises de code
A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Satisticien, bonsjour le forum,

Peut-être comme ça, un code très rapide :

Sub Macro1()
Dim S As Object 'déclare la variable S (onglet Spfin016)
Dim N As Object 'déclare la variable N (onglet New831201)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set S = Sheets("spfin016") 'définit l'onglet S
Set N = Sheets("new831201") 'définit l'onglet N
DL = S.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet S
TC = S.Range("A1").CurrentRegion 'définit le tableau TC (à adapter éventuellement)
For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC (en partant de la seconde)
    If TC(I, 2) Like "717*" Then 'condition : si la valeur en colonne 2 (==> B) du tableau TC commence par "717"
        'définit la cellule de destination DEST (A1 si A1 est vide, sinon, la première cellule vide de la colonne A de l'ongle N)
        Set DEST = IIf(N.Range("A1").Value = "", N.Range("A1"), N.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
        DEST.Resize(1, UBound(TC, 2)).Value = Application.Index(TC, I) 'récupère dans dest la ligne du tableau TC
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

-1
Statisticien Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ton aide ThauTheme. Mais dit moi en utilisant ce code :
For i = 1 To 20000
If Cells(i, 2).Value Like "717*" Then Rows(i).Copy Sheets("new831201").Cells(Rows.Count, 1).End(xlUp)(2)
Next

ça marche. Maintenant, ma question : je voudrais copier la ligne i à partir de la deuxième cellule. Comment faire ?
-1