Selection de lignes pleines dans un tableau
Fermé
acidx
Messages postés
31
Date d'inscription
lundi 9 juillet 2012
Statut
Membre
Dernière intervention
12 novembre 2016
-
12 nov. 2016 à 11:54
yg_be Messages postés 23316 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 - 12 nov. 2016 à 18:43
yg_be Messages postés 23316 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 - 12 nov. 2016 à 18:43
A voir également:
- Selection de lignes pleines dans un tableau
- Tableau croisé dynamique - Guide
- Code ascii tableau - Guide
- Comment faire un tableau - Guide
- Le fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? ✓ - Forum Windows 10
- Trier un tableau excel - Guide
3 réponses
yg_be
Messages postés
23316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
Ambassadeur
1 552
12 nov. 2016 à 12:00
12 nov. 2016 à 12:00
La macro peut contenir une boucle qui copie chaque ligne jusqu'à rencontrer une ligne vide, par exemple.
yg_be
Messages postés
23316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
Ambassadeur
1 552
12 nov. 2016 à 12:40
12 nov. 2016 à 12:40
Je propose ceci, non testé :
Option Explicit Sub test2() ' ' test2 Macro ' Dim fsource As Worksheet, fdest As Worksheet Dim lsource As Long, ldest As Long Set fsource = Sheets("Bon de commande") Set fdest = Sheets("Feuil1") ldest = 1 + fdest.Cells(Rows.Count, "C").End(xlUp).Row 'dernière ligne occupée lsource = 1 Do While fsource.Cells(lsource, 2).Value <> "" 'tant que la deuxième colonne n'est pas vide fdest.Cells(ldest, 3) = fsource.Cells(lsource, 2) fdest.Cells(ldest, 4) = fsource.Cells(lsource, 3) fdest.Cells(ldest, 5) = fsource.Cells(lsource, 4) fdest.Cells(ldest, 6) = fsource.Cells(lsource, 5) lsource = lsource + 1 ldest = ldest + 1 Loop ' 'Sheets("Feuil1").Select 'Rows("7:7").Select 'Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Sheets("Bon de commande").Select 'Range("B10:E10").Select 'Selection.Copy 'Sheets("Feuil1").Select 'Range("C7:F7").Select 'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ ':=False, Transpose:=False 'Application.CutCopyMode = False Sheets("Bon de commande").Select Range("B10").Select End Sub
acidx
Messages postés
31
Date d'inscription
lundi 9 juillet 2012
Statut
Membre
Dernière intervention
12 novembre 2016
12 nov. 2016 à 14:03
12 nov. 2016 à 14:03
Ça ne fonctionne pas, il ne copie toujours que la première ligne ... :/
yg_be
Messages postés
23316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
1 552
12 nov. 2016 à 17:32
12 nov. 2016 à 17:32
Et il y a des données dans la deuxième colonne des lignes suivantes?
Comment déterminer quand s’arrêter de copier? J'ai choisi de continuer tant que la deuxième colonne était non vide. On peut continuer tant qu'une des 4 colonnes est non vide, si tu veux.
Comment déterminer quand s’arrêter de copier? J'ai choisi de continuer tant que la deuxième colonne était non vide. On peut continuer tant qu'une des 4 colonnes est non vide, si tu veux.
acidx
Messages postés
31
Date d'inscription
lundi 9 juillet 2012
Statut
Membre
Dernière intervention
12 novembre 2016
12 nov. 2016 à 17:37
12 nov. 2016 à 17:37
c'est pas une question de colonne, mais de ligne. il faudrait continuer tant qu'une ligne est non vide
yg_be
Messages postés
23316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
Ambassadeur
1 552
12 nov. 2016 à 18:43
12 nov. 2016 à 18:43
Mieux ainsi, cela continue tant qu'une des 4 colonnes (de la ligne) n'est pas vide ?
Option Explicit Sub test2() ' ' test2 Macro ' Dim fsource As Worksheet, fdest As Worksheet Dim lsource As Long, ldest As Long Set fsource = Sheets("Bon de commande") Set fdest = Sheets("Feuil1") ldest = 1 + fdest.Cells(Rows.Count, "C").End(xlUp).Row 'dernière ligne occupée lsource = 1 Do While (fsource.Cells(lsource, 2).Value <> "") or (fsource.Cells(lsource, 3).Value <> "") or (fsource.Cells(lsource, 4).Value <> "") or (fsource.Cells(lsource, 5).Value <> "") 'tant que une des 4 colonnes n'est pas vide fdest.Cells(ldest, 3) = fsource.Cells(lsource, 2) fdest.Cells(ldest, 4) = fsource.Cells(lsource, 3) fdest.Cells(ldest, 5) = fsource.Cells(lsource, 4) fdest.Cells(ldest, 6) = fsource.Cells(lsource, 5) lsource = lsource + 1 ldest = ldest + 1 Loop ' 'Sheets("Feuil1").Select 'Rows("7:7").Select 'Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Sheets("Bon de commande").Select 'Range("B10:E10").Select 'Selection.Copy 'Sheets("Feuil1").Select 'Range("C7:F7").Select 'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ ':=False, Transpose:=False 'Application.CutCopyMode = False Sheets("Bon de commande").Select Range("B10").Select End Sub
12 nov. 2016 à 12:02
12 nov. 2016 à 12:04
12 nov. 2016 à 12:25
'
' test2 Macro
'
'
Sheets("Feuil1").Select
Rows("7:7").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Sheets("Bon de commande").Select
Range("B10:E10").Select
Selection.Copy
Sheets("Feuil1").Select
Range("C7:F7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Bon de commande").Select
Range("B10").Select
End Sub
---------------------------------------------------------------------------------------------------------------------------------
Voilà pour le moment j'ai ça pour une ligne