compliquez vous la vie celle ci vous le rendra

D

dIDIER 2

Guest
bonjour a tous
Un petit probleme pour vous dilater l'esprit en ce Froid weekend.
Inutile d'aller dehor il fait trop froid, planchez donc sur mon ptit probleme.


( je tourne avec excel l997 sous windaube NT ou 98)

probleme:

j'ai un classeur source qui doit lire et prendre dans d'autre classeurs fermés des informations.

Les noms de tout ces classeurs fermés sont variable en fonction de la semaine, du n°point de vente,des heures complémentaires

Il se présente tous sous cette forme au nivau de leur nom.
N°semain........pvt.......heure comp.......xls (a la place des pointillé se sont des valeurs variable et aléatoir en fonction des donées de ces classeurs) ,et ils sont tous dans le même répertoir windaube (c/heures)

Mon big probleme
Dans le classeur source en tapant le n° de la semaine
j'aimerais voir apparaitre toutes les données des classeurs concernés.

Par exemple si je selectionne dans le classeur source
la semaine 22

les informations des cellules A1et B1 De la Feuille 1 de tout les classeurs concernés par la semaine 22 doivent m'apparaitre dans le classeur source.

Ainsi je devrais optenir Des informations sur les cellule A1 et B1des classeurs suivant (au hasard)
N°semain 22 pvt 4120 heure comp 0xls
N°semain 22 pvt 4125 heure comp 10xls
N°semain 22 pvt 4135 heure comp 2xls
N°semain 22 pvt 4155 heure comp 207xls
N°semain 22 pvt 4160 heure comp 99xls
etc
Vous remarquerez que a part le N° de semaine aucune des autres données chiffré n'est fixe. J'ai classé les points de vente dans un ordre chronologique,
mais cela n'est pas obligatoire (mais il ne dépasse pas 4 chiffres).
pour les heures cela ne dépasse pas trois chiffre.
Pour un même N° de semaine il ne peut pas exister plus de 34 classeurs (moins c'est possible)
Le total de tout ces classeurs dans le répertoire windaube n'excede pas 2000 (il ne peut pas y avoir de doublon "windaube oblige par contre un même N° de semaine avec le même n°de point de vente peut exister avec une différence d'heure.....cela doit apparaitre dans le classeur source")

Un conseil une idée, une macro une démo sont les bienvenues

Je bloque vraiment et presque a tous les niveaux.
crdlmt
Didier2
 
D

dIDIER 2

Guest
Salut thierry
Je laisse libre cour a ton imagination , car je n'ai pas encor opter pour une méthode particuliére.
Par contre j'ai oublie de préciser que tous ces classeur contiennent des macro, sauf le classeur source pour l'instant.
Il s'agit en faite d'un vaste projet pour me simplifier la vie au niveau de la lecture de ces classeurs.

L'eau été bonne ?
Didier
 
@

@+Thierry

Guest
Didier

donc ... on part à zéro ...

Si tes classeurs sont structurés... le mieux et le plus simple à première vue est de générés une formule qui écrirait un lien en VBA un peu comme j'avais fait dans une démo USFControleFormules.zip (40k)

Je te conseille de regarder ... (UserForm du Haut)

Pour ton projet on pourrait faire le même principe mais au lieu d"écrire des formule en changeant le feuille uniquement on écrit le Path Complet... Et on écrirait le lien en dûr sur un tableau de ton Classeur Maître...

Attention toutefois : LE NOM DU FICHIER ...
N°semain........pvt.......heure comp.......xls (a la place des pointillé se sont des valeurs variable et aléatoir en fonction des donées de ces classeurs) ME SEMBLE UN PEU VAGUE.... (et ceci quelque soit la méthode retenue pour lire sur fichier fermés...)

...@suivre...
@+Thierry
 
D

dIDIER 2

Guest
re bonjour thierry

Met une serviette tu vas prendre froid au dos a rester là, tout mouillé devant ton ordinateur amphibi par ce froids de cannard ......!!!!!!

concernant :
Attention toutefois : LE NOM DU FICHIER ...
N°semain........pvt.......heure comp.......xls (a la place des pointillé
se sont des valeurs variable et aléatoir en fonction des donées de ces
classeurs)
ME SEMBLE UN PEU VAGUE.... (et ceci quelque soit la méthode
retenue pour lire sur fichier fermés...)

J'ai la certitude que chaqu'un de ces classeurs aurra un nom de ce type,
car le nom est généré par macro directement sans demandé l'avis a l'utilisateur puis celui-ci l'envoie par intra net a reception il est stocké
dans c/ heures.

Par contre j'aimerais ne pas passer par des boites de dialogues ou userforme sur le classeur source.

Tout simplement une cellule pour le n° de semaine et les info des autres classeur s'affichent dans un tableau

voila
 
D

dIDIER 2

Guest
ma main a ripé sur envoie accidentelement

je continu donc (tu peux mettre ton pijama thierry c'est bientot l'heure d'un gros do do)...!!!!!!!!!

En faite vu mon niveau vba ,quand il y a des userformes, j'ai beaucoup de mal a me repérer dans les macros, c'est pour cela que je préfére rester
sur du simple.

crdlmt
Didier2
 
@

@+Thierry

Guest
RE Didier

Que ce soit par UserForm ou par saisie d'un numéro de semaine dans une cellule précise, le principe est le même... Seul le déclenchement de la macro est différent.

Je ne vois toujours qu'une difficulté c'est ce Nom de fichier... as tu vu la démo ? tu comprendras pourquoi... c'est VBA qui écrit la formule...

En fait avec Quatre fichiers par semaine comme dans ton exemple ce serait OK ... VBA écrirait une peu comme çà :

WeeKNumber = Range("A1")
Chemin = "C/Heure/"
Suite1 = "pvt 4120 heure comp 0.xls"
Suite2 = "pvt 4125 heure comp 1.xls"
Suite3 = "pvt 4135 heure comp 2.xls"
Suite4 = "pvt 4155 heure comp 207.xls"
Suite5 = "pvt 4160 heure comp 99.xls

Range("A10").Formula = "=[" Chemin & "NoSEmain " & WeekNumber" & Suite1]Feuil1!A1"
Range("A11").Formula = "=[" Chemin & "NoSEmain " & WeekNumber" & Suite2]Feuil1!A1"
Range("A12").Formula = "=[" Chemin & "NoSEmain " & WeekNumber" & Suite3]Feuil1!A1"
Range("A13").Formula = "=[" Chemin & "NoSEmain " & WeekNumber" & Suite4]Feuil1!A1"
Range("A13").Formula = "=[" Chemin & "NoSEmain " & WeekNumber" & Suite5]Feuil1!A1"

Donc si tes noms sont variables aussi pour la Suite1 il faudrait prévoir toutes les suites possibles..... Ensuite un autre truc c'est le nom des Feuilles ??? (car je viens d'y penser en écrivant cet exemple, ici "Feuil1 ...")

C'est çà ton problème, c'est la structure de tes fichiers dans leur noms...

Sinon faudrait écrire une sorte d'usine à gaz sur le getfilename pour extraire que les X caractère de gauches pour s'arrêter au numéro de semaine ... mais c'est vraiment trop compliqué et sans que je soies sûr d'un résultat.

Bon Courage
@+Thierry
 
D

dIDIER 2

Guest
re thierry
tout les classeurs ont une feuille qui s'appele feuil1 pour l'omogénéité.En faite ces classeur découlent de plusieurs de mes intervention sur le forum.
tu te rappele le classeur qui créer un autre classeur,lui donne un nom,lui colle une macro,l'enregistre et le ferme le tout par macro.Il sagit de ces classeurs sur lequels nous travaillons ce soir.

procedons par ordre sur chaqu'un des sujets

Le probleme vient du nom des classeurs

on sait que le N° de semaine est fixe donc il ne nous reste qu'a trouver 2 variables, cela tu l'a compris. Mais en faite ces deux variable sont facultatives ce qu'il faut trouver c'est les classeurs commençant par N°sem22
le tout est de savoir si l'on peut dire en vba de lire dans tous les classeurs commençant par N° de semaine 22 tout en se fichant du reste.

voila ma petite solution téhorique
 
S

spirou - christophe

Guest
Bonjour

Une demo sur ce principe m'intéresserait Thierry, j'ai déjà fais une premiere démarche
dans ce sens avec mon message (suivre le lien)

http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=16656&t=16656$

Mais j'ai pas voulu allez plus loin, gêner par le boulot que cela pouvait occasionner
Je me rends compte maintenant que je suis pas le seul intéressé par ce
principe.

"j'ai un classeur source qui doit lire et prendre dans d'autre classeurs fermés des informations" de didier
exactement ce que je cherche.

Moi thierry c'est que j'ai également un classeur source ou je veux prendre des informations en
fonction des entreprises dans cette exemple

Ce que je voulais était

- Si je choisi l'entreprise A et "version de fichier" j'affichais la date et
le nombre de mAJ du fichier dupliquer dans les cellule blanches concernant l'entreprise concerné.

- La cellule Orange était la nouvelle date a écrire dans le classeur source.
- le fait de choisir entreprise A sélectionnais deux colonnes à partir de (B2 et C2)
qui lui était attribué.
- Copier jusqu'a la ligne ex 100 donnais la sélection de colonne B2 à B100 et C2 à C100 à copier du
classeur dupliquer au classeur source.
- Indice du fichier correspondait à une incrémentation du fichier entreprise dans la même version
du fichier

exemple:

Gestion_version du fichier_entreprise_ et indice du fichier si il y avait.
Gestion_001_Entreprise A_a
Gestion_001_Entreprise A_b

001 est pour moi également un répertoire mais " a " non

Le fichier est séparé des partis par des trait bas _

Je crois que didier désire également dans ce même style mais pour poi cela est trop dure pour moi à faire. donc j'avais laisser tomber ou plutot j'avais mis celà sous le coude.

@+
Spirou - Christophe
 

Pièces jointes

  • Essaicopiercoller.zip
    22.1 KB · Affichages: 48
@

@+Thierry

Guest
Bonsoir Spirou Christophe et RE Didier...

Humm on va pas tout mélanger, car je ne sais plus où j'en suis entre les deux ... Je vais essayer de voir déjà pour Didier... Si je me mélange les Pinceaux on est pas sorti de l'auberge...

Donc on regardera après ton truc Christophe.

Donc Didier... Huum Huum c'est bien ce que je craignais et c'est bien comme celà que je finissais mon dernier post...
Je tente de m'imaginer....

Admettons que j'arrive à faire cette macro ce serait dans ce style

X = Range("A1") (le numéro de semaine)

Pour tous les classeurs du répertoire c:\Heure
If left(classeur.name, 13) = "No Semaine " X Then
.........
c'est justement pas Then ou plutôt devrais dire ZEN !!

Car là je fais quoi ? je ne peux que ouvrir le classeur, copier la valeur d'une cellule précise et venir te la coller quelque part dans ton classeur de base... Refermer ce classeur ainsi ouvert, allez en ouvrir un autre recommencer etc etc.... C'est un peu vraiment beaucoup passionnément l'usine à gaz !!! ....

Pourquoi ne pas structurer tes noms de fichiers ? ce serait dix mile fois plus propre et ensuite simple à gérer avec des liens tout simples... même si on les écrit en VBA à la volée sur demande.... Enfin moi je vois les choses comme çà avec mes yeux de développeur pro.

Voilà réfléchis y ... car en plus tu auras la flexibilité de "Voyager" facilement dans tes feuilles sans les ouvrir... tandis que l'usine à gaz quand à elle sera là bête et méchante à te reporter la cellule précise programmée... Un peu comme si il s'agissait de simple fichier TXT alors que nous somme dans des classeurs XLS qui peuvent faire bien plus... Mais il faut pour cela respecter certaines règles....

bonne nuit
@+Thierry
 
@

@+Thierry

Guest
Bon alors Spirou

Pour toi c'est beaucoup plus simple puisque tes noms de fichiers sont structurés !

Regarde aussi la démo en lien ci dessus... D'ailleurs je crois que c'est la même démo que j'avais faite pour toi à l'époque !... Il suffit de gérer les Paths complets des fichiers et leur nom en plus du nom de feuille et le tour est joué ...

Bon courage
@+Thierry
 
D

dIDIER 2

Guest
Salut thierry et spirou

Voici une formule que j’avais recopié sur site il y a un ou deux ans elle permettait de récupéré des données sur un fichier endommagé

La voici en l’état pour moi c’est un peu du chinois

Récupération de données dans un classeur fermé
(méthode "classique" par établissement d'une liaison temporaire)

Sub test()
GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "\[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub

Je remercie l’auteur pour ce prêt très weebien

Si cela pouvait nous aider
Apparemment on n’ouvre pas le classeur on pioche dedans

Je vais continuer mes recherches dans mes archives il me semble que j’ai d’autre exemple, je mets tout sur disque, le tout est de retrouver le bon disque sur 200.
A plus

Crdlmt
Didier
 
@

@+Thierry

Guest
Bonjour Didier, Spirou et tout le Forum

oui oui je connais cette macro elle a fait le tour de la planète Web. C'est une cousine de la Function que j'ai donné à Spirou dans ce ce fil de discussion

Apparemment par contre Ron écrit un lien à nouveau, un peu comme ma proposition plus haut.

Mais tu peux me retrouver toutes les macros et autres function du Web, le problème reste entier.. on n'a pas le nom du fichier ! Ici Ron l'a !! ("TestADO.xls")...

Faudrait arriver à mixer un code comme l'usine à gaz que j'ai suggérée et ce genre de truc... Mais, disons que le résultat, au lieu d'être Usine à Gaz, sera une Usine quand même.

C'est pourtant simple d'avaoir des noms structuré de fichiers ... Non ?

Bon Dimanche
@+Thierry
 
D

dIDIER 2

Guest
Coucou me revoila avec des subjection

Sur un de mes disques je viens de retrouver des exemples en zip trop gros pour etre mis sur ce forum je peux vous les envoyer par email si vous le désirez.
Il y a :
établir la list des fichier xld’un répértoire
recherche de fichier avec base diverse
vérifier si fichier est ouvert



En attendant voici une macro qui ouvre tout les fichiers xld’un même repertoire ,c’est une autre possibilité a envisagé

Sub Ouvre_Tous_Fichiers ()
'Ouvre tous les fichiers .xls dans C:\Data
Dim File_Is As String
File_Is = Dir("C:\Data\*.XLS")
Do Until File_Is = ""
Workbooks.Open Filename:="C:\data\" & File_Is
' <<Vous pouvez insérer ici du code pour effecuer des traitements sur vos fichiers du style si pas semaine 22 alors ferme fichier (note didier)
File_Is = Dir
Loop
End Sub
Une fois ouvert on peut sans doute faire un test pour voir si ils correspondent a ce que l’on cherche, et fermer ce qui ne nous interresse pas.puis pomper les données dans les classeur ouvert vers le classeur source, en ne travaillant qu’en feuille active, (je rappele que chacun de mes fichiers, n’a qu’une seul feuille acrive.)
Je remercie le genereux weebien qui contribu a nous faire progresser
Je pense que cela peut nous servir( si l’on désir traiter l’info a partir de fichier ouvert) .
Mais le zip le plus interréssant et sans doute le zip qui permet de connaître tous les fichier x.l d’un répertoir

J’attend vos réponse pour les fichier zip.
Je crois qu’en combinant plusieur de ces macro on doit pouvoir résoudre nos problemes.
Elas pour moi je ne suis pas aussi doué que vous en vba, mais j’aprend lentement, mais surement.
A plus
 

Discussions similaires

Réponses
20
Affichages
645
Réponses
9
Affichages
741
Réponses
9
Affichages
301

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko