GTmacrodeb
Expert
Bonjour à toute la communauté,
Je viens vers vous car je souhaite avoir des précisions pour améliorer ce code que je vous propose.
[cpp]
Option Explicit
Sub linecopy(ByVal line As Range, ByRef Target As Range, Optional clear As Boolean) '// nouvelle variable
Dim ws_prix_m As Worksheet
Set ws_prix_m = Worksheets("Prix matière")
line.EntireRow.Copy Destination:=Target
Set Target = Target.Offset(1)
End Sub
Sub Devis()
Dim ws_prix_m As Worksheet
Dim ws_devis As Worksheet
Dim plage_destination As Range
Dim i As Long
Dim j As Long
Set ws_prix_m = Worksheets("Prix matière")
Set plage_destination = Worksheets("Devis").Rows(1) 'Feuille vierge 1ère ligne
Set ws_devis = Worksheets("Devis")
For i = 3 To 23
For j = 7 To 8
If ws_prix_m.Cells(i, j).Value <> 0 Then
linecopy ws_prix_m.Rows(i), plage_destination, True
End If
Next
Next
End Sub[/cpp]
1- Ce code est clairement à optimiser mais avant de finaliser ma base de données, je souhaite déjà savoir ce qu'il est possible de réaliser. C'est pour cela que la macro est appliquée jusqu'à la ligne 23.
2- Je pense avoir déclaré dés variables inutilement mais je ne parviens pas à rédiger la fonction If (ligne29) autrement. Ce que je souhaiterais c'est sélectionner la ligne à partir du moment où la cellule G ou H est différente de 0.
3- Pour l'instant, les lignes sont copiées sur une nouvelle feuille dès la 1ère ligne. Par la suite, je souhaiterais que les lignes se copient dans un document existant.
Comment indiquer en macro la ligne à partir de laquelle il peut copier ? Dans mon cas, je souhaiterais qu'il commence à copier en dessous d'une ligne qui contient le mot "MATERIEL" en colonne A.
Comment intégrer le nombre de lignes correspondant au nombre de lignes sélectionnées ?
4- Le tableau dans lequel je souhaite copier ces lignes a une structure différente. Est-il possible de sélectionner uniquement certaines colonnes selon la condition et de les coller dans un ordre différent ?
Merci d'avance pour votre aide à tous.
GTmacrodeb.
Je viens vers vous car je souhaite avoir des précisions pour améliorer ce code que je vous propose.
[cpp]
Option Explicit
Sub linecopy(ByVal line As Range, ByRef Target As Range, Optional clear As Boolean) '// nouvelle variable
Dim ws_prix_m As Worksheet
Set ws_prix_m = Worksheets("Prix matière")
line.EntireRow.Copy Destination:=Target
Set Target = Target.Offset(1)
End Sub
Sub Devis()
Dim ws_prix_m As Worksheet
Dim ws_devis As Worksheet
Dim plage_destination As Range
Dim i As Long
Dim j As Long
Set ws_prix_m = Worksheets("Prix matière")
Set plage_destination = Worksheets("Devis").Rows(1) 'Feuille vierge 1ère ligne
Set ws_devis = Worksheets("Devis")
For i = 3 To 23
For j = 7 To 8
If ws_prix_m.Cells(i, j).Value <> 0 Then
linecopy ws_prix_m.Rows(i), plage_destination, True
End If
Next
Next
End Sub[/cpp]
1- Ce code est clairement à optimiser mais avant de finaliser ma base de données, je souhaite déjà savoir ce qu'il est possible de réaliser. C'est pour cela que la macro est appliquée jusqu'à la ligne 23.
2- Je pense avoir déclaré dés variables inutilement mais je ne parviens pas à rédiger la fonction If (ligne29) autrement. Ce que je souhaiterais c'est sélectionner la ligne à partir du moment où la cellule G ou H est différente de 0.
3- Pour l'instant, les lignes sont copiées sur une nouvelle feuille dès la 1ère ligne. Par la suite, je souhaiterais que les lignes se copient dans un document existant.
Comment indiquer en macro la ligne à partir de laquelle il peut copier ? Dans mon cas, je souhaiterais qu'il commence à copier en dessous d'une ligne qui contient le mot "MATERIEL" en colonne A.
Comment intégrer le nombre de lignes correspondant au nombre de lignes sélectionnées ?
4- Le tableau dans lequel je souhaite copier ces lignes a une structure différente. Est-il possible de sélectionner uniquement certaines colonnes selon la condition et de les coller dans un ordre différent ?
Merci d'avance pour votre aide à tous.
GTmacrodeb.