Copier des lignes sur une autre feuille sous conditions [Résolu/Fermé]

Signaler
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
-
Messages postés
15238
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 juin 2020
-
Bonjour,

Je souhaiterai copier des données sur une autre feuille de mon classeur en incluant les conditions :


S'il trouve dans la colonne A de ma feuille "Source", le chiffre 7, il doit prendre toutes les lignes au dessus (de 1 à 6 inclus) et les copier sur ma feuille "Tranche" en cellule A7. Autre condition :


S'il trouve dans la colonne A de ma feuille "Source", le chiffre 6, il doit prendre toutes les lignes en dessous (de 7 à ....) et les copier sur ma feuille "Tranche" en cellule A23.
Je me mélange les pédales avec les boucles..et conditions..
Merci pour votre aide.

1 réponse

Messages postés
15238
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 juin 2020
1 306
Bonjour,

Le chiffre 6 ou 7 n'est qu'une seule fois dans la colonne A??
Messages postés
15238
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 juin 2020
1 306
Bonjour,

Enfin de compte dans la colonne A, des numeros de 1 a x et toujours les memes ??

Code modifie, sauf subtilite encore ignoree

Sub Tranche()
    Dim Plage As Range

    With Worksheets("Source")
        'recherche valeur 6
        R = 6
        Nb = Application.CountIf(.Columns(1), R)    'Nb fois R
        If Nb > 0 Then
            lig = .Columns(1).Find(R, .Cells(1, 1), , xlWhole).Row  'ligne de R
            dercol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column 'derniere colonne de la feuille
            If lig < 7 Then LD = 2 Else LD = lig - 6        'si lig<7
            Set Plage = .Range(.Cells(LD, 1), .Cells(lig, dercol))      'mise en memoire de la plage de cellules
            Worksheets("Tranche").Range("A7").Resize(6, dercol) = Plage.Value       'copie plage
        End If
        'recherche valeur 7
        R = 7
        Nb = Application.CountIf(.Columns(1), R)
        If Nb > 0 Then
            lig = .Columns(1).Find(R, .Cells(1, 1), , xlWhole).Row
            derlig = .Range("A" & Rows.Count).End(xlUp).Row     'derniere cellule non vide colonne A
            LF = derlig - lig       'taille plage en "longueur
            dercol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
            Set Plage = .Range(.Cells(lig, 1), .Cells(derlig, dercol))
            Worksheets("Tranche").Range("A23").Resize(LF, dercol) = Plage.Value
        End If
    End With
End Sub
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018

Merci pour cette modification mais à l'exécution du code, il manque sur la première tranche la ligne où on trouve le "6" et sur la deuxième tranche la dernière ligne où on trouve le "9".
Ci dessous le résultat du code :


Ci-dessous ce que je souhaite obtenir :
Messages postés
15238
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 juin 2020
1 306
Re,

Ok, pourtant simple a modifier!!

Sub Tranche()
    Dim Plage As Range

    With Worksheets("Source")
        'recherche valeur 6
        R = 6
        Nb = Application.CountIf(.Columns(1), R)    'Nb fois R
        If Nb > 0 Then
            lig = .Columns(1).Find(R, .Cells(1, 1), , xlWhole).Row  'ligne de R
            dercol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column 'derniere colonne de la feuille
            If lig < 7 Then LD = 2 Else LD = lig - 6        'si lig<7
            Set Plage = .Range(.Cells(LD, 1), .Cells(lig, dercol))      'mise en memoire de la plage de cellules
            Worksheets("Tranche").Range("A7").Resize(7, dercol) = Plage.Value       'copie plage
        End If
        'recherche valeur 7
        R = 7
        Nb = Application.CountIf(.Columns(1), R)
        If Nb > 0 Then
            lig = .Columns(1).Find(R, .Cells(1, 1), , xlWhole).Row
            derlig = .Range("A" & Rows.Count).End(xlUp).Row     'derniere cellule non vide colonne A
            LF = (derlig - lig) + 1     'taille plage en "longueur
            dercol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
            Set Plage = .Range(.Cells(lig, 1), .Cells(derlig, dercol))
            Worksheets("Tranche").Range("A23").Resize(LF, dercol) = Plage.Value
        End If
    End With
End Sub
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018

Merci beaucoup et je comprends le code maintenant avec tes modifications.. Il était temps !!
Je te souhaite de bonne fêtes de fin d'année.
A très bientôt, ton aide a été très précieuse !
Messages postés
15238
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 juin 2020
1 306
Bonjour,

Bonnes fetes

Bye….