Selection de lignes pleines dans un tableau
acidx
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un soucis sur Excel, je m'explique :
j'ai un tableau qui est un bon de commande qui fait 10 lignes mais selon les commandes, elle ne sont pas toujours toutes utilisées (il peux y avoir plus ou moins d'article). Le problème c'est que j'essais de mettre en place une macro pour mettre ce bon de commande dans une autre feuille qui est une sorte d'historique de tout les bons de commande qui sont les uns en dessous des autres. Mais comment la macro peut-elle savoir si elle doit copier que 2 lignes, 5 ou alors les 10 lignes (selon le nombre d'article dans la commande) ?
Avec une seule ligne j'y arrive mais là je ne trouve vraiment pas.
Si quelqu'un a une solution, je suis preneur !
Merci d'avance.
J'ai un soucis sur Excel, je m'explique :
j'ai un tableau qui est un bon de commande qui fait 10 lignes mais selon les commandes, elle ne sont pas toujours toutes utilisées (il peux y avoir plus ou moins d'article). Le problème c'est que j'essais de mettre en place une macro pour mettre ce bon de commande dans une autre feuille qui est une sorte d'historique de tout les bons de commande qui sont les uns en dessous des autres. Mais comment la macro peut-elle savoir si elle doit copier que 2 lignes, 5 ou alors les 10 lignes (selon le nombre d'article dans la commande) ?
Avec une seule ligne j'y arrive mais là je ne trouve vraiment pas.
Si quelqu'un a une solution, je suis preneur !
Merci d'avance.
A voir également:
- Selection de lignes pleines dans un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
La macro peut contenir une boucle qui copie chaque ligne jusqu'à rencontrer une ligne vide, par exemple.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
'
' 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