XL 2013 Formules export lignes

sev31130

XLDnaute Impliqué
Bonjour

je vous joins un fichier qui je pense est assez explicite
en gros je voudrais exporter des lignes d'un fichier sources vers 3 fichiers destinataires avec un critère qui se trouve en colonne G (tous les fichiers ont la même structure, la page d'export se nomme " generale" sur le fichier source et sur les fichiers destinataires
je ne sais pas adapter la formule RECHERCHER ou peut-être une autre, je ne suis pas assez compétent pour dire ou faire cela
par avance merci

cordialement

yves
 

Pièces jointes

  • exemple5.xls
    89.5 KB · Affichages: 60
  • exemple5.xls
    89.5 KB · Affichages: 64

Modeste

XLDnaute Barbatruc
Re : Formules export lignes

Bonjour sev31130,

Apparemment, ton fichier n'aura pas suffi à expliciter ta demande ...
On pourrait arriver à comprendre le début, s'il n'y avait que ton fichier "source" et les 3 fichiers "destinataires". Je dis on pourrait, parce que ce n'est pas certain!
De ce que j'ai compris, ne suffirait-il pas:
  • d'activer les filtres automatiques dans ton fichier source
  • de filtrer les données avec, comme critère, un 'T' en colonne G
  • de copier-coller les données ainsi filtrées dans un classeur "Trot"
  • ... et de recommencer la même chose avec les "Haies" et les "Plat"


Ce que ton fichier ne permet pas de comprendre:
  • pourquoi les 3 tableaux "destinataires" contiennent-ils des données qui ne figurent pas dans le tableau "source"?
  • pourquoi des couleurs différentes dans chaque tableau?
  • que vient faire "dans le jeu de quilles" le tableau "Stats annuelles" à droite?
  • les RECHERCHEV utilisées dans ce 5[SUP]e[/SUP] tableau ne pourront fonctionner que s'il n'y a jamais deux fois la même date dans le fichier source. Le résultat obtenu n'est jamais que l'équivalent d'un copier-coller du tableau source (sans les couleurs). Quel en est l'intérêt?

Ce dont je suis à peu près certain, c'est que des formules (comme la RECHERCHEV) ne suffiront pas: à mon avis on devrait utiliser des formules matricielles. Rien ne dit non plus que des formules pourront se mettre à jour dans les fichiers destinataires, si le classeur source n'est pas ouvert en même temps. Une autre solution serait d'utiliser des macros ... mais c'est une autre paire de manches!

Un filtre serait tout de même beaucoup plus simple, non?
 

sev31130

XLDnaute Impliqué
Re : Formules export lignes

bonjour et merci pour le réponse ,

je crois que pour la clarté il est plus judicieux que je t'envoi deux fichiers, le fichier source et un des fichiers destinataires, ainsi et si tu me comprends mieux, et que c'est faisable pour un, c'est faisable pour les deux autres en changeant la variable.
Je pense que tu comprends que je veux transférer les lignes du fichier source dans chacun des trois fichiers destinataire en fonction du critère de la colonne G soit en O soit en P soit en T (le nom des deux autres fichiers destinataires stats plat Annuel et stats haies Annuel)

Merci par avance

Cordialement

Yves
 

Pièces jointes

  • stats Annuel.xls
    234 KB · Affichages: 48
  • stats Annuel.xls
    234 KB · Affichages: 52
  • stats trot. Annuel.xls
    165.5 KB · Affichages: 44
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Formules export lignes

Re,

Comment as-tu obtenu ton fichier trot annuel? En faisant des copier-coller au fur et à mesure? As-tu testé le filtre automatique?
Dans ton fichier "trot annuel", les dates commencent en 2007, alors que dans le "stats annuel", les données ne sont reprises que depuis 2010 ... on ne saurait pas obtenir par quelque technique que ce soit, des données qui ne figurent pas dans la source!?

Quoi qu'il en soit, pour illustrer ce que je disais plus tôt, voici ce que je te propose de tester. Ouvre le fichier stats annuels; dans le fichier stats-trot annuel, en I2, colle cette formule:
Code:
=SIERREUR(INDEX('[stats-annuel.xls]Feuil1'!A$1:A$2556;PETITE.VALEUR(SI('[stats-annuel.xls]Feuil1'!$G$2:$G$2556="T";LIGNE('[stats-annuel.xls]Feuil1'!$G$2:$G$2556));LIGNES($1:1)));"")
valide avec la combinaison de touches Ctrl+Shift+Enter et recopie la formule à droite jusqu'en O2. Applique un format date en I2, puis sélectionne I2:O2 et recopie la plage jusqu'en O1160
... tu devrais voir le temps de calcul s'allonger de manière significative. Avec ce type de formule, ce sera le cas, chaque fois que cette feuille sera recalculée.
Vois-tu ce que je veux dire?

