![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2006
Messages: 17
|
Salut, voilà le truc que j'ai à faire... c'est pas bien complexe mais le code VBA, c'est un peu obscur pour moi.
Alors oui, c'est sûr, je pourrais apprendre mais disons que mon projet est assez pressé et que c'est vraiment une annexe pour de la documentation alors j'ai pas trop le temps, je sollicite donc votre aide! Merci d'avance... j'ai donc des noms de fichiers (oui encore des noms de fichiers, ceux qui ont suivis mon post précédent comprendront ) dans une colonne (je reprécise, une et une seule colonne). Par exemple toto.xls, puis tata.xls enfin vous voyez je pense.Le problème, c'est que je ne connais pas la colonne par avance, ça peut être la colonne D, la F, la G etc... Je ne sais pas non plus à quelle ligne est inscrit le premier nom de fichiers, ni à quelle ligne le dernier se trouve le dernier. Tout ce que je sais, c'est que du premier fichier au dernier, il ne peut y avoir de vide. Voilà, le décors est planté! Maintenant ce que je veux faire, c'est une macro qui ouvre tous les fichiers de la colonne contenant les fichiers. Pour la macro, bon, j'ai un début de piste: Code:
Sub ChargerFichiers() Dim Chemin$, Wbk As Workbook Chemin = "D:\repertoire\toto.xls" Workbooks.Open Chemin End Sub Code:
booleen trouver = faux;
cellule garde; // l adresse de la cellule ou se trouve le premier nom de fichier
entier i=1; // numero de ligne
colonne J; // colonne
Tant que (booleen == faux)
| Pour J de A à Z (on dit que la colonne le nom de fichier ne peut être après la colonne Z)
| | Si Cellule[J][i] contient .xls sur sa ligne (alors c'est la colonne nom de fichier car aucune autre colonne ne contiendra de nom de fichier)
| | {
| | | garde = Cellule[J][i];
| | | trouver = vrai;
| | |
| | }
| | I++;
| |
| finpour
fintantque
// maintenant on sait ou se trouve le premier nom de fichier, on a plus qu'a parcourir toute la colonne jusqu'à trouver un blanc
I=0;
Tant que garde!=blanc
| ouvrirFichier(garde);
| I++;
| garde = cellule[J][i]
fintantque
|
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Saint-Etienne
Version Excel : Excel XP (PC)
Messages: 4 452
|
bonjour
peut etre une piste à travers ce code : Code:
Dim c As Range
Dim Chemin$
Dim i As Integer
Dim colonne As Byte
Dim lignedebut As Integer, lignedefin As Integer
Chemin = "D:\repertoire\"
Set c = Cells.Find(".xls")
If Not c Is Nothing Then
colonne = c.Column
lignedebut = c.Row
lignedefin = Cells(65536, colonne).End(xlUp).Row
For i = lignedebut To lignedefin
Workbooks.Open Chemin & Cells(i, colonne)
Next i
End If
|
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2006
Messages: 17
|
Merci beaucoup, c'est je pense, le gros du travail.
Par contre cela ne fonctionne pas, enfin ça ne marche que pour le premier fichier, ensuite je récupère une erreur du type: Code:
Erreur '1004' "c:\repertoire\" introuvable. Vérifier l'orthographe du nom... |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2006
Messages: 17
|
Petite précision préalable:
J'appele maitre.xls le classeur qui contient les noms de fichiers, et la macro permettant de lancer l'ouverture de tous les fichiers. toto.xls est le premier nom de fichier dans la colonne nom de fichier. Bon, j'ai identifié l'erreur... en fait, la première itération, ça marche bien. Le fichier toto.xls s'ouvre. Ensuite au niveau des différents indexs, c'est nickel, par contre ce qui va pas, c'est qu'il va essayer d'aller voir le nom du fichier dans le fichier toto.xls car celui-ci est le workbook actif or il faudrait qu'il regarde dans le fichier maitre.xls. J'arrive pas à résoudre ce problème... quelqu'un a une idée? Merci beaucoup! |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Version Excel : Excel 2000 (PC)
Messages: 5 807
|
bonjour the_ionic
salut Hervé a tester .............. For i = lignedebut To lignedefin Workbooks.Open Chemin & Cells(i, colonne) workbooks("maitre.xls").Activate Next i ............... |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2006
Messages: 17
|
Nickel, ça marche, merci!
Par contre un nouveau problème, mon classeur maitre.xls fait un tas de calcul à l'aide des fichiers qu'il ouvre. Donc à chaque fichier ouvert, y'a un recalcul qui se fait donc ça rame carrêment. Y'a pas moyen de dire à mon fichier maitre.xls, tu recalcules pas? Ou alors même mieux, tu recalcules que une fois tous les fichiers ouverts? Merci beaucoup! |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2006
Messages: 17
|
Bon, j'ai trouvé. Voici la solution pour qui rencontrerait le même problème.
Code:
Sub ChargerFichiers()
Dim c As Range
Dim Chemin$
Dim i As Integer
Dim colonne As Byte
Dim lignedebut As Integer, lignedefin As Integer
Dim workBookName As String
workBookName = ThisWorkbook.Name
Chemin = ThisWorkbook.Path
Application.Calculation = xlCalculationManual
Set c = Cells.Find(".xls")
If Not c Is Nothing Then
colonne = c.Column
lignedebut = c.Row
lignedefin = Cells(65536, colonne).End(xlUp).Row
For i = lignedebut To lignedefin
Workbooks.Open Chemin & "\" & Cells(i, colonne)
Workbooks(workBookName).Activate
Next i
End If
Application.Calculation = xlCalculationAutomatic
End Sub
|
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| tri iteratif d'après combo | Francis | Forum Excel | 21 | 16/05/2005 17h45 |
| basculer en calcul itératif à l'ouverture | guillaume | Forum Excel Downloads - Archives | 0 | 16/12/2004 11h39 |
| parcours colonne | Antho | Forum Excel Downloads - Archives | 3 | 09/08/2004 17h06 |
| Pb de parcours :-( | jo | Forum Excel Downloads - Archives | 5 | 03/06/2004 22h58 |
| Parcours de ligne. | Cyril | Forum Excel Downloads - Archives | 14 | 25/10/2002 18h39 |