Excel - Extraire donnée de plusieurs feuille [Résolu/Fermé]

Messages postés
321
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2018
-
Bonjour,

J'ai un classeur dans lequel j'ajoute chaque jour une feuille. Je souhaiterais extraire la donnée en AU4 de chaque feuille et créer une liste de ces données dans uen autre feuille pour créer un graphique.
Réalisant une nouvelle feuille chaque jour, j'aimerais que cette extraction de donnée dans la nouvelle feuille se fasse rapidement en un simple clic.
J'espère que j'ai assez détaillé ma demande.
Petite précision : j'ai très très peu de connaissance en VBA.
Merci d'avance

Afficher la suite 

7 réponses

Messages postés
9169
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2019
1651
0
Merci
bonjour

avec une macro a mettre dans un module
- la feuille de recuperation est nommée FRecap
- dans FRecap j'ai nommé TRecap le tableau de recuperation
- mes cellules a recuperer sont A1
- si les feuilles a recuperer ne commencent pas a la 1° et ne terminent as a l'avant dernière modifier le f=1 to ..
donc a adapter

Sub Macro1()  
Dim nbVal As Long  
Dim f As Long  
  Sheets("FRecap").Range("TREcap").ClearContents  
  nbVal = Sheets.Count - 1  
  For f = 1 To nbVal  
     Sheets("FRecap").Range("TREcap").Cells(f, 1).Value = Sheets(f).Range("A1").Value  
   Next f  
End Sub


bonne suite
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2192
0
Merci
Bonjour,
1- définir un nom dans votre classeur (sources )
Insertion/Nom/Définir
Noms dans le classeur, saisir : nomfeuilles
Fait référence à, saisir : =STXT(ALEA()*0&LIRE.CLASSEUR(1);2;50)
2- Faire la liste de vos feuilles en tenant compte du nombre maxi de feuilles que votre classeur pourra atteindre :
En A1 saisir : =SI(LIGNE()>NBVAL(nomfeuilles);"";STXT(INDEX(nomfeuilles;LIGNE());CHERCHE("]";INDEX(nomfeuilles;LIGNE()))+1;30))
étirer la formule vers le bas, d'autant de lignes que votre classeur pourra contenir de feuilles
!!! si vous commencez la liste en A2, la formule devient :
=SI(LIGNE()-1>NBVAL(nomfeuilles);"";STXT(INDEX(nomfeuilles;LIGNE()-1);CHERCHE("]";INDEX(nomfeuilles;LIGNE()-1))+1;30))
3- En B1 saisir : =SI(A1="";"";INDIRECT("'"&A1&"'!$AU$4"))
Etirer cette formule vers le bas comme vous venez de le faire pour l'autre...

EDIT : un fichier exemple?
Cordialement,
-- Il n'y a rien de tel qu'une question idiote, seulement une réponse idiote. A.Einstein --
Messages postés
321
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2018
23
0
Merci
Merci beaucoup à vous deux, cependant "ccm81" je bloque avec la 4ème ligne et l'histoire du tableau de récupération. J'ai nommé la feuille et une cellule TREcap mais j'ai une erreur 1004 qui s'affiche au lancement de la macro.
Messages postés
9169
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2019
1651
0
Merci
re

dans FRecap le tableau est une plage A1:A2 par exemple
le fichier exemple sur le lien

http://www.cijoint.fr/cjlink.php?file=cj201012/cijussOqVF.xls

si tu n'y arrives pas envoies le tien (ou une partie et sans données confidentielles) ou essaies la solution de pijaku

RQ. la macro se lance avec ctrl+m depuis une feuille quelconque

bonne suite
Messages postés
321
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2018
23
0
Merci
Merci à vous deux car en fait j'avais pas nommer l'ensemble des cellules TRecap. Donc merci à toi ccm81 pour la macro et à toi pijaku pour la démarche pour nommer ;)

Bonne fin de journée
0
Merci
Bonjour
j'ai observer vos consignes, mais j'ai une question, est-il possible extraire les données de la feuille 1 de plusieurs classeur dans un dossiers ?

Je m'explique j'ai dans un dossier avec plusieurs classeur dont je souhaite récupérer les cellules (ex: A1 - G5 - F18 de la feuille 1) et les mettre dans un classeur (Recup) dans les lignes (une ligne par données de classeur).

Idéalement je cherche un logiciel d'extraction ou je dit dans le fichiers de récup je veux les données des cellules A1 - G5 - F18 de la feuille 1 de tout les classeurs du dossiers "x"

Dans le même genre que les extracteurs d'adresses mail.

Ce que je demande n'existe pas ?
pijaku
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2192 -
Salut Magano,
Regarde, dans cette astuce, l'exemple d'utilisation. Il boucle sur tous les classeurs d'un répertoire pour en "extraire" la valeur contenue en A1 Feuil1...
Merci pour votre reponse super rapide ! je vais étudier ça ;-)
0
Merci
Re-Bonjour
vous voyez une erreur la ?
il me donne une erreur 1004 et pointe sur:
RefersTo:="='" & Chemin & "[" & fichier & "]Feuil1'!$A$1"
-----------------------------------------------------------------------------------------------------
Option Explicit

Sub ImporterDonneesSansOuvrir()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "C:\Documents and Settings\Filipe\Bureau\test\", &H1&)

If objFolder Is Nothing Then
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
[B1] = Chemin
fichier = Dir(Chemin & "*.xls")
Do While Len(fichier) > 0
If fichier <> ThisWorkbook.Name Then
ThisWorkbook.Names.Add "Plage", _
RefersTo:="='" & Chemin & "[" & fichier & "]Feuil1'!$A$1"
With Sheets("Feuil2")
.[A1] = "=Plage"
.[A1].Copy
Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = fichier
End With
End If
fichier = Dir()
Loop
End If
End Sub

par avance merci
je suis pas doué...
pijaku
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2192 -
Bonjour,
Je ne vois pas d'erreur dans ton code.
La seule erreur qu'il pourrait se produire c'est que la formule avec laquelle on définit le nom plage soit fausse. "='" & Chemin & "[" & fichier & "]Feuil1'!$A$1" si Chemin ou fichier ne renvoie rien, le programme doit bugguer. Normal!
Teste le code pas à pas :
Sous VBE clic n'importe ou dans ce code et appuies sur F8 plusieurs fois, le code va s'exécuter ligne par ligne. En survolant les noms de variables avec ta souris, VBE affiche leur valeur. Teste comme ça déjà.

Sinon as tu téléchargé le zip de démonstration de l'astuce précédemment citée? Si oui l'as tu testé? si non fais le.