XL 2016 Extraire de lignes contenant un critère de mot

julien pain

XLDnaute Nouveau
Bonjour,
je suis nouveau sur votre forum bien que je sois passé il y a une dizaine d'années, sous un autre identifiant, que je n’ai pas retrouvé.
je suis directeur adjoint d'une structure du medico social et j'ai besoin de faire des recoupements, extractions régulièrement sur excel. j'ai dcouvert les VBA grâce à vos forum, mais je ne sais que les copier et éventuellement modifer les données.

j'ai trouvé sur le forum une VBA proposé par BOISGONTIER posté en 2007.

malheureusement lorsque je l’utilise dans mon fichier j’ai une erreur qui apparait. Étant néophyte, j’ai tenté de trouver ou était le soucis, mais en vain.
j'ai d’abord cru que c’était les cellules fusionnées mais je les ai retirées. il semble que cela vienne de "l'autofilter"

pouvez vous regarder mon fichier et m'aider à comprendre ou est mon erreur ?

l'idée est de pouvoir récupérer tous les lignes contenant le nom d'un fournisseur en colonne E, sur un autre onglet. de préférence copier les données dans le nouvel onglet.
dans ce fichier je n'ai mi qu'un onglet, mais il y en a un par mois. je peux prévoir des modifications de structuration si besoin, car 2022 approche et je ferais le point avec la secrétaire.

merci d'avance

VB:
Sub ExtraitVersAutreFeuille()
critere = InputBox("Critere?")
If critere = "" Then Exit Sub
[A1].AutoFilter Field:=5, Criteria1:="*" & critere & "*"
Application.DisplayAlerts = False
On Error Resume Next
Sheets(critere).Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = critere
Sheets("Feuil1").Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Copy [A1]
Cells.EntireColumn.AutoFit
Sheets("Feuil1").ShowAllData
End Sub
 

Pièces jointes

  • CHRONO.xlsm
    24.3 KB · Affichages: 8
Dernière édition:
Solution
@julien pain

Tes données ne sont pas homogènes, il y a des trous de partout ET dans toutes tes colonnes !
Le nombre même de colonne n'est pas identique dans chaque feuille


1639485658400.png
1639485865397.png
1639486005422.png


Il faut rendre tes données cohérentes pour compter les lignes de chaque feuille, il y a des risques importants que des données soient écrasés lors de la copie des filtres de toutes les feuilles.

-Si tu renommes les onglets 1 à 12 cela ne fonctionnera plus
-Si tu rajoutes des onglets pour 2022 avec exactement la même manière que 2021 cela fonctionnera encore MAIS le filtre se fera sur 2021 ET 2022

Avec toutes les...

gmb

XLDnaute Junior
Bonjour,
je suis nouveau sur votre forum bien que je sois passé il y a une dizaine d'années, sous un autre identifiant, que je n’ai pas retrouvé.
je suis directeur adjoint d'une structure du medico social et j'ai besoin de faire des recoupements, extractions régulièrement sur excel. j'ai dcouvert les VBA grâce à vos forum, mais je ne sais que les copier et éventuellement modifer les données.

j'ai trouvé sur le forum une VBA proposé par BOISGONTIER posté en 2007.

malheureusement lorsque je l’utilise dans mon fichier j’ai une erreur qui apparait. Étant néophyte, j’ai tenté de trouver ou était le soucis, mais en vain.
j'ai d’abord cru que c’était les cellules fusionnées mais je les ai retirées. il semble que cela vienne de "l'autofilter"

pouvez vous regarder mon fichier et m'aider à comprendre ou est mon erreur ?

l'idée est de pouvoir récupérer tous les lignes contenant le nom d'un fournisseur en colonne E, sur un autre onglet. de préférence copier les données dans le nouvel onglet.
dans ce fichier je n'ai mi qu'un onglet, mais il y en a un par mois. je peux prévoir des modifications de structuration si besoin, car 2022 approche et je ferais le point avec la secrétaire.

merci d'avance

VB:
Sub ExtraitVersAutreFeuille()
critere = InputBox("Critere?")
If critere = "" Then Exit Sub
[A1].AutoFilter Field:=5, Criteria1:="*" & critere & "*"
Application.DisplayAlerts = False
On Error Resume Next
Sheets(critere).Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = critere
Sheets("Feuil1").Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Copy [A1]
Cells.EntireColumn.AutoFit
Sheets("Feuil1").ShowAllData
End Sub
 

julien pain

