Copier/coller avec fichier fermé

B

BS

Guest
Bonjour le forum,

Attention, je m'explique , et surtout je tente d'être claire :))

La démarche globale :
- je vais réunir des fichiers excel dans un seul dossier. Ces fichiers comportent une ligne de données. (je veux récupérer toute la ligne 3)
- J'aimerai recopier chacune de ces lignes 3 dans un fichier central, les unes après les autres sans avoir à ouvrir chacun des fichiers de départ.
- De plus, j'aimerai que l'on copie le nom des fichiers dans la première colonne de ce fichier central. En fait, pour être plus claire, en mettant mes fichiers dans le Dossier, je vais les renommer en S1, S2, S3 , etc...et j'aimerai donc qu'en recopiant les lignes, la première colonne du fichier central soit S1,S2, S3 ect...

Après une petite reflexion de ma part, j'ai décomposé le problème comme ceci :
1. Chercher tous les fichiers contenus dans le dossier prévu. Tous ces fichiers commencent par S
2. Copier la ligne 3 de chacun des fichier
3. voir où est la première ligne de disponible dans le fichier central
4. Coller la ligne 3 dans la première ligne disponible du fichier central

Voilà le problème, j'aimerai donc savoir si déjà mon analyse est bonne et ensuite , un sacré coup de main car je ne m'en sors pas toute seule.

Pour l'instant, voilà ce que j'ai fait :

Pour le point 1 :

Sub Lire_repertoire
Dim i As Integer
Dim Fichier As String
Dim Nom As String
'lance une recherche de tous les fichiers commençant par "S" dans le repertoire D:\Datas\où sont stockés les fichiers bruts
With Application.Filesearch
.NewSearch:
'regarde dans le dossier désigné
.LookIn ="D:\Datas\":
'ne regarde pas dans les sous dossiers
.SearchSubFolders = False:
'recherche tous les fichiers commençant par "s"
.Filename = "s*"
'regarde les formes approchées du nom
.MatchallWordForms = True
'recherche des fichiers excel
.FileType = msoFileTypeExcelWorkbooks

If .Execute(msoSortOrderDescending) > 0 then
For i = 1 to .Foundfiles.count


Et là je bloque ....


Allo ?? vous êtes toujours là ?? pas endormis ?? :)))

Merci d'avance de votre aide !

BS.
 
T

Ti

Guest
Voilà une solution passant par ADO.
Je ne connais pas bien le composant ADO, aussi je demanderai à tous ceux passant par ce fil de bien vouloir tester ce fichier sur leur machine afin de me reporter les problèmes éventuels rencontrés.
 

Pièces jointes

  • LectureADOTi.zip
    17.9 KB · Affichages: 30
B

BS

Guest
Bonjour Ti, le forum ,

Je finissais par me dire que ce problème faisait fuir tout le monde :)

En tout cas merci de t'être penché sur mon pb !

Je suis en train de regarder le fichier et je découvre completement ADO (d'ailleurs ça veut dire Active X ... ? :)) J'étudie tout ça et surtout je tente de comprendre!

Sinon, il semblerait qu'un "Dim" n'est pas été défini dans :
Private Function ChercheFichiers(Chemin As String, Filtre As String)
car il ne reconnait pas "Right" et donc ça bloque ...

A très bientôt !

BS.
 
T

Ti

Guest
non, je n'oublie jamais de Dim ! c'est simplement la fonction Right qui fait souvent des siennes pour une raison que j'ignore. Réessaie en réouvrant ton fichier. Au besoin remplace ce Right par un Mid, ça marchera.
 
B

BS

Guest
Re,

Désolée , j'espère que je ne t'ai pas vexé :)
je viens de réouvrir le fichier ... toujours le message d'erreur
je viens de changer le Right par Mid , marche toujours pas ...

Je continue à étudier le code ...

BS.
 
T

Ti

