Copier ligne sur une autre feuille avec condition

popcorn

XLDnaute Occasionnel
Bonjour le forum,

J'ai une colonne qui contient plusieurs fois la même valeur, une référence.
Je souhaiterai copier les lignes dont les cellules de cette colonne sont identiques sur une autre feuille.
Une feuille par référence.

J'ai un bout de code qui me permet d'extraire les lignes après avoir saisi la référence dans une inputbox.

J'aimerai que la macro détecte les cellules identiques, copie les lignes et creer une feuille par référence, sans avoir à saisir sa valeur.

Code:
Sub extraction()
Dim c As Range
Dim box As String
Dim derlig As Long
box = InputBox("Saisie du numero de palette : ", "Palette")
    If box <> "" Then
    With Sheets("Liste")
           With ActiveSheet
        If Not .AutoFilterMode Then .Range("B1").AutoFilter
        End With
            'la ligne de la dernière cellule remplie de la colonne B de feuille Base
            derlig = .Cells(.Rows.Count, "A").End(xlUp).Row
            With .Range("B2:B" & derlig)
                'On filtre sur la colonne 2 de la feuille Liste, en prenant comme critère la valeur de box
              .AutoFilter Field:=2, Criteria1:=box
                'On copie les lignes issues du filtre auto
                .SpecialCells(xlCellTypeVisible).EntireRow.Copy
            End With
            'On enlève notre filtre automatique
            .AutoFilterMode = False
        End With
               Worksheets.Add(After:=Worksheets(Worksheets.Count)).Paste
              ActiveSheet.Name = Range("B2")
              Columns.AutoFit
        End If
End Sub

Merci de votre aide.
 

Pièces jointes

  • test_copie_ligne.xlsm
    2.6 MB · Affichages: 51

DoubleZero

XLDnaute Barbatruc
Bonjour, popcorn, Lone-wolf :), le Forum,

Une suggestion en pièce jointe, avec l'ajout d'un "Sommaire" afin de naviguer plus aisément entre les multiples onglets.

A bientôt :)
 

Pièces jointes

  • 00 - popcorn - Onglets + sommaire créer.xlsm
    2.7 MB · Affichages: 57

Lone-wolf

XLDnaute Barbatruc
Bonjour DoubleZero :), popcorn :) , le Forum

@ DoubleZero: je viens de faire un test, la macro est fonctionnel mais chez moi en tout cas, les 4 premières secondes excel plante puis affiche les onglets. Je ne sais pas si tu peux y remédier, peut-être en passant par un tableau.
 

popcorn

XLDnaute Occasionnel
Bonjour Lone-wolf, DoubleZero,

Merci de passer par la.
Oui je travaille sur Mac, j'ai des soucis de portabilité parfois, le fichier final sera sur un Windows. Étant apprenti sorcier en vba ça aide pas mais ça va, je m'en sors a peu prés pour ce que je fais.

J'ai peut être pas été assez clair Lone-Wolf. Je comprend bien qu'excel ne peut pas deviner, mais si l'on imagine que l'on parcours chaque cellule de la colonne B (mes références) et lorsque qu'une valeur est plus de 2 fois alors, (on stocke la référence en variable) et on copie toutes les lignes correspondante dans une nouvelle feuille.

DoubleZero, merci c'est super ce que tu as fait, je pensais faire une inputbox pour rechercher le box en question mais un sommaire c'est une très bonne idée.

Je vais regarder ton code, j'ai juste survolé pour l'instant.
Je me rend compte que j'ai trop de référence unique et comme décrit plus haut, je vais plutôt créer des feuilles seulement si il y a 2 références identiques pour limiter le nombre de feuille.
Pour être plus concret, une référence correspond à une palette (composé de plusieurs articles) et il arrive parfois que j'ai une référence par article, pour le moment celle ci ne m’intéresse pas.

Encore et toujours merci pour votre aide.
 

DoubleZero

