Macro pour copie de données

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ludion62

XLDnaute Nouveau
Bonjour,

Je souhaiterais, par l'intermédiaire d'une macro, copier les lignes d'une feuille vers une autre feuille. Mais je voudrais simplement recopier celles où la quantité est >0.
Je vous ai joint le fichier.
Quelqu'un aurait-il la solution ?

Merci beaucoup ! 🙂
 

Pièces jointes

Re : Macro pour copie de données

Bonjour,

un essai en pièce jointe..

Le code :

Code:
Sub extract()
With Sheets("Données")
    .Range("A1:C" & .[A65000].End(xlUp).Row).Name = "base"
End With
With Sheets("Récap")
    .[E1] = [C1]
    .Range("E2").FormulaR1C1 = ">0"
    Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
        "E1:E2"), CopyToRange:=.Range("A1"), Unique:=False
    .Columns(5).Clear
    .Cells.EntireColumn.AutoFit
End With
End Sub

Le fichier :
 

Pièces jointes

Re : Macro pour copie de données

Re-,

le code commenté :

Code:
Sub extract()
With Sheets("Données")
    .Range("A1:C" & .[A65000].End(xlUp).Row).Name = "base"
            'on détermine une plage, nommée "base" qui va de A1 à
            'Cxx, xx étant la dernière cellule non vide de la colonne A
            'de l'onglet "Données"
End With
            'pour la suite, on va utiliser un filtre élaboré
            'pour cela, il faut une zone de données ("base")
            'une zone de critères (ici E1:E2 de l'onglet "Récap"
            'et une zone d'extraction (ici, A1 de l'onglet "Récap"
With Sheets("Récap")
    .[E1] = [C1] 'on copie l'en-tête de la colonne C ("quantité")
                    'afin d'avoir le même en-tête dans la zone de critères
                    'que dans la base
    .Range("E2").FormulaR1C1 = ">0" 'on met une formule, afin de déterminer
                                    'ce qu'on veut extraire. Ici, on veut
                                    'les données supérieures à 0
    Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
        "E1:E2"), CopyToRange:=.Range("A1"), Unique:=False
                'C'est ici l'extraction par filtre élaboré (regarde dans l'aide
                'comment fonctionne un filtre élaboré
    .Columns(5).Clear   'on nettoie la zone de critères
    .Cells.EntireColumn.AutoFit 'on ajuste la largeur des colonnes
End With
End Sub

Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
181
Réponses
4
Affichages
231
Retour