Teste maintenant, sur ta machine, si le fichier source peut-être fermé, sans que les formules n'affichent d'erreur.
Dans une cellule vide du fichier trot, fais un simple calcul (p. ex. =5*2) au moment où tu valides, combien de temps pour afficher le résultat?
En outre, la formule que j'ai proposée ne fonctionnera que si tu es au moins en Excel 2007 (le titre de la discussion indique XL 2013, mais tes fichiers sont des .xls :eek:)
 

job75

XLDnaute Barbatruc
Re : Formules export lignes

Bonjour Yves, Modeste,

Modeste a bien raison, le filtre automatique s'impose ici.

Par macro c'est assez simple :

Code:
Private Sub Workbook_Open()
Dim chemin$, source$, critere$, w As Worksheet, P As Range
chemin = ThisWorkbook.Path & "\" 'à adapter
source = "stats Annuel" 'à adapter
critere = "T" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier source est ouvert
With Feuil1 'CodeName
  .Range("A2:G" & .Rows.Count).Delete xlUp 'RAZ
  source = Dir(chemin & source & ".xls*")
  If source = "" Then MsgBox "Fichier source introuvable...": Exit Sub
  Set w = Workbooks.Open(chemin & source).Sheets(1) '1ère feuille du fichier source
  If w.FilterMode Then w.ShowAllData 'si un filtre est en place
  Set P = w.Range("A1:G" & w.Range("A" & w.Rows.Count).End(xlUp).Row)
  P.AutoFilter 7, critere
  P.Copy .[A1]
  w.Parent.Close False
  With .UsedRange: End With 'actualise la barre de défilement
End With
End Sub
Edit 1 : ajouté If w.FilterMode Then w.ShowAllData

Edit 2 : ajouté With .UsedRange: End With pour actualiser la barre de défilement.

Mettez les 2 fichiers joints dans le même répertoire (le bureau) et ouvrez "stats trot. Annuel.xls".

A+
 

Pièces jointes

  • stats Annuel.xls
    234 KB · Affichages: 49
  • stats Annuel.xls
    234 KB · Affichages: 50
  • stats trot. Annuel(1).xls
    35 KB · Affichages: 39
Dernière édition:

sev31130

XLDnaute Impliqué
Re : Formules export lignes

re bonjour


j ai bien compris ce que tu m'expliques, mais je pense que nous allons simplifier la tache

sur chaque fichier destinataire j'ai la feuille arrivée, autant extraire les lignes T pour le fichier trot, les lignes O pour le fichier haies et les lignes P pour le fichier plat, donc si tu veux bien me faire la formule pour le fichier stats trot Annuel
et moi je l'adapterais en changeant le T en O ou en P
Par avance merci

Cordialement

Yves
 

Pièces jointes

  • stats trot. Annuel (bis).xlsx
    105.9 KB · Affichages: 43

sev31130

XLDnaute Impliqué
Re : Formules export lignes

Bonjour Yves, Modeste,

Modeste a bien raison, le filtre automatique s'impose ici.

Par macro c'est assez simple :

Code:
Private Sub Workbook_Open()
Dim chemin$, source$, critere$, w As Worksheet, P As Range
chemin = ThisWorkbook.Path & "\" 'à adapter
source = "stats Annuel" 'à adapter
critere = "T" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier source est ouvert
With Feuil1 'CodeName
  .Range("A2:G" & .Rows.Count).Delete xlUp 'RAZ
  source = Dir(chemin & source & ".xls*")
  If source = "" Then MsgBox "Fichier source introuvable...": Exit Sub
  Set w = Workbooks.Open(chemin & source).Sheets(1) '1ère feuille du fichier source
  If w.FilterMode Then w.ShowAllData 'si un filtre est en place
  Set P = w.Range("A1:G" & w.Range("A" & w.Rows.Count).End(xlUp).Row)
  P.AutoFilter 7, critere
  P.Copy .[A1]
  w.Parent.Close False
End With
End Sub
Edit : ajouté If w.FilterMode Then w.ShowAllData

