extraire données dans plusieurs classeur fermé excel

max59

XLDnaute Nouveau
Bonjour,

Pour mon travail, il m'est demandé d'extraire une colonne de valeurs excel non nuls se trouvant dans plusieurs documents excel qui se trouvent dans un même dossiers (c'est fichiers ont la même forme et même nom d'onglet)et de les insérer dans un autre classeur.excel sous forme de liste afin d'établir un pareto. Je voudrai que tous les fichiers dont j'extrais les valeurs soit fermés.

Quelqu'un pourraît-il m'aider, je vous remercie?
 

joelpelle

XLDnaute Junior
Re : extraire données dans plusieurs classeur fermé excel

Max,

T'as du faire une erreur en inscrivant ton chemin :

.

La macro m'extraits que le fichier n°1

car avec les fichiers que tu as joint, ça fonctionne. As tu gardé la même trame ? car dans tes fichiers, ce ne sont que les colonnes B de l'onglet "données" qui sont copiéEs, car il n'y en a pas d'autres.

.

... que l'onglet n°1 alors que c'est plutôt l'onglet n°7 qui me faudrait.

Tu le sors d'où cet onglet N° 7 ??? il n'est pas présent dans tes fichiers, il m'est donc difficile de le deviner pour écrire la macro non ?

Dis m'en un peu plus, car là ce n'est pas très clair.

Cordialement

Joël
 
Dernière édition:

max59

XLDnaute Nouveau
Re : extraire données dans plusieurs classeur fermé excel

Excuse moi,c'est vrai que j'ai pas trop préciser, mais j'était au boulot et je faisait plusieurs choses en même temps. En fait, j'ai un répertoire qui comporte plusieurs classeurs excel (pour l'instant 3 mais ça peut être plus par la suite) qui contiennent 8onglets chacuns(pour chaques classeurs les onglets(titres,nombres) sont identiques).Ce que je voudrais faire c'est d'extraire la liste qui se trouve dans l'onglet n°7 (qui correspond à des défauts de véhicules rangés par types d'essais )et tous les réunir dans un même onglet qui se trouve dans un classeur différents( de préférence l'un à la suite de l'autres).J'espère que mon explication est plus claire et aide à mieux comprendre.
 

max59

XLDnaute Nouveau
Re : extraire données dans plusieurs classeur fermé excel

Ben alors ça va être très dur de pouvoir t'aider, car je ne te cache pas qu'en cas d'aide, c'est pas le confidentiel qui nous intéresse.

Cordialement

Joel

Je le sais bien.J'ai fait quelque modif sur les classeurs afin d'avoir un peu d'aide.
 

Pièces jointes

  • essai.zip
    17.5 KB · Affichages: 65
  • essai.zip
    17.5 KB · Affichages: 69
  • essai.zip
    17.5 KB · Affichages: 73

joelpelle

XLDnaute Junior
Re : extraire données dans plusieurs classeur fermé excel

Bonjour Max,

Voici le fichier que je t'ai modifié et qui importe tous tes onglets.

Je mets un filtre pour p3 mais tu peux toujours voir l'ensemble du récapitulatif du tableau

Ouvre la macro,(modifier) je t'ai expliqué comment rajouter d'autres onglets si tu en a plusieurs dans un même fichier.

A partir de là tu devrais pouvoir te débrouiller.

N'hésite pas si tu as besoin d'aide, en étant précis dans ta demande.
Tu me dis si ça te va.
Cordialement

Joël
 

Pièces jointes

  • liste.zip
    17.2 KB · Affichages: 82
  • liste.zip
    17.2 KB · Affichages: 94
  • liste.zip
    17.2 KB · Affichages: 101

max59

XLDnaute Nouveau
Re : extraire données dans plusieurs classeur fermé excel

Bonjour Max,

Voici le fichier que je t'ai modifié et qui importe tous tes onglets.

Je mets un filtre pour p3 mais tu peux toujours voir l'ensemble du récapitulatif du tableau

Ouvre la macro,(modifier) je t'ai expliqué comment rajouter d'autres onglets si tu en a plusieurs dans un même fichier.

A partir de là tu devrais pouvoir te débrouiller.

N'hésite pas si tu as besoin d'aide, en étant précis dans ta demande.
Tu me dis si ça te va.
Cordialement


Joël

Merci, je regarde ça de suite et je te tiens au courant .
 

max59

XLDnaute Nouveau
Re : extraire données dans plusieurs classeur fermé excel

Merci pour ton aide, ta macro extraits tous les données pui après fait un filtre.Moi je voudrai plutot faire un filtre sur les classeurs à extraire est prendre que les données "p3".

Peux-tu me dire comment faire?
merci
 

joelpelle

XLDnaute Junior
Re : extraire données dans plusieurs classeur fermé excel

Bonjour le fil, bonjour Max,

Si j'ai bien compris, tu ne veux que les résultats "p3" dans le fichier liste et sans filtre, c'est bien ça ?

Ceci dit avec le filtre final ce n'est pas plus mal, à mon avis...

Cordialement

Joël
 
Dernière édition:

joelpelle

XLDnaute Junior
Re : extraire données dans plusieurs classeur fermé excel

Bonjour Max, bonjour le Forum,

Désolé pour l'attente, mais j'étais un peu occupé !

Voici ton fichier dans lequel on ne conserve que les "p3" sans filtre.

J'espère avoir répondu à ton besoin.

Cordialement

Joël
 

Pièces jointes

  • liste.zip
    17.7 KB · Affichages: 119
  • liste.zip
    17.7 KB · Affichages: 127
  • liste.zip
    17.7 KB · Affichages: 123

max59

XLDnaute Nouveau
Re : extraire données dans plusieurs classeur fermé excel

Bonjour Max, bonjour le Forum,

Désolé pour l'attente, mais j'étais un peu occupé !

Voici ton fichier dans lequel on ne conserve que les "p3" sans filtre.

J'espère avoir répondu à ton besoin.

Cordialement

Joël

Merci beaucoup ceci fonctionne.mais un peu long pour tous mes fichiers(18)
j'ai pensé utiliser la fonction"ADODB.connection" en plus celle-ci ne m'ouvre pas physiquement les classeurs.

j'ai créé une macro mais celle-ci m'indique "Erreur d'éxécution'13': Incompatibilité de type"

Voici ma macro:

Sub RequeteClasseurFerme()

Dim Repertoire As String
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
Dim x As Integer

'empeche le scintillement de l'écran
Application.ScreenUpdating = False

'Définit le classeur fermé servant de base de données
Repertoire = "C:\Nom\"
Fichier = Dir(Repertoire & "\*.xls")

' va parcourir le répertoire pour y trouver tous les fichiers excel,et pour chaque fichier trouvé,
'en extraire le contenu de la feuille "plan" et le placer dans la feuille
'"Feuil1" du classeur actif

Do While Fichier <> ""

Set Cn = New ADODB.Connection

'Etablit la connection
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With

'Nom de la feuille dans le classeur fermé
NomFeuille = "Plan"

'Définit la requête (Attention à ne pas oublier le symbole $ après le nom de la feuille).

texte_SQL = "SELECT * FROM [" & NomFeuille & "$] WHERE Id_skill <> 0"

If Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan d'actionVPI").Range("I" & i).Value = "p3" Then

Worksheets("Feuil1").Range("B" & j & ":B" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("C" & i & ":C" & i).Value
Worksheets("Feuil1").Range("D" & j & ":E" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("D" & i & ":E" & i).Value
Worksheets("Feuil1").Range("I" & j & ":I" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("G" & i & ":G" & i).Value
Worksheets("Feuil1").Range("M" & j & ":M" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("H" & i & ":H" & i).Value
Worksheets("Feuil1").Range("G" & j & ":G" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("E2").Value
Worksheets("Feuil1").Range("J" & j & ":J" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("F" & i & ":F" & i).Value
Worksheets("Feuil1").Range("F" & j & ":F" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan").Range("B" & i & ":B" & i).Value
End If

Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)

'Ecrit le résultat de la requête à partir de la première ligne du classeur actif
'qu'il trouve vide (dont la cellule Ai est vide)

x = ThisWorkbook.Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1

ThisWorkbook.Sheets("Feuil1").Cells(x, 1).CopyFromRecordset Rst
'Ferme la connection

Rst.Close
Set Rst = Nothing
Cn.Close
Set Cn = Nothing

'passe au fichier suivant
Fichier = Dir

Loop

Application.ScreenUpdating = True

MsgBox "Opération terminée."

End Sub


Quelqu'un peux-t'il m'aider?
 

cllessard

XLDnaute Nouveau
Re : extraire données dans plusieurs classeur fermé excel

Bonjour,

J'essai de faire la même chose que vous! Lire une série de feuilles dans une série de fichiers fermés. Je trouve votre dernière solution super mais je ne suis pas certaine de bien comprendre au complet ce que vous faite dans la procédure:

Pouvez vous me dire ce que fais la section suivante :

'Nom de la feuille dans le classeur fermé
NomFeuille = "Commentaires"

'Définit la requête (Attention à ne pas oublier le symbole $ après le nom de la feuille).

texte_SQL = "SELECT * FROM [" & NomFeuille & "$] WHERE Id_skill <> 0"

If Application.Workbooks([" & NomFeuille & "$]).Worksheets("plan d'actionVPI").Range("I" & i).Value <> "" Then

Worksheets("Feuil1").Range("B" & j & ":B" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("C" & i & ":C" & i).Value
Worksheets("Feuil1").Range("D" & j & ":E" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("D" & i & ":E" & i).Value
Worksheets("Feuil1").Range("I" & j & ":I" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("G" & i & ":G" & i).Value
Worksheets("Feuil1").Range("M" & j & ":M" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("H" & i & ":H" & i).Value
Worksheets("Feuil1").Range("G" & j & ":G" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("E2").Value
Worksheets("Feuil1").Range("J" & j & ":J" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("F" & i & ":F" & i).Value
Worksheets("Feuil1").Range("F" & j & ":F" & j).Value = Application.Workbooks([" & NomFeuille & "$]).Worksheets("Commentaires").Range("B" & i & ":B" & i).Value
End If

Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)

'Ecrit le résultat de la requête à partir de la première ligne du classeur actif
'qu'il trouve vide (dont la cellule Ai est vide)


Ne soyez pas surpris c'est moi qui ai changé le nom de la feuille à lire dans les 26 classeurs. Tout mes classeurs ont la même structure. Je fais un classeur qui compile toute les autres classeurs.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 400
Messages
2 088 083
Membres
103 710
dernier inscrit
amin Saadaoui