XLDnaute Barbatruc
Re-bonjour,
... chez moi en tout cas, les 4 premières secondes excel plante puis affiche les onglets. Je ne sais pas si tu peux y remédier, peut-être en passant par un tableau.
O:(:(:(:(:(:(h : utiliser un tableau ? Il ne faut pas, malheureusement, compter sur m:oops:i !

Je ne rencontre pas le problème évoqué.

popcorn, je vais tenter de :
créer des feuilles seulement si il y a 2 références identiques pour limiter le nombre de feuille.
A bientôt :)
 

popcorn

XLDnaute Occasionnel
Bonsoir,

Je suis sur portable aussi, 8Go de mémoire et je n'ai pas de problème non plus avec la macro de Doublezero.

Je vais être pas mal occupé cette semaine mais je vais essayer d'avancer un peu.
Je ne sais pas si c'est très académique mais je pensais supprimer toutes les feuilles crée qui contiennent seulement 2 lignes.

A bientôt.

Merci
 

DoubleZero

XLDnaute Barbatruc
Re-bonjour,
...je vais plutôt créer des feuilles seulement si il y a 2 références identiques pour limiter le nombre de feuille...
Une nouvelle version en pièce jointe.

N. B. : le fichier original doit comporter des caractères spéciaux qui ralentissent l'exécution de la macro présente dans le fichier déposé en [URL='https://www.excel-downloads.com/threads/copier-ligne-sur-une-autre-feuille-avec-condition.20014970/#post-20111193']#3[/URL].

A bientôt :)
 

Pièces jointes

  • 00 - popcorn - Onglets + sommaire créer v2.xlsm
    180.4 KB · Affichages: 47

popcorn

XLDnaute Occasionnel
Merci DoubleZero,

J'ai bidouiller un truc aussi grâce à ton code précédent, je compte le nombre de ligne dans chaque onglet et l'inscrit dans H1.
Ensuite je supprime toutes les feuilles qui ont une valeur en dessous de ce que je souhaite.
Je suis loin d’être expert en vba, du coup je bricole comme je peux. Je vais regarder ton code de plus prés car ma méthode de créer et ensuite supprimer n'est pas le plus judicieux.

J'aurais une question, pourquoi tu nomme les onglet avec en prefixe "._" ??
J'ai essayé sans et cela fonctionne mais j'imagine qu'il y a une raison.

Je veux pas m’éloigner du sujet initial mais tu m'as inspiré avec ton sommaire, je pourrais m'en servir de synthèse avec le nombre d'article, le prix.. dans les colonnes B,C ainsi de suite. J'essaye de récupérer la valeur de H1 de chaque feuille mais en vain..

j'ai prix exemple du code dans sommaire :

Code:
Range("B" & Rows.Count).End(xlUp)(2) = Worksheets("o.Name").Range("H1").Value

Je bloque car de cette manière il va chercher la valeur de H1 de la feuille nommé o.name qui n'existe pas.

Merci pour ton aide, c'est vraiment enrichissant.
 

Pièces jointes

  • Onglets + inputbox article mini + sommaire créer.xlsm
    2.7 MB · Affichages: 29

DoubleZero

XLDnaute Barbatruc
Bonjour, popcorn, Lone-wolf :), le Forum,
... pourquoi tu nomme les onglet avec en prefixe "._" ?...
Afin de ne pas lister les onglets devant être préservés d'une suppression. Il serait fastidieux d'exclure les onglets "a", "b", "c", "d"...

N. B. : ne pas placer le code destiné à supprimer certains onglets dans "ThisWorkbook" mais dans un module.

Une autre version en pièce jointe.

A bientôt :)
 

Pièces jointes

  • 00 - popcorn - Onglets + sommaire créer v3.xlsm
    197.5 KB · Affichages: 39

Si...

XLDnaute Barbatruc
Salut

On évite souvent les errements en ne travaillant pas au coup par coup, n’est-ce pas ÓÒ ?

Tu donnes les aboutissants mais pas les tenants. Es-tu obligé de créer 36 000 onglets ?
Si ... oui, :):D t'a donné une voie à suivre, si ... non, voilà un exemple avec seulement 2 Feuilles.
Bien sûr il faudra savoir quoi faire de cela !
 

Pièces jointes

  • Filtre Base (VBA).xlsm
    181.2 KB · Affichages: 141

popcorn

XLDnaute Occasionnel
Bonjour,

Merci. A chaque fois que j'ouvre vos fichiers, il me faut des heures pour comprendre..
Oui, c'est vrai que je donne des informations supplémentaire à chaque message car je ne voulais pas être trop confus.
Le sujet du post est résolu, seulement au fil de la discussion beaucoup d’idées me viennent .
Le fichier n'est pas complet, toutes les colonnes ne sont pas présentes, celle du prix en l’occurrence.
Je pensais pouvoir adapter à mes besoins en modifiant le code de manière empirique mais je ne suis pas sur d'en être capable.
J'aurais souhaité ajouter le prix total à coté du nombre d'articles, et donc reproduire la même méthode que DoubleZero utilise pour compter le nombre d'articles mais utiliser SUM j'imagine.

J'ai testé rapidement ton fichier SI mais j'ai un bug, je regarderai de plus prés plus tard, merci. Oui, je créer beaucoup d'onglets car chaque onglet représente une palette, c'est plus facile si par la suite je veux chiffrer, exporter, ou supprimer. C'est vrai que j'y vais par petit bout et je ne suis pas toujours très clair.
Je réfléchie en même temps à une méthode. J'essaye d'en faire pas mal moi même mais quand je vois ce que certain pondent ici, j'ai du boulot!!

Merci DoubleZero pour le temps consacré, c'est top.

Merci
 

DoubleZero

XLDnaute Barbatruc
Re-bonjour, bonjour, Si:):):),
... J'aurais souhaité ajouter le prix total à coté du nombre d'articles, et donc reproduire la même méthode que DoubleZero utilise pour compter le nombre d'articles mais utiliser SUM j'imagine...
En admettant que le prix de chaque "PkgID" figure en colonne d de l'onglet "Liste", la formule en colonne c de l'onglet "Sommaire" pourrait être :
Code:
=SOMME.SI(Liste!B:B;Sommaire!A2;Liste!D:D)
A bientôt :)
 

Statistiques des forums

Discussions
312 239
Messages
2 086 497
Membres
103 236
dernier inscrit
Menni