Mettez les 2 fichiers joints dans le même répertoire (le bureau) et ouvrez "stats trot. Annuel.xls".

A+


Bonjour JOB75

1) le filtre automatique s'impose : je ne sais pas ce que c'est et encore bien moins m'en servir
2)B]Edit[/B] : ajouté If w.FilterMode Then w.ShowAllData ca c'est du latin que je ne comprends pas n'ayant pas atteint ce degré de connaissance.
3) en suivant vos recommandations (les les deux fichiers dans le bureau et ouvrir "stats trot. Annuel.xls".) j'y arrive et cela me prends jusqu'à fin mars mais pas plus loin, par exemple cela ne me prends pas le 1er avril 2016 et j ai fais des essais plus loin mais rien ne se transcrit (est ce une mauvaise manip de ma part)
Merci par avance
Cordialement
 

job75

XLDnaute Barbatruc
Re : Formules export lignes

cela me prends jusqu'à fin mars mais pas plus loin, par exemple cela ne me prends pas le 1er avril 2016 et j ai fais des essais plus loin mais rien ne se transcrit (est ce une mauvaise manip de ma part)

Vos lunettes peut-être Yves ? Regardez bien le fichier source.

Avec critère = "T" on va jusqu'au 30-mars-16.

Avec critère = "P" on va jusqu'au 31-mars-16.

Avec critère = "O" on va jusqu'au 27-mars-16, ne pas confondre "O" et "0" (zéro).

Edit : au post #5 j'ai ajouté With .UsedRange: End With pour actualiser la barre de défilement.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Formules export lignes

Re,

Au lieu de 3 fichiers de destination on peut n'en utiliser qu'un seul.

Avec en J1 une liste de validation pour choisir le critère de filtrage.

La macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Critere As Range, chemin$, source$, w As Worksheet, P As Range
Set Critere = [J1] 'cellule à adapter
If Intersect(Target, Critere) Is Nothing Then Exit Sub
chemin = ThisWorkbook.Path & "\" 'à adapter
source = "stats Annuel" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier source est ouvert
Range("A2:G" & Rows.Count).Delete xlUp 'RAZ
source = Dir(chemin & source & ".xls*")
If source = "" Then MsgBox "Fichier source introuvable...": Exit Sub
Set w = Workbooks.Open(chemin & source).Worksheets(1) '1ère feuille du fichier source
If w.FilterMode Then w.ShowAllData 'si un filtre est en place
Set P = w.Range("A1:G" & w.Range("A" & w.Rows.Count).End(xlUp).Row)
If Critere <> "<tout>" And Critere <> "<vides>" And Critere <> "<zéros>" _
  Then P.AutoFilter 7, Critere
If Critere = "<zéros>" Then P.AutoFilter 7, 0
If Critere = "<vides>" Then P.AutoFilter 7, ""
P.Copy [A1]
w.Parent.Close False
With Me.UsedRange: End With 'actualise la barre de défilement
End Sub
Fichiers joints.

A+
 

Pièces jointes

  • stats Annuel.xls
    234 KB · Affichages: 51
  • stats Annuel.xls
    234 KB · Affichages: 43
  • stats filtrées(1).xls
    245.5 KB · Affichages: 45

job75

XLDnaute Barbatruc
Re : Formules export lignes

Re,

Sur les anciennes versions d'Excel, les listes de validation ne créent pas l'évènement Change.

On peut alors utiliser une ComboBox et ces macros :

Code:
Private Sub ComboBox1_GotFocus()
ComboBox1.List = Array("<tout>", "T", "P", "O", "<zéros>", "<vides>")
End Sub

Private Sub Combobox1_Change()
Dim chemin$, source$, critere$, w As Worksheet, P As Range
chemin = ThisWorkbook.Path & "\" 'à adapter
source = "stats Annuel" 'à adapter
critere = ComboBox1
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier source est ouvert
Range("A2:G" & Rows.Count).Delete xlUp 'RAZ
source = Dir(chemin & source & ".xls*")
If source = "" Then MsgBox "Fichier source introuvable...": Exit Sub
Set w = Workbooks.Open(chemin & source).Worksheets(1) '1ère feuille du fichier source
If w.FilterMode Then w.ShowAllData 'si un filtre est en place
Set P = w.Range("A1:G" & w.Range("A" & w.Rows.Count).End(xlUp).Row)
If critere <> "<tout>" And critere <> "<vides>" And critere <> "<zéros>" _
  Then P.AutoFilter 7, critere
