Copier des lignes sur une autre feuille sous conditions
Résolu/Fermé
anana49
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
-
10 déc. 2018 à 12:37
f894009 Messages postés 16904 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 18 mars 2023 - 20 déc. 2018 à 15:09
f894009 Messages postés 16904 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 18 mars 2023 - 20 déc. 2018 à 15:09
A voir également:
- Copier des lignes sur une autre feuille sous conditions
- Copier une vidéo youtube - Guide
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
- Super copier - Télécharger - Gestion de fichiers
- Supprimer une feuille word - Guide
- Recherchev dans une autre feuille ✓ - Forum Excel
1 réponse
f894009
Messages postés
16904
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2023
1 678
13 déc. 2018 à 17:16
13 déc. 2018 à 17:16
Bonjour,
Le chiffre 6 ou 7 n'est qu'une seule fois dans la colonne A??
Le chiffre 6 ou 7 n'est qu'une seule fois dans la colonne A??
13 déc. 2018 à 17:59
13 déc. 2018 à 18:28
Autre detail, les chiffres 6 et 7 peuvent etre dans la colonne A
15 déc. 2018 à 08:19
une facon de voir, adaptez en fonction de vos 1 a 6 et 7 a ..... (pas bien compris!!!!!):
Sub Tranche() Dim Plage As Range With Worksheets("Source") 'recherche valeur 7 R = 7 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 < 8 Then LD = 1 Else LD = lig - 7 '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 6 R = 6 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 Sub18 déc. 2018 à 10:34
Merci pour votre code. Il fonctionne sauf qu'il me colle les lignes de 1 à 5 en A7 sur ma feuille "Tranche" au lieu des lignes de 1 à 6 pour la 1ère condition et pour la deuxième condition, il me colle les lignes de 6 à ++ sur la feuille "Tranche" en A23 au lieu des lignes de 7 à ++.
J'ai essayé de modifier en fonction mais je ne comprends pas le code ???
J'ai fait un autre code mais j'aurais préféré adapter le votre. Pour votre compréhension, je vous joins mon code :
Sub CopierTranches() Dim xlWsh1 As Object, xlWsh2 As Object Dim L As Long Dim lgDerlig1 As Long Dim lgDerLig2 As Long 'feuilles du traitement Set xlWsh1 = Worksheets("Source") Set xlWsh2 = Worksheets("Tranche") 'récupération du dernier enregistrement de chaque feuille lgDerlig1 = xlWsh1.UsedRange.Rows.Count lgDerLig2 = xlWsh2.UsedRange.Rows.Count With xlWsh1 'lecture du classeur source à parir de la ligne 1 For L = 1 To lgDerlig1 ' fin du traitement si valeur est trouvé en cellule A If .Cells(L, 1).Value = "7" Then Exit For Else 'copie des lignes de la feuille 1 si cellule A n'est pas vide If .Cells(L, 1).Value <> "" Then .Rows(L).Copy Destination:=xlWsh2.Range("A7").Rows(lgDerLig2) lgDerLig2 = lgDerLig2 + 1 End If End If Next L For L = 8 To lgDerlig1 ' fin du traitement si valeur est trouvé en cellule A If .Cells(L, 1).Value = "6" Then Exit For Else 'copie des lignes de la feuille 1 si cellule A n'est pas vide If .Cells(L, 1).Value <> "" Then .Rows(L).Copy Destination:=xlWsh2.Range("A16").Rows(lgDerLig2) lgDerLig2 = lgDerLig2 + 1 End If End If Next L End With End SubModifié le 18 déc. 2018 à 11:10
Ok, je modifie, mais demande un peu plus d'explications pour:
en A23 au lieu des lignes de 7 à ++., c'est quoi ligne 7, la ligne ou est le 7 ou ?????