Problème pour appelé une feuille & extraire des données sous excel - VB/VBA/VBS - Programmation
Marsh Posté le 15-07-2010 à 11:57:04
Hello
Pour recuperer le nom de ta feuille tu peux remplacer ta constante par
Feuille = Sheets(1).Name
Marsh Posté le 15-07-2010 à 12:10:02
Oui je pense c'est une bonne idée, mais où le placer dans ma macro? car si je le met comme constante, il compile pas.Et je my connais peu en VBA...
Marsh Posté le 15-07-2010 à 12:27:00
SuppotDeSaTante a écrit : Hello |
pour plus de précision voici comment est défini ma constante :
Code :
|
Voici la fonction principale :
Code :
|
et la fonction extraire valeur :
Code :
|
Marsh Posté le 15-07-2010 à 13:03:28
J'avais ete sur le lien de kiki29 à la base.
Le code donné par kiki29 est a modifier bien entendu puisqu'il lit les valeur dans le fichier fermé. Or toi tu veux connaitre le nom de la feuille presente dans un classeur, il faut donc l'ouvrir au prealable et recuperer le nom de cette feuille.
Donc dans ta boucle, tu ouvres le fichier et tu recuperes le nom de la feuille que tu mets dans la variable NomFeuille. Juste avant la ligne 28
Marsh Posté le 15-07-2010 à 13:36:49
aïe ! jai plus de 250 fichiers, si je les ouvres, ça va prendre un temps fou ! Déjà rien que la recherche récurssive me prend près de 7 min, ya pas d'autre solution, kiki29 en propose une plus bas :
NomFeuille = Left$(ShImport.Range("A" & NumeroLigne), 15)
malheuresement, elle ne donne rien... ou peut etre l'utilise je mal?
en plus théoriquement je n'ais pas besoin de connaitre le nom de la feuille car il y en a qu'une seule...
Escusez moi de ma probable naïveté, je m'y connais peu en VBA...
Marsh Posté le 16-07-2010 à 02:06:26
Salut,on peut via ADODB lire le nom des feuilles de classeurs sans ouvrir ces classeurs
mais cette méthode renvoie dans le cas de classeurs à feuilles multiples le nom des feuilles dans
l'ordre alphabétique qui ne correspond pas forcément à l'ordre des onglets dans ces classeurs
Le principal intéret de lire sans ouvrir les classeurs réside dans le fait que si l'on a
un plugin antivirus activé ( style Norton,AVG etc ) est de ne pas lancer ce dernier à chaque ouverture
La solution d'ouverture de chaque classeur ne sera pas forcément si lente mais pour le moment pas le temps
de mettre en place cette solution
Marsh Posté le 16-07-2010 à 11:11:27
J'ai regarder votre lien kiki29 et c'est bon, tout est nickel ça marche, merci bcp!
Marsh Posté le 17-07-2010 à 18:24:02
La version texte
|
Marsh Posté le 19-07-2010 à 14:42:11
Merci encore a kiki29 pour ce code ! J'aurais juste encore un petit problème : certains noms de feuilles contiennent des espaces et apparemment, la macro retourne #def dans les cellules de ces feuilles mal nommées... auriez vous une solution?
Marsh Posté le 19-07-2010 à 17:08:48
Salut,modifier ExtraireValeur en y ajoutant Feuille = Replace(Feuille, "'", "" )
|
Marsh Posté le 19-07-2010 à 18:35:35
Re,sinon peut-être mieux en laissant ExtraireValeur intacte
et en plaçant la modif dans NomFeuilles(sNomFichier As String)
|
Marsh Posté le 15-07-2010 à 08:24:02
Bonjour à tous !
J'utilise cette super macro d'un ancien sujet :
http://forum.hardware.fr/hfr/Progr [...] m#t1717605
pour extraire les données de mes cellules et les répertoriés dans un fichier recapitulatif. La macro recherche recursivement tous les classeurs dans les dossier, et extrait les données de : "Feuil1"
voici mon problème : mes fichiers excel n'ont qu'une unique feuille mais le nom n'est jamais Feuil1, du coup la macro renvoi #REF pour toutes les cellules de ces classeurs. Existe il une solution pour que cette macro ne s'occupe plus du nom de la feuille mais choisi par exemple toujours la premiere feuille du classeur?
Merci !