XLDnaute Nouveau
merci, l'extraction marche bien mais un peu trop, car je ne peux plus voir mes autres lignes.
il serai bien que ne disparaisse pas les éléments (masqués pour le coup, mais je n'arrive plus à les afficher) mais plutôt qu'ils soit copier dans une autre onglet.

le problème précédent venait du fait qu'il n'y ai pas de tableau dynamique ?

merci de votre réactivité et de l'aide déjà apportée
 

julien pain

XLDnaute Nouveau
c'est exactement ce que je souhaite faire, mais comment le transférer d'un fichier à un autre ?
lorsque je recree le module ou copie le code dans thisworbook, je n'arrive pas à créer le module pour cliquer.
je trouve bien la macro en passant par affichage/macros
mais les données ne sont pas trouvées dans les onglets.

merci de votre aide
 

Pièces jointes

  • CHRONO v21.xlsm
    155.4 KB · Affichages: 3

Phil69970

XLDnaute Barbatruc
Bonsoir @julien pain

Je te propose cette nouvelle version :

1)Tu auras quelques retouches faire
==> Supprime TOUTES les lignes vides sinon cela ne fonctionnera pas
1639433688919.png

J'ai fais les 3 premiers mois je te laisse faire les autres mois ;)

2)Pour que cela fonctionne il faut aller dans la cellule K1 de n'importe quel mois
Mais il faut faire le point 1) avant

1639433822849.png


*Merci de ton retour

@Phil69970
 

Pièces jointes

  • CHRONO Filtre V3.xlsm
    167.9 KB · Affichages: 6

julien pain

XLDnaute Nouveau
bonjour,
cela fonctionne bien mais peut on filtrer sur tous les onglets en même temps ou suis-je obliger de faire onglet par onglet. sachant que l'onglet précédent écrase le suivant.

j'ai identifier que cette ligne de code, cible la colonne ou s'effectue la recherche.
La fusion de cellule ne semble pas poser de pb.
Worksheets(VarNom).[D4].AutoFilter Field:=5, Criteria1:="*" & Critere & "*"
en focntion de mes fichier je peux donc chercher dans n'importe quelle colonne si je modifie le code sur ce chiffre ?
j'ai réussi à transposer cette macro sur un autre fichier en copiant le module et en inscrivant le le code dans thisworbook. j’imagine que "K1" peut se changer dans cette ligne de code aussi pour être déplacer ailleurs.

en tout cas cela correspond très bien à mon besoin si on peut récupérer tous les onglets dans le traitement ce sera parfait. A défaut je ferais des copier coller

merci phil et gmb pour votre soutien
 

Phil69970

XLDnaute Barbatruc
Bonjour @julien pain

Une remarque quand tu poses une question en général on réponds à la question posé mais quand à chaque post de ta part tu modifies la question.o_O
Au départ dans ton fichier il y avait 1 seul onglet après il y a 12 onglets et maintenant il faut faire une seule extraction mais sur les 12 onglets à la fois donc tu en est à ta 3eme modification de ta demande !!!
C'est quoi la prochaine fois ?🤔
A chaque fois tout repenser le traitement c'est pas très cool pour nous.

@Phil69970
 

Phil69970

XLDnaute Barbatruc
@julien pain

Tes données ne sont pas homogènes, il y a des trous de partout ET dans toutes tes colonnes !
Le nombre même de colonne n'est pas identique dans chaque feuille


1639485658400.png
1639485865397.png
1639486005422.png


Il faut rendre tes données cohérentes pour compter les lignes de chaque feuille, il y a des risques importants que des données soient écrasés lors de la copie des filtres de toutes les feuilles.

-Si tu renommes les onglets 1 à 12 cela ne fonctionnera plus
-Si tu rajoutes des onglets pour 2022 avec exactement la même manière que 2021 cela fonctionnera encore MAIS le filtre se fera sur 2021 ET 2022

Avec toutes les réserves ci dessus, je te propose ce fichier :

*Merci de ton retour

@Phil69970
 

Pièces jointes

  • CHRONO Filtre V4.xlsm
    165.7 KB · Affichages: 8

julien pain

XLDnaute Nouveau
dans ce fichier je n'ai mi qu'un onglet, mais il y en a un par mois. je peux prévoir des modifications de structuration si besoin, car 2022 approche et je ferais le point avec la secrétaire.
Bonjour je suis désolé que mes demandes aient évolué. j'ai essayé de faire un message clair en début de post mais ce n'est peut être clair que pour moi...

en tout cas la proposition v4 correspond parfaitement. merci beaucoup.
je vais la mettre en oeuvre et preparer le fichier pour 2022 pour éviter le trous que vous m'avez nommés qui pourraient être source d’erreur.
un grande merci et désolé encore de la réécriture complète du code source.
 

Phil69970

XLDnaute Barbatruc
@julien pain

Content que cela corresponde à ta demande
la proposition v4 correspond parfaitement.

Pour éviter les mauvaises interprétations et les quiproquos, je te conseille pour maximaliser les réponses de prendre l'habitude de mettre un fichier représentatif de 10 à 20 lignes avec tes attendus (avant/après) ET respectant le RGPD permettrait de comprendre le problème et de t'apporter une ou des réponses.

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ...(respect du RGPD)
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables

*Éventuellement préciser l'ordre de grandeur des lignes à traiter, exemple mon fichier comporte 1 000 lignes ou bien 20 000 lignes ==> la méthodologie peut être différents.

Une demande claire donne très souvent une réponse rapide et qui correspond au mieux à la demande.

@Phil69970
 

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT