Autres [RESOLU] Besoin d'infos concernant un fichier de Jacques Boisgontier

Roland_M

XLDnaute Barbatruc
Bien le bonjour à tous,

je m'adresse à JB concernant ce fichier que j'ai eu sur son site
--------------------------------------------------------------------
Sub LitClasseurFermé()
ChampOuCopier = "A1:A4"
Chemin = ThisWorkbook.Path
Fichier = "stock.xls"
onglet = "Janvier"
ChampAlire = "B2:B5"
LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
End Sub

Sub LitChamp(ChampOuCopier, Chemin, Fichier, onglet, ChampAlire)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "\[" & Fichier & "]" & onglet & "'!" & ChampAlire
Range(ChampOuCopier) = Range(ChampOuCopier).Value
End Sub
---------------------------------------------------------------

le l'ai adapté selon mes besoins c'est impeccable !
mais il y a un souci avec le chemin et fichier, un problème de slash \ en trop
tant qu'on se situe dans un seul dossier c'est OK: Chemin\Fichier
le problème c'est quand on se situe dans plusieurs sous dossiers: Dossier1\Dossier2\\Fichier ! ça devrait faire Dossier1\Dossier2\Fichier

ça doit être Range(ChampOuCopier).FormulaArray = "='" & Chemin & "\[" & Fichier & "]" & onglet & "'!" & ChampAlire
qui rajoute des slash !?

j'ai tout essayé le problème demeure, même en supprimant celui dans la formule
ce n'est pas le premier slash qui pose problème c'est après quand il y plusieurs sous dossiers

si JB passe par ici il pourrait certainement me dépanner !?
à moins que quelqu'un connaisse ce problème ?

merci d'avance pour votre aide.
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Voir également cette solution en macro4
Les 2 fichiers doivent être dans le même dossier sinon adapter la macro.
Le fichier charpentes est pour l'exemple.
Bon un petit plus, par contre pas trouvé pour le truc de JB
Le code du fichier
Bruno
VB:
Sub vachercher()
With UserForm1
.ComboBox1.Clear
Chemin = "'" & ThisWorkbook.Path & "\"  'à adapter au besoin
Fichier = "[charpente.xls]" ' le nom du fichier à lire
Onglet = "Tuiles'!" 'le nom de l'onglet à lire
For k = 7 To 65000 'commencer à lire à la ligne 7
ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite
ChampALire2 = "R" & k & "C2"
.ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire)
.ComboBox1.Column(1, .ComboBox1.ListCount - 1) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2)
If .ComboBox1.List(.ComboBox1.ListCount - 1) = 0 Then
.ComboBox1.RemoveItem (.ComboBox1.ListCount - 1)
Exit For
End If
Next
.Show
End With
End Sub
 

Pièces jointes

  • lireclasseurfermé2.xls
    57 KB · Affichages: 5
  • charpentes.xls
    40 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
@Rolland_M
Bonsoir Rolland
je viens de tester avec dossier+sous dossier ça fonctionne

et
tant qu'on se situe dans un seul dossier c'est OK: Chemin\Fichier
le problème c'est quand on se situe dans plusieurs sous dossiers: Dossier1\Dossier2\\Fichier ! ça devrait faire Dossier1\Dossier2\Fichier

non!!
ca doit etre "Dossier1\Dossier2" pas fichier

exemple
VB:
Sub LitClasseurFermé()
ChampOuCopier = "A1:A4"
Chemin = ThisWorkbook.Path & "\mondossier1\sous dossier 1"
Fichier = "stock.xlsx"
onglet = "Janvier"
ChampAlire = "B2:B5"
LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
End Sub

Sub LitChamp(ChampOuCopier, Chemin, Fichier, onglet, ChampAlire)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "\[" & Fichier & "]" & onglet & "'!" & ChampAlire 'formule matricielle
Range(ChampOuCopier) = Range(ChampOuCopier).Value 'supression des formules
End Sub
 

Pièces jointes

  • exemple pour Rolland .zip
    22.4 KB · Affichages: 7

Roland_M

XLDnaute Barbatruc
bonsoir patrick, merci pour ton intervention

ben pourtant moi j'ai le tour !?
en fait c'est un peu compliqué, je ne me contente pas de charger un champ sur un fichier
je dois charger des centaines de fichiers que je recopie à la queleuleu !

tous les fichiers dans le dossier principal sont chargés et ok
mais quand on passe aux sous dossiers plus rien ! on des #Ref partout dans les cellules
et quand je regarde dans la cellule (avant la recopie des .value)
on voit très bien dossier1\dossiers2\\fichier d'où l'erreur !

EDIT: ça fonctionne ! pour l'instant, si problème je reviens !?
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
cette erreur est du au chemin Chemin = ThisWorkbook.Path ..........
si plusieurs dossiers et/ou plusieurs fichier peut être passer par une fonction récursive avec dir qui visitera l'arborescence complete

n'en sachant pas plus de ton contexte je ne peux en dire plus

tout tes fichiers sont ils dans un même sous dossier?
la plage a récupérer est elle la même a chaque fichier ?

de toute les façons c'est dans la sub d'appel (LitClasseurFermé)que ça doit se régler
l'autre sub ne doit pas être modifiée
a tu testé mon exemplaire ?
vue de la formule de l'exemplaire dans le zip que je t'ai donné
demo8.gif
 

Roland_M

XLDnaute Barbatruc
re

je voulais essayer cette formule car,

environ 400 fichiers avec un range de 150 cellules

ADODB.connexion c'est pas fiable selon les versions Excel,
même en testant la version et mettre la fonction en conséquence
durée environ +2min et en plus j'ai des manques

ExceMacro4 on ne peut pas charger un champ, c'est cellule par cellule c'est très long ! + 2min

Je viens de faire un essai avec celle de JB environ 5 Secondes, fabuleux !
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
si j'ai 2 exemples de fichiers sources et tout les paramètres que tu souhaite je te fait un exemple avec un dir récursif si tu veux en partant du 1er dossier parent

Je viens de faire un essai avec celle de JB 400 fichiers avec un champ d'environ 150 cellules environ 5 Secondes
fabuleux !
c'est meme un peu long je trouve 150 cellules c'est du pipi de chat pour excel quelque soit la version

vue avec 200 cellules c'est instantané(même pas le temps de relâcher le bouton )
demo8.gif
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
sur 400 fichiers !
et je traite les données ensuite !

même en les chargeant il faut +3min !
donc 5 sec selon tous mes essais, y a pas mieux !

EDIT: tu n'as rien compris ! c'est pas un copier/coller dans un même fichier !
il s'agit de loader des fichiers ! traiter les données chargées ! c'est pas du tout pareil !
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
re
oui c'est ça, 5 secondes pour 400 fichiers avec deux ranges séparés qui font env 150 cellules chacun !
et tout le traitement qu'il y a derrière !

je peux te dire que j'ai fais multiple essais et tout ça en 5 sec c'est fabuleux, j'y croyais pas !
question disque dur c'est un SSD alors ...
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette