Extraire des données sur un fichier différent.

Tophe2

XLDnaute Impliqué
Bonsoir le forum
Voilà ma question:

J'ai un fichier (qui est mis à jour) envoyé tous les mois, je souhaiterai extraire des données se trouvant dans différentes colonnes et les mettre à mon tour à jours dans un autre fichier.

Fichier "x" qui arrive ---------> extraire colonne A;B;C;D;G;J (par ex) sur un nouveau fichier "J".
Puis peu de temps après le fichier "x" mis à jour m'est envoyé -----> je souhaiterai donc mettre à jour mon fichier créé "J".
Et ainsi de suite.
J'ai une macro qui me permettra d'extraire les données sauf qu'elle ne sera pas dans le fichier envoyé comme faire pour l'activer sans l'inclure dans le fichier "x";
En espérant avoir été clair car j'ai un peu de mal à expliquer la situation.

Merci par avance
Christophe.
 

ledzepfred

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

bonsoir,

essaye le code ci-joint à placer dans un module du fichier j :

Code:
Sub import()
Dim Fichier, Repertoire As String
Repertoire = "C:\Documents and Settings\ledzepfred\Mes documents" 'mettre ici ton répertoire par défaut
ChDir "C:\Documents and Settings\Ledzepfred\Bureau" 'mettre ici le répertoire où se trouve le fichier x
Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls", , "Sélectionner un fichier.")
If Fichier <> False Then
    Application.ScreenUpdating = False
    Workbooks.Open Fichier
    Fichier_x= Activeworkbook.name
    For i = 1 To 10
        If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 7 Or i = 10 Then
            Windows(Fichier_x).Activate
            Sheets("feuil1").Activate
            Columns(i).Copy
            Windows("fichier j.xls").Activate
            Sheets("feuil1").Activate
            Columns(i).PasteSpecial
        End If
    Next
Application.DisplayAlerts = False
Windows(Fichier_x).Close
End If
CurDir Repertoire
End Sub

Une boite de dialogue va s'ouvrir sur le repéertoire ou se trouve le fichier x, il te suffit de cliquer dessus pour qu'il s'ouvre et que les données soient importées dans le fichier j
le nom de la feuille où se trouve les données à importer dans le fichier x et le nom du feuillet de destination du fichier j sont à adapter à ton besoin

a+
 

skoobi

XLDnaute Barbatruc
Re : Extraire des données sur un fichier différent.

Bonsoir Tophe2, ledzepfred,

Si je peux me permettre, point besoin de boucle dans ton code ledzep:
ceci:
Code:
    For i = 1 To 10
        If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 7 Or i = 10 Then
            Windows(Fichier_x).Activate
            Sheets("feuil1").Activate
            Columns(i).Copy
            Windows("fichier j.xls").Activate
            Sheets("feuil1").Activate
            Columns(i).PasteSpecial
        End If
    Next
devient cela:
Code:
Workbooks(Fichier_x).Sheets("feuil1").Columns("A:D").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("A:D")
Workbooks(Fichier_x).Sheets("feuil1").Columns("G").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("G")
Workbooks(Fichier_x).Sheets("feuil1").Columns("J").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("J")
 

ledzepfred

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

re skoobi

j'avais fait comme toi mais j'avais un bug (l'indice n'appartient pas à la sélection)

Edit: je viens de retester et ça marche (ben zut alors!!), pourtant je n'avais pas utilisé Range mais columns??????

a+
 
Dernière édition:

Tophe2

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

Bonjour le forum et merci à skoobi et ledzepfred

Le code fonctionne très bien mais la macro que j'utilisé pour d'autres fichiers ne s'adapte pas pour celui là pas le même besoin ou remplissage.

Peut on adapter le code de skoobi pour n'extraire que les lignes contenant des 1 dans les colonnes L; M; N; O; P; S; V. les lignes n'ayant rien pas besoin.
Colonne se trouvant dans le fichier x ou après avoir copier toutes les colonnes désirées (avec le code proposé) dans le fichier j.

Cordialement.
Christophe.
 

ledzepfred

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

bonsoir skoobi, tophe

@ skoobi : ben le pb c'est que j'ai pas fait l'armée! Ils n'ont pas voulu de moi même comme mascotte!!:D

@ tophe : le fichier de base et une expression du résultat souhaité serait utile pour te répondre au mieux : tu pourrais utiliser le filtrage personnalisé :

essayes comme ceci

Code:
Sub import()
Dim Fichier, Repertoire As String
Repertoire = "C:\Documents and Settings\ledzepfred\Mes documents" 'mettre ici ton répertoire par défaut
ChDir "C:\Documents and Settings\Ledzepfred\Bureau" 'mettre ici le répertoire où se trouve le fichier x
Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls", , "Sélectionner un fichier.")
If Fichier <> False Then
    Application.ScreenUpdating = False
    Workbooks.Open Fichier
    Fichier_x= Activeworkbook.name

[COLOR="Red"]If ActiveSheet.FilterMode = True Then[COLOR="SeaGreen"] 'verifie si le filtre est activé[/COLOR]
ActiveSheet.ShowAllData [COLOR="seagreen"]'si activé alors défiltre toutes les colonnes[/COLOR]
ElseIf ActiveSheet.AutoFilterMode = False Then Rows("1:1").AutoFilter 
[COLOR="seagreen"]'si pas activé alors active le filtre sur ligne 1 (à adapter en fonction des entêtes de colonnes du fichier base)[/COLOR]
End If

