qqun pour m'aider merci

J

JJ

Guest
Bonne année 2006 à tous les Excelnautes,

je dois rendre pour demain soir un fichier 'RECAP' composé de 170 fichiers Excel dans un répertoire(tous les fichiers excel identiques, 9 colonnes, seul le nombre de lignes varie pour chaque fichier, mais le nombre de lignes total des 170 fichiers ne dépasse pas les 65000 lignes de RECAP)

J'ai commencé en faisanr RECAP, copier (le fichier) coller dans RECAP, puis 2ème fichier copié à la suite du 1er dans RECAP....(sachant que j'ai 2 répertoires identiques à agglomérer , ca fait 340 fichiers excel à copier/coller dans les 2 recap ! )

QQun a t il une idée pour me faciliter la vie?
Bonne soirée
JJ
 

ya_v_ka

XLDnaute Impliqué
Salut JJ

D'abord je suis désolé, je n'ai rien compris à ta question et je pense que même en ayant saisi le sens je ne pourrais t'aider...

Mais je me permets d'intevenir pour te signaler que ton titre te porte d'ores et déjà préjudice quant à la qualité ou à la quantité des réponses, un petit tour sur la charte te permettrait de corriger ce point de détail...

Ya'v
 
J

JJ

Guest
Bonsoir oui je n'ai pas ete précis dans ma demande. Mille excuses!

En fait, je veux reconstituer dans 1 fichier recap toutes les lignes des 170 fichiers mis à la 'queue leu leu !!' dans recap.
j'ai commencé par ouvrir recap, ouvrir le 1er fichier, copier, retour dans recap, coller, fermer le 1er fichier , ouvrir le 2eme , copier, ouvrir recap, se positionner en bas du 1 er fichier collé, faire coller, fermer le fichier et j'en ai 170.....
Pourrait on ouvrir 170 onglets ? (je ne connais pas le nombre max) ensuite la derniere feuille pourrait recapituler les onglets? ou importer les 170 fichiers dans access mais alors.... je ne trouve pas une solution rapide au problème posé.
Bonne soirée à tous, je vais cogiter et si je trouve (ou qun?), je vous en ferai part.
JJ
 

Marc_du_78

XLDnaute Accro
Bonsoir les amos, le Forum,

Je ne connais rien en code mais ceci peut-il vous être utile ?

Quelques explications : En VBA, les cellules s'appelle range et les feuilles sheets, lorsque tu veux indiquer à la macro une cellule, tu utilises la synthaxe :
Sheets('nomdelafeuille').range('adressedelacellule') ainsi en reprenant l'exemple de la pièce jointe :
La cellule B1 de la feuille Archive =
Sheets('archive').range('B1')
Si maintenant dans cette cellule tu veux copier la cellule B1 de la feuille saisie :
Sheets('archive').range('B1')=sheets('saisie').range('B1')
Comme tu ne sais pas le numéro de la derniere ligne utilisable dans la feuille archive, on utilise une variable :
derligne = sheets('archive').Range('a65536').End(xlUp).Row + 1
dans derligne est stockée le numéro de la derniere ligne, donc :
sheets('archive').range('B'&derligne)=sheets('saisie').range('B1')
La macro à placer dans le module 1 de la feuille, pourrait ressembler à ceci :

Public Sub archivage()
Dim derligne As Integer
derligne = Sheets('archive').Range('a65536').End(xlUp).Row + 1
Sheets('archive').Range('a' & derligne) = Sheets('saisie').Range('B1')
Sheets('archive').Range('B' & derligne) = Sheets('saisie').Range('B2')
Sheets('archive').Range('C' & derligne) = Sheets('saisie').Range('B3')
Sheets('archive').Range('D' & derligne) = Sheets('saisie').Range('B4')
End Sub

En espérant avoir été didactique.
 

Marc_du_78

XLDnaute Accro
A moins que ....

