Macro pour copier dans une autre feuille

dblu

XLDnaute Nouveau
Bonjour le forum,

Je suis bloqué dans la création d'une macro (voir fichier en attaché). J'aimerais bien que cette macro copier une ligne du tableau de la feuil1 si au moins une des trois valeurs est égale ou supérieure à 5 et ce dans la feuil2 de ce même classeur.
Si jusqu'à présent mon raisonnement me paraît bon, il manque l'étape qui traiterait le cas où il faudrait écrire plusieurs lignes dans le nouveau tableau de la feuil2. C'est la conceptualisation de cette étape qui me pose problème. De plus, je suppose qu'au niveau syntaxe il y a aussi des erreurs...

S'il y a plus simple comme méthode n'hésitez pas à m'éclairer!
 

Pièces jointes

  • dblu_pommes.xls
    22 KB · Affichages: 131
G

Guest

Guest
Re : Macro pour copier dans une autre feuille

Bonjour,

voici une macro:

Code:
Sub calc()
    Dim ligne As Long
    With Sheets("Feuil1")
        For ligne = 2 To .Range("A" & Rows.Count).End(xlUp).Row
            If .Range("B" & ligne) >= 5 Or .Range("C" & ligne) >= 5 Or .Range("C" & ligne) >= 5 Then
                .Range("A" & ligne & ":D" & ligne).Copy _
                        Sheets("Feuil2").Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 4)
            End If
        Next ligne
    End With
End Sub
A+
 

pierrequimousse

XLDnaute Junior
Re : Macro pour copier dans une autre feuille

Salut, en voici une autre ;)

Sub calc()

Dim i, j As Integer
i = 2 'variable i : numéro de ligne feuille 1
j = 2
With Feuil1

For i = 2 To .[A65536].End(xlUp).Row 'derniere ligne de col A

If (.Range("B" & i).Value > 5) = True Or (.Range("C" & i).Value >= 5) = True Or (.Range("D" & i).Value >= 5) = True Then
Feuil2.Range("A" & j & ":D" & j).Value = .Range("A" & i & ":D" & i).Value
j = j + 1
End If

Next
End With

End Sub

Cordialement,

Pierre
 

Papou-net

XLDnaute Barbatruc
Re : Macro pour copier dans une autre feuille

Bonjour dblu, les participants,

Pour info (et pour le fun), un autre style de boucle :

Code:
Sub calc()

Dim j As Integer
j = 2

With Feuil1
    For Each lg In .UsedRange.Rows 'pour chaque ligne de la colonne A
    If Application.Max(.Range("A" & lg.Row).EntireRow) >= 5 Then 'si la valeur maxi de la ligne est égale ou supérieure à 5
      Feuil2.Range("A" & j & ":D" & j).Value = .Range("A" & lg.Row & ":D" & lg.Row).Value
      j = j + 1
    End If
  Next
End With

End Sub

Cordialement à tous.
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 824
dernier inscrit
frederic.marien@proximus.