Guest
non non, je ne suis pas vexé, j'ai juste oublié de mettre le petit gus qui rigole :) (et Celeda en sait quelque chose...)
Bon, si Right ne veut toujours pas marcher, remplace-le comme ça :

If Mid(Chemin, Len(Chemin)) <> Application.PathSeparator Then _

et ça devrait passer.
 
B

BS

Guest
Salut Ti, le forum ,

Et bien soit je ne suis pas douée ( bon d'accord , ça c'est sur ! :)) soit y'a un problème ...

Il ne veut toujours pas du Mid ...et j'ai toujours le message "erreur de compilation: Projet ou blibiothèque introuvable "
Mais je ne dessespère pas !!

BS.
 
T

Ti

Guest
bon, c'est un problème de référence, tu dois en avoir une qui n'est pas cochée dans ton fichier.
Pour info, dans ce fichier, voici les références que j'ai chez moi (avec Excel 2002, si tu as Excel 2000 les nombres ne seront pas les mêmes)

Visual Basic For Applications
Microsoft Excel 10.0 Object Library
OLE Automation
Microsoft Office 10.0 Object Library
Microsoft ActiveX Data Objects 2.7 Library
Microsoft Forms 2.0 Object Library

Regarde si ces références sont cochées, et si ça ne marche toujours pas, cherche et coche la référence suivante :

Microsoft Visual Basic For Applications Extensibility 5.3

avec tout ça normalement, même Right doit marcher...
 
B

BS

Guest
Ti,

T'es génial !

En fait, j'avais bien toutes les options cochées mais devant
"Microsoft ActiveX Data Objects 2.7 Library" il y avait écrit "Manquant" bien qu'il soit coché !
Enfin bref , un peu d'inattention et voilà ...

En tout cas, tu es un vrai prince, merci beaucoup, beaucoup, beaucoup, car ça fait un moment que je rame dessus , il faut bien le dire !!

BS.

PS : J'ai pas tout compris au code , ça te dérange si je reviens vers toi pour quelques explications après étude ? Ben oui , j'aime bien comprendre ce que je fais , et puis comme ça je pourrai réutiliser la méthode :)
Encore MERCI!
 
D

db84

Guest
suivi bouteille

bonjour a tous,
j'ai un enorme probleme je conais peu excel et VBA et je doit realiser le projet suivant:
Sous excel je doit créé une carte de controle avec les parametres suivant ( date et heure d'emplissage, numero de bascule, poids de ref et poids reel d'emplissage) tout cela en temps reel.
De plus toutes les heures ce fichier doit s'imprimer automatiquement puis se sauvegarder sous un autre nom afin d'etre archiver.
 
B

BS

Guest
Bonjour ti, Bonjour à tous !

Simplement pour infos et parce que j'avais cherché un moyen en parallèle...

Voici un exemple de ce que j'ai fait par un autre moyen mais pour arriver au même résultat à quelques différences près :
- finalement, j'ouvre et je referme les fichiers mais avec un
" Application.ScreenUpdating = False" pour que l'utilisateur ne voit rien
- je n'utilise pas ADO. Ce sera sans doute plus long avec le nombre de fichier mais ça offre l'avantage de garder la mise en forme.
- et enfin , c'est un peu plus à ma portée :))lol :))

Il faut tout mettre dans un même répertoire et indiquer ensuite le chemin du répertoire dans le code du fichier "central.xls".

ça parait un peu barbare sans doute pour ce qui excellent (bon facile le jeu de mot ) mais on fait ce que l'on peut :)

En tout cas merci Ti, de d'être penché dessus, c'est un cas que j'utilise dans un autre fichier !

BS.
 

Pièces jointes

  • Exemple.zip
    22.6 KB · Affichages: 41
  • Exemple.zip
    22.6 KB · Affichages: 40
  • Exemple.zip
    22.6 KB · Affichages: 37

Discussions similaires

Statistiques des forums

Discussions
312 963
Messages
2 093 998
Membres
105 906
dernier inscrit
aifa