If critere = "<zéros>" Then P.AutoFilter 7, 0
If critere = "<vides>" Then P.AutoFilter 7, ""
P.Copy [A1]
w.Parent.Close False
With Me.UsedRange: End With 'actualise la barre de défilement
End Sub
Fichier (2).

A+
 

Pièces jointes

  • stats filtrées(2).xls
    240.5 KB · Affichages: 52
  • stats Annuel.xls
    234 KB · Affichages: 51
  • stats Annuel.xls
    234 KB · Affichages: 51
Dernière édition:

sev31130

XLDnaute Impliqué
Re : Formules export lignes

bonjour job75 et tout le monde


que dire quand je vois ce que vous pouvez faire, et qui me laisse perplexe tellement cela semble évident pour vous
et que tout cela marche à la perfection.

les merci , les bravo sont tellement peu par rapport à ce que vous nous amenez en facilité, en gentillesse, que je ne sais plus quel mots employés pour vous remercier

Chapeau l'artiste , un grand merci


Cordialement

yves
 

job75

XLDnaute Barbatruc
Re : Formules export lignes

Bonjour Yves, le forum,

A votre place Yves je n'utiliserais finalement qu'un seul fichier avec une feuille source et une feuille filtrée :

Code:
Private Sub ComboBox1_GotFocus()
ComboBox1.List = Array("<tout>", "T", "P", "O", "<zéros>", "<vides>")
End Sub

Private Sub Combobox1_Change()
Dim w As Worksheet, critere$, P As Range
Set w = Feuil2 'CodeName de la feuille source
critere = ComboBox1
Application.ScreenUpdating = False
Range("A2:G" & Rows.Count).Delete xlUp 'RAZ
If w.FilterMode Then w.ShowAllData 'si un filtre est en place
Set P = w.Range("A1:G" & w.Range("A" & w.Rows.Count).End(xlUp).Row)
If critere <> "<tout>" And critere <> "<vides>" And critere <> "<zéros>" _
  Then P.AutoFilter 7, critere
If critere = "<zéros>" Then P.AutoFilter 7, 0
If critere = "<vides>" Then P.AutoFilter 7, ""
P.Copy [A1]
w.AutoFilterMode = False 'retire le filtre
With Me.UsedRange: End With 'actualise la barre de défilement
End Sub
C'est bien plus simple et beaucoup plus rapide.

Fichier joint.

A+
 

Pièces jointes

  • Stats(1).xls
    251.5 KB · Affichages: 64
  • Stats(1).xls
    251.5 KB · Affichages: 58

sev31130

XLDnaute Impliqué
Re : Formules export lignes

Bonjour JOB75 bonjour tout le monde,

En fait et pour tout vous dire la finalité de ce fichier vous trouverez les explications dans le fichier qui se trouve
a ce lien
Download - TransferNow
le fichier que vous me proposez c'est en fait la mercedes des temps moderne, sans chauffeur, ni carburant
Merci mille fois de lire les petites explications sur le fichier joint
je pense ce lien et ce fichier serait plus utile pour faire ce que je vous demande

merci voici le lien
https://www.transfernow.net/b97ne6n91qgn

Par avance mille merci

Cordialement

Yves
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Formules export lignes

Re,

Dans le fichier de votre lien vous auriez pu mettre les dernières macros - très rapides - que j'ai données sur ce fil :

https://www.excel-downloads.com/threads/extraction-de-lignes.20006729/

L'ajout des feuilles annuelles n'était pas bien compliquée, voyez ce fichier (2).

Il vous reste à faire des MFC correctes dans vos tableaux annuels.

Notez que j'ai supprimé les formules de liaison qu'il y avait dans le tableau général.

A+
 

Pièces jointes

  • Stats(2).xls
    888 KB · Affichages: 62
  • Stats(2).xls
    888 KB · Affichages: 62

sev31130

XLDnaute Impliqué
Re : Formules export lignes

Re


En effet j'ai essayé de faire ce que vous dites, mais il me répondait " fichier introuvable"
Papa disait mieux un qui sait que 10 qui cherchent ....je peux vous dire que j'ai la une F1
je ne sais comment vous remercier .....les mots me manquent moi le fana de chiffres je suis
gâté ...MERCI MILLE FOIS

Cordialement

Yves
 

Statistiques des forums

Discussions
312 764
Messages
2 091 870
Membres
105 084
dernier inscrit
lca.pertus