XL 2019 copier les lignes en fonction d'un mot dans les cellules

321concept

XLDnaute Nouveau
Bonjour,

Je ne suis pas ce qu'on appelle un féru de EXCEL. Je n'y connait pas grand chose.

Mon problème:

J'ai un tableau Excel de plus de 2000 lignes, avec une 30aine de cellules pour chaque ligne.
Ce sont, entre autre, des références et des marques de produits qui sont notées assez anarchiquement dans des cellules différentes sur la ligne que je cherche à copier.

Bref, j'aimerai copier les lignes qui contiennent un mot donné de ces cellules, et les coller dans une autre feuille pour effectuer un tri plus "manuel"

exemple, je dois trier pour copie les ligne contenant "monique Ranou", "Fleury michon", etc... Elle ne sont pas forcément dans la colonne MARQUE, elles peuvent être dans Référence, Fournisseur, charcuterie, etc...
Si c'est possible, copier toutes les lignes d'un seul coup et les copier dans une autre feuille

Ca ne dois pas être vraiment compliqué, mais mon Excel est du niveau "Gaz de Schiste"
 
Solution
déjà c'est bien, tu cherches à comprendre.. pas sur que ce soit une majorité des gens qui viennent ici

du coup, je remets encore une fois le fichier, car je viens de voir qu'il y avait un bug que j'ai corrigé
et un autre problème avec le bouton qui perd le lien avec la macro.. sans doute du fait qu'elle s'appelait "extraire".. sans doute un mot reconnu par VBA comme un nom réservé??

vgendron

XLDnaute Barbatruc
Bonjour

Déjà, pour commencer il faudrait que tu postes un extrait de ton fichier pour qu'on voit à quoi ca ressemble,
le fichier doit etre exempt de toute donnée confidentielle (nom, adresse, tél, mail....)
si le fichier est trop gros, pas besoin de mettre les 2000 lignes: il faut juste le necessaire pour qu'on puisse se faire une idée et te proposer une ébauche de solution
 

soan

XLDnaute Barbatruc
Inactif
Bonjour vgendron, 321concept,

Déjà, pour commencer il faudrait que tu postes un extrait de ton fichier pour qu'on voit à quoi ca ressemble

ah bon ? tu en es sûr ? ... ah ben oui, c'est c'que j'avais moi-même suggéré à 321concept :​

Image.jpg