For i = 12 To 19
If i <> 17 And i <> 18 Then
    Selection.AutoFilter Field:=i, Criteria1:="=1"
End If
Next[/COLOR]
Workbooks(Fichier_x).Sheets("feuil1").Columns("A:D").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("A:D")
Workbooks(Fichier_x).Sheets("feuil1").Columns("G").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("G")
Workbooks(Fichier_x).Sheets("feuil1").Columns("J").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("J")
Application.DisplayAlerts = False
Windows(Fichier_x).Close
End If
CurDir Repertoire
End Sub

les lignes en rouge permettent d'obtenir dans le fichier j les lignes qui ne contiennent que des 1 dans colonnes L M N O P et S
A+
 
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Extraire des données sur un fichier différent.

Bsr à tous

Une suggestion
On peut remplacer :
Code:
Workbooks(Fichier_x).Sheets("feuil1").Columns("A:D").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("A:D")
Workbooks(Fichier_x).Sheets("feuil1").Columns("G").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("G")
Workbooks(Fichier_x).Sheets("feuil1").Columns("J").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("J")
par
Code:
Dim i
adr = Split("A:D,G,J", ",")
For i = 0 To 2
Workbooks("Fichier_x").Sheets("Feuil1").Columns(adr(i)).Copy _
Workbooks("fichier j.xls").Sheets("Feuil1").Columns(adr(i))
Next

PS: Pour le confort de lecture voir les modifications ci-dessous
(à réutiliser dans le code précédent)
Code:
Sub test()
Dim i
Dim wkSource As Worksheet
Dim wkDest As Worksheet
Set wkSource = Workbooks("Fichier_x.xls").Sheets("Feuil1")
Set wkDest = Workbooks("fichier j.xls").Sheets("Feuil1")
ad = Split("A:D,G,J", ",")
For i = 0 To 2
wkSource.Columns(ad(i)).Copy _
wkDest.Columns(ad(i))
Next
End Sub

A+
 
Dernière édition:

Tophe2

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

Bonjour et merci pour vos propositions

Le filtre fonctionne sauf qu'il faudrait garder toutes les lignes contanant un "1" dans: L et/ou M et/ou N et/ou O et/ou P et/ou S et/ou V. Car il se peut que dans la colonne M il y ait un "1" mais pas dans les autres alors il faut quand même garder la ligne.

Peut on copier en même temps des colonnes d'une autre feuille du même fichier avec ta proposition ?.

Code:
[COLOR="Blue"]Workbooks(Fichier_x).Sheets("feuil3").Columns("A:F").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("A:F")[/COLOR]
Workbooks(Fichier_x).Sheets("feuil1").Columns("G").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("G")
Workbooks(Fichier_x).Sheets("feuil1").Columns("J").Copy Workbooks("fichier j.xls").Sheets("feuil1").Columns("J")

Cordialement
Christophe.
 

skoobi

XLDnaute Barbatruc
Re : Extraire des données sur un fichier différent.

Bonjour tout le monde,

Ci-joint une proposition avec ce que tu viens de dire.
Difficile de t'aider plus si tu n'envoies pas de fichier exemple.
 

Pièces jointes

  • pour Tophe2.zip
    12.4 KB · Affichages: 83

Tophe2

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

Bonjour SKOOBI

J'ai fait un fichier avec beaucoup moins de colonne et de lignes mais je souhaite extraire les lignes contenant un "1" dans les colonnes allant de E à J. Si pas de 1 alors pas d'extraction si un 1 ou plusieurs fois --> extraire, dans un fichier J.
J'ai pris en compte les propositions pas de problèmes pour extraire les colonnes je rencontre uniquement un souci pour les "1".

Concernant ton fichier il crée des lignes au dessus du tableau se qui me change toute la mise en page et le classeur 2 n'avoir que les colonnes ayant des 1.

Ci joint le petit fichier exemple.
Merci pour votre aide
Christophe.
 

Pièces jointes

  • Fichier_x.xls
    16.5 KB · Affichages: 97
  • Fichier_x.xls
    16.5 KB · Affichages: 110
  • Fichier_x.xls
    16.5 KB · Affichages: 95
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Extraire des données sur un fichier différent.

Bonjour Christophe,

il se peut que dans la colonne M il y ait un "1" mais pas dans les autres alors il faut quand même garder la ligne.
Concernant ton fichier il crée des lignes au dessus du tableau se qui me change toute la mise en page et le classeur 2 n'avoir que les colonnes ayant des 1.

Bon bin là je dirais qu'il y a comme un problème dans ton explication...
 

Tophe2

XLDnaute Impliqué
Re : Extraire des données sur un fichier différent.

Bonjour le forum et skoobi

Le fichier joint plus haut et le résumé d'un listing de personne inscrivant des enfants.

Je souhaiterai extraire ceux qui sont inscrit sur les jours demandés (15/01 et/ou 22/01 donc présence du "1", mais pour les vacances scolaire un enfant peut être inscrit pour les vacances mais ne venir que quelques jours il faut également l'extraire à partir du moment où dans les colonnes désirées il y a un "1" il faut qu'ils apparaissent dans le fichier créer "J".

Il y a deux possibilités inscription les mercredis de l'année et les vacances scolaires, il faut donc extraire les listes des présents sans modifier le fichier X.

Je me rend bien compte que j'ai eu un peu de mal à expliquer la situation, en espérant avoir su mieux l'expliquer.

Cordialement
Christophe.
 

Discussions similaires

Statistiques des forums

Discussions
312 381
Messages
2 087 824
Membres
103 667
dernier inscrit
datengo