Quelques explications : En VBA, les cellules s'appelle range et les feuilles sheets, lorsque tu veux indiquer à la macro une cellule, tu utilises la synthaxe :
Sheets('nomdelafeuille').range('adressedelacellule') ainsi en reprenant l'exemple de la pièce jointe :
La cellule B1 de la feuille Archive =
Sheets('archive').range('B1')
Si maintenant dans cette cellule tu veux copier la cellule B1 de la feuille saisie :
Sheets('archive').range('B1')=sheets('saisie').range('B1')
Comme tu ne sais pas le numéro de la derniere ligne utilisable dans la feuille archive, on utilise une variable :
derligne = sheets('archive').Range('a65536').End(xlUp).Row + 1
dans derligne est stockée le numéro de la derniere ligne, donc :
sheets('archive').range('B'&derligne)=sheets('saisie').range('B1')
La macro à placer dans le module 1 de la feuille, pourrait ressembler à ceci :

Public Sub archivage()
 
T

Temjeh

Guest
Bonjour à tous

Faute de nouvelle rapide de notre ami je lui ai mis un detect plage aulieu d'un Range à ...Range

Voici le code:

Dim r
r = Application.WorksheetFunction.CountA(Range('a1:a1000'))
Dim chemin
chemin = ActiveWorkbook.Path

For i = 1 To r
Application.DisplayAlerts = False

ChDir ActiveWorkbook.Path
Sheets('Liste').Select
Workbooks.Open Filename:=ActiveWorkbook.Path & '\\' & Range('A' & i).Value & '.xls'
Range('A1:' & [A1].SpecialCells(xlCellTypeLastCell).Address).Select
Selection.Copy

Windows('Uptdate_Recap').Activate
Sheets('Recap').Select
Range('A65000').End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Sheets('Liste').Select

Windows(Range('A' & i) & '.xls').Activate
ActiveWindow.Close SaveChanges:=False
Range('A1').Select

Application.DisplayAlerts = True
Next i

A+

Temjeh

Copier pièce jointe dans le même directory que les 170 [file name=Uptdate_Recap.zip size=16271]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Uptdate_Recap.zip[/file]
 

Pièces jointes

  • Uptdate_Recap.zip
    15.9 KB · Affichages: 9
  • Uptdate_Recap.zip
    15.9 KB · Affichages: 8
  • Uptdate_Recap.zip
    15.9 KB · Affichages: 9
J

JJ

Guest
Bonjour au forum, à Marc et Temjeh,
Les cellules a recopier sont les 9 colonnes de chaque tableau, le nombre de lignes est variable .
Excusez moi de ne pas avoir repondu rapidement j'etais au travail.
Je vais tester les 2 methodes demain et vous tiens au courant du resultat.
J'avais aussi pensé a 2 choses:
- importer les 170 fichiers dans 170 onglets et le 171eme serait la recap? (je sais pas le nb max de feuilles d'un tableau?)
-importer 'd'un coup' les 170 fichiers dans ACCESS et 'cumuler' la table avec ces fichiers?
Est ce possible? je sais pas
Bon WE
JJ
 
J

JJ

Guest
Bonjour la macro attachée.zip fonctionne...à condition de saisir les noms des 170 fichiers en colA
Comment les copier facilement en Col A car si je dois les saisir ca va prendre du temps...(les noms sont compliqués et differents mais toujours .xls)
Bonne soirée
JJ
 
T

Temjeh

Guest
Oui c'est faisable

Juste un qui quand il fait la liste il s'inclus dedans ...donc supprime la ligne du nom Uptdate_Recap.XLS de la liste avant

Temjeh [file name=Uptdate_Recap_20060105195732.zip size=15187]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Uptdate_Recap_20060105195732.zip[/file]
 

Pièces jointes

  • Uptdate_Recap_20060105195732.zip
    14.8 KB · Affichages: 8
J

JJ

Guest
Bonjour ,
Je vais creer 2 repertoitres
c:\\prog (pour ton programme)
c:\\fich (pour les 170 fichiers

le lancerai la recuperation des noms de fichiers puis je vais recopier le programme complété des noms dans le repertoire des fichiers pour eviter le changement de repertoire a chaque copie, non?

Si le programme et les fichiers sont dans le meme repertoire que devient la commande LookIn=C:\\... puisque je suis deja dans le repertoire ?

Serait il possible d'ajouter une condition:
si le fichier 'recap' arrive à 60000 lignes , alors arreter le processus en indiquant le nom du dernier fichier copié, est ce réalisable pour ne pas depasser la limite d'Excel?
merci bonne journée
JJ
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 756
Messages
2 091 735
Membres
105 060
dernier inscrit
DEDJAN Gaston