mais vois-tu, fort bizarrement, ça arrive de nombreuses fois où les demandeurs n'écoutent pas les conseils qu'on leur donne ! (n'est-ce pas, 321concept ? 😁) ; sans-doute sont-ils persuadés qu'on connaît leur projet aussi bien qu'eux, sinon mieux qu'eux, au point qu'on est suffisamment magicien pour travailler sans fichier sur leur projet ! 🤪 ben voyons, c'est tout naturel, pas vrai ? :rolleyes:

@321concept : tu pourras pas dire que j't'avais pas prévenu, n'est-ce pas ? 😁 😄 😂 🤣 alors maint'nant, ne va pas croire ou prétendre qu'un fichier est inutile ! 😜 note que tu es le premier désavantagé, car tu as toi-même retardé la solution qu'on aurait pu t'apporter !

@vgendron : merci d'avoir confirmé que c'est tout d'même mieux avec un fichier ! 😊

soan
 

321concept

XLDnaute Nouveau
Merci pour vos réponses.
Et j'écoute vos conseils et je prends les forum au sérieux.
Toutefois, pour la solution que vous pourrez m'apporter, je dois prendre un fichier sans trop d'infos "sensibles" car il n'y en a pas qu'un seul à "trier".
(Et je pensais aussi, avant d'envoyer le fichier, qu'il y avait peut être une instruction dans un onglet du style "Données", qui faisait cette recherche).
Bon, voilà. Disons que la dedans, je veuille copier uniquement les lignes qui comportent le mot "fitoform", pour les coller dans une autre feuille.

Merci pour votre aide
 

Pièces jointes

  • stock expport-05-2022.xlsx
    750.2 KB · Affichages: 13

TooFatBoy

XLDnaute Barbatruc
Bonjour,

J'ai un tableau Excel de plus de 2000 lignes, avec une 30aine de cellules pour chaque ligne.
Ce sont, entre autre, des références et des marques de produits qui sont notées assez anarchiquement dans des cellules différentes sur la ligne que je cherche à copier.
Le fichier joint en #4 ne correspond pas à l'énoncé de #1 : on n'a que 9 colonnes et toutes les données à traiter sont dans une seule et même colonne (la colonne B).

Avec le fichier de #4 il suffit d'utiliser un filtre sur la colonne B.
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour à tous,

en complément de la réponse de Marcel, je propose d'utiliser Données, "Trier et Filtrer", Filtre avancé : ça permettra de copier les données sur une autre feuille (à la place d'un filtre sur place = un filtre sur le tableau d'origine).

par contre, si dans le cas réel le mot cherché peut être sur une ligne X et dans n'importe quelle cellule de plusieurs colonnes, ça sera effectivement plus compliqué ! une macro sera alors sans doute nécessaire.

question au hasard : et le mot à chercher, il est indiqué où ? dans une cellule d'une feuille ? ou on le saisit dans une boîte de dialogue ? ou on le saisit dans un UserForm ? ou il sera à intégrer dans le code VBA ?​



Marcel a écrit : « Le fichier joint en #4 ne correspond pas à l'énoncé de #1 »

c'est normal, et c'est fait tout exprès : 321concept voulait qu'tu l'prennes en flagrant délit d'fournir un fichier non représentatif de son cas réel ! 😁 🤪 🤣 c'est tellement plus simple quand la structure du fichier exemple est différente de celle du vrai fichier ! ça permet au demandeur de s'plaindre qu'il n'arrive pas à adapter la solution proposée à son fichier réel ! 😲 😱 😁 ça doit l'amuser d'faire semblant d'pas comprendre qu'le contributeur aura un double travail à réaliser pour faire l'adaptation à sa place ! 😄 (sauf qu'il court le risque que le contributeur lui réponde à la russe, comme Poutine : NIET !)

soan
 
Dernière édition:

321concept

XLDnaute Nouveau
Bonjour,

Merci pour vos réponses et votre aide.
Juste pour vous dire que si j'ai choisi ce fichier pour l'envoi, ce n'est nullement pour qu'on fasse le boulot à ma place, mais réellement que je ne sais pas comment on fait pour copier / trier des lignes par rapport à un mot dans les cellules d'une feuille entière.
Sur les autres fichiers que je pourrais envoyer, il y a des adresses clients, adresses fournisseurs, des prix d'achats, des remises par clients, donc je ne vais pas envoyer ça.
Le fichier envoyé me paraissait bien pour mon exemple.

Je vais chercher et me débrouiller du coté trier / copier / coller, car je ne vois pas me faire les lignes une par une en faisant "rechercher et sélectionner".

Jérôme
 

TooFatBoy

XLDnaute Barbatruc
Tu as parfaitement raison, il ne faut pas envoyer un fichier avec des données "personnelles". 👍

En revanche, comme cela a été dit précédemment, il faut que le fichier soit représentatif. Ça nous évite de découvrir plus tard que dans le vrai fichier il y a des différences qui nous obligent à tout recommencer...

Rechercher une donnée dans une seule colonne d'un tableau n'est pas la même que que rechercher cette donnée dans plusieurs colonnes de ce tableau. 😉
 

321concept

XLDnaute Nouveau
Ce fichier est représentatif, c'est un vrai fichier que j'ai copié. Il est simplement "dépouillé" des adresses, taxes, visibilité catalogue, promo ou non, dates de commandes, dates de promo, quantité de commande, Bio ou pas, stock de plus de 180 jours, ampoules, comprimés, gélules, et j'en passe... qui n'ont pas d'importance et qui alourdissent le fichier pour rien.
Comme je suis en train de bosser dessus, c'était plus simple.

Là, pour faire mon tri, je le fais "manuellement" en recherchant les marques, (mot fitoform par ex) avec "Rechercher et sélectionner". Au préalable, j'ai ajouté une colonne devant "Catégorie de produits" que j'ai nommé "Marque", dans laquelle j'inscris la marque. Arrivé à la fin du fichier, je trie "Marque" de A à Z en étendant la sélection , je copie et je colle mon résultat avec ma marque dans une autre feuille nommée du nom de la marque. Et je continue en recherchant les autres marques.

Toujours pour ce même fichier, une fois les marques triées, il faudra que je refasses les même recherches dans ce même fichier, mais pour les catégories de produits. (Pour le coup, ce sera "Crème de jour, crème de nuit, ...)

Vu que les produits que je dois trier, (case "produits"), contiennent bien souvent la marque, la référence et/ou la catégorie de produits, j'aimerais bien taper un mot dans un module de recherche et que Excel me dise, "Voulez vous copier les lignes comprenant ce terme ?" Répondre "Oui", et coller ça dans ma nouvelle feuille.

Jérôme
 

TooFatBoy

XLDnaute Barbatruc
Ce fichier est représentatif, c'est un vrai fichier que j'ai copié. Il est simplement "dépouillé" des adresses, taxes, visibilité catalogue, promo ou non, dates de commandes, dates de promo, quantité de commande, Bio ou pas, stock de plus de 180 jours, ampoules, comprimés, gélules, et j'en passe... qui n'ont pas d'importance et qui alourdissent le fichier pour rien.
Dans ce cas c'est parfait, on va pouvoir se pencher concrètement sur ton problème.

Je pensais qu'il n'était pas représentatif parce que dans #1 tu parlais de références et de marques de produits notées assez anarchiquement dans des cellules différentes sur la ligne.
Est-ce que par "ligne" tu voulais en fait parler d'une ligne verticale, c'est-à-dire une colonne ?

Autrement dit, est-ce que toutes les données à chercher seront obligatoirement toujours dans la colonne B, et uniquement dans la colonne B ?
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Ton fichier ne correspond pas à ce que tu décris dans le premier post
références et des marques de produits qui sont notées assez anarchiquement dans des cellules différentes sur la ligne que je cherche à copier.
ces deux marques n'apparaissent nulle part dans ton fichier

tu parles des colonnes
colonne MARQUE, elles peuvent être dans Référence, Fournisseur, charcuterie
AUCUNE de ces colonnes n'est présente dans ton fichier

soit tu t'es trompé de fichier.. soit... bah.. je sais pas..
 

TooFatBoy

XLDnaute Barbatruc
@321concept : comprends bien que ces questions sont là pour que l'on comprenne correctement toutes les données du problème, afin qu'on ne parte pas dans une direction (par exemple recherche des données uniquement dans la colonne B) pour se rendre compte que ça ne correspond pas (par exemple recherche des données sur plusieurs colonnes) et qu'il faut donc tout recommencer. 😉
 

321concept

XLDnaute Nouveau
Ton fichier ne correspond pas à ce que tu décris dans le premier post

ces deux marques n'apparaissent nulle part dans ton fichier

tu parles des colonnes
AUCUNE de ces colonnes n'est présente dans ton fichier

soit tu t'es trompé de fichier.. soit... bah.. je sais pas..

Dans ce cas c'est parfait, on va pouvoir se pencher concrètement sur ton problème.

Je pensais qu'il n'était pas représentatif parce que dans #1 tu parlais de références et de marques de produits notées assez anarchiquement dans des cellules différentes sur la ligne.
Est-ce que par "ligne" tu voulais en fait parler d'une ligne verticale, c'est-à-dire une colonne ?

Autrement dit, est-ce que toutes les données à chercher seront obligatoirement toujours dans la colonne B, et uniquement dans la colonne B ?
Dans ce cas c'est parfait, on va pouvoir se pencher concrètement sur ton problème.

Je pensais qu'il n'était pas représentatif parce que dans #1 tu parlais de références et de marques de produits notées assez anarchiquement dans des cellules différentes sur la ligne.
Est-ce que par "ligne" tu voulais en fait parler d'une ligne verticale, c'est-à-dire une colonne ?

Autrement dit, est-ce que toutes les données à chercher seront obligatoirement toujours dans la colonne B, et uniquement dans la colonne B ?
Cosmétique naturelleAAGAARD DENTIFRICE A LA PROPOLIS 50ML
4​
11​
44​
4011245000119Stock revente
Dans anarchie, je voulais dire écrit n'importe où,

Exemple concret: Pour information, AAGAARD est une marque.
Le mot AAGAARD est situé dans une cellule qui est celle de "Produit", (ce n'est pas vraiment sa place). J'aimerais sélectionner toutes les lignes qui contiennent le mot "aagaard" dans leurs cellules, pour les copier et les coller dans une autre feuille. De ce fait, dans cette seconde feuille, je pourrais créer une colonne "marque", puisqu'elle n'existe pas dans le fichier premier, Inscrire la marque, corriger les catégories et les produits, (puisque le dentifrice est plutôt un produit d'hygiène qu'une cosmétique naturelle), concaténer toutes les feuilles en une, trier par marque pour impression papier, trier par catégorie pour impression papier

Les données, (AAGAARD pour notre exemple), sont à rechercher de ce fait dans la feuille entière et non par colonnes. Pour faire simple, j'aimerai taper AAGAARD et copier toutes les lignes concernant ce mot là.

A la fin, une fois tout modifier, ça devait ressembler à ça
AAGAARDProduits d'hygièneDENTIFRICE A LA PROPOLIS50ML
4​
11​
44​
4011245000119Stock revente
 

TooFatBoy

XLDnaute Barbatruc
Je n'ai pas le fichier sous les yeux, mais de mémoire je dirais du coup qu'il n'est pas représentatif du vrai fichier.

C'est un peu décourageant de chercher à comprendre le problème depuis deux jours... mais je ne m'avoue pas encore vaincu ! 😁
 
Dernière édition:

vgendron

XLDnaute Barbatruc
une fois que les lignes sont copiées.. comment comptes tu "séparer"/"Corriger" les infos?
parce que en reprennant ton exemple d'Aagaard, le mot peut apparaitre n'importe ou DANS la cellule
les infos de volume et autres n'apparaissent pas.. tu comptes tout faire à la main??
ne serait il pas plus judicieux de traiter le problème à la source.. cad au moment de la création de l'onglet "Stock" ??

en attendant, une proposition de code pour appliquer un filtre, copier le résultat dans une nouvelle feuille

VB:
Sub extraire()
With Sheets("Stock")
    If .AutoFilterMode Then
        .AutoFilterMode = False
    End If
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    Set zoneToFilter = .Range("A1:I" & fin)
   
    MotAFiltrer = Application.InputBox("Saisissez le mot à filter")
    'MsgBox MotAFiltrer
    If MotAFiltrer = "" Then Exit Sub
    zoneToFilter.AutoFilter Field:=2, Criteria1:="=*" & MotAFiltrer & "*", Operator:=xlAnd
    Set ZoneToCopy = zoneToFilter.SpecialCells(xlCellTypeVisible)
End With
If Not FeuilleExiste(CStr(MotAFiltrer)) Then
    ActiveWorkbook.Sheets.Add
    ActiveSheet.Name = MotAFiltrer
End If

ZoneToCopy.Copy Destination:=Sheets(MotAFiltrer).Range("A1")
Sheets("Stock").AutoFilterMode = False
End Sub

Function FeuilleExiste(NomFeuille As String) As Boolean
FeuilleExiste = False
For Each ws In ActiveWorkbook.Sheets
    If ws.Name = NomFeuille Then
        FeuilleExiste = True
        Exit For
    End If
Next ws

End Function
 

Pièces jointes

  • stock expport-05-2022.xlsm
    161.7 KB · Affichages: 24

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 907
Membres
101 836
dernier inscrit
karmon