EXCEL: Macro Gestion Donnees

Résolu/Fermé
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012 - 23 juil. 2012 à 08:06
 tamo - 24 déc. 2013 à 19:27
Bonjour a tous,

Je suis nouveau sur le forum qui a l air super dynamique, donc je fais appel a votre aide.

je suis debutant en macro et j ai un travaille a rendre pour mon stage.

Je dois faire une macro pour optimiser et pour gagner du temps dans la gestion de donnees.

Mais mon probleme est que les fichiers excel que je dois rassembler dans un seul, ne sont pas similaires. En effet le nombre de lignes et colonnes sont variables, les positions des colonnes a classer ne sont pas les memes, le nom des colonnes varient et toutes les colonnes des fichiers d origine ne sont pas a utiliser.

Le but de la macro est de classer les colonnes dans le meme ordre pour tous les fichiers (Je pense qu une recherche par nom serait le plus simple) et puis de rassembler toutes les informations stockees dans la meme colonne de chaque fichier dans une unique colonne dans un nouveau fichier.

De plus les fichiers sont stockes dans des fichiers differents, chaque fichier represente une annee. Voila les etapes que j ai pense mettre en place:

1) Mettre tous les fichiers dans un meme dossier
J'ai des difficultes car tout d abord je suis novice et le nom des fichiers n'ont pas le meme format, mais il y a des mots en commun donc une recherche par tags serait possible, mais je ne sais pas comment la mettre en place..

2) Mettre tous les feuilles de tous les fichiers dans un meme fichier. On retrouve le meme probleme, les noms sont differents, mais il y a des mots en commun donc une recherche par tags serait possible, mais je ne sais pas comment la mettre en place..

3) Supprimer les feuilles qui ne sont pas utiles: La cela est plus facile, les feuilles qui sont interessantes on le mem type de nom

4) Classer dans chaque feuille les colonnes qui nous interessent et supprimer les autres. On retrouve le meme probleme, les noms sont differents, mais il y a des mots en commun donc une recherche par tags serait possible.

5) Mettre bout a bout les informations stockees dans les colonnes ayant la meme position dans chaque feuille. Ce rassemblement doit etre fait fichier par fichier (voir etape suivante).

J ai reussi partiellement a faire cela.


6) Apres copie des informations pour chaque feuille on doit rajouter dans la premiere colonne (laisser libre au debut) le mois et l annee (contenu dans le nom de chaque fichier).

Je ne vois pas du tout comment faire

7) Quand toutes les colonnes ont ete copiees, et chaque mois et annee a ete rajouter pour chaque feuille, faire une sauvegarde dans le dossier ou ont ete stockes tous les fichiers d origine

Ca c'est bon.


Et oui tout cela semble bien complique et je sais pas si c est faisable car pour le moment je suis a court d idees.
Mais beaucoup m ont l air tres talentueux :)

Je vous remercie beaucoup pour votre aide.

Et bonne continuation avec notre excel.


MB

PS: j espere que vous m avez compris, cela est aussi dur a realiser qu'a expliquer ;)
Desole pour l'absence d'accent mais je suis a Singapour et nous en n'avons pas. ;)
A voir également:

6 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
23 juil. 2012 à 09:28
Bonjour,
Si tu veux, on va prendre ça par étape...

Etape 1 : Mettre tous les fichiers dans un meme dossier
Nous aurions pu écrire une code pour cela, mais frédéric Sigonneau l'a déjà fait

Alors... adaptons :

Sub arborescenceRepertoire()
  racine = ChoixDossier()
  If racine = "" Then Exit Sub
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set dossier_racine = fs.getfolder(racine)
  Lit_dossier dossier_racine, 1
End Sub
Sub Lit_dossier(ByRef dossier, ByVal niveau)
   For Each f In dossier.Files
'ICI se joue tout!!!
'Si le nom du fichier contient "frais" alors on a un message qui nous donne son nom
        If f.Name Like "*frais*" Then MsgBox f.Name
   Next
   For Each d In dossier.SubFolders
     Lit_dossier d, niveau + 1
   Next
End Sub
Function ChoixDossier()
    If Val(Application.Version) >= 10 Then
       With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        If .SelectedItems.Count > 0 Then
           ChoixDossier = .SelectedItems(1)
        Else
           ChoixDossier = ""
        End If
       End With
     Else
       ChoixDossier = InputBox("Répertoire?")
     End If
End Function

Regarde déjà ce code qui réponds à ta première interrogation. Une fois assimilé, on passera à la seconde.
3
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 juil. 2012 à 13:00
Point par point :

Les noms de fichiers :
Dans la Sub Lit_dossier(ByRef dossier), remplace :
If f.Name Like "*Classeur*" And Left(Split(f.Name, ".")(1), 3) = "xls"

Par :
If Left(Split(f.Name, ".")(1), 3) = "xls" Then
     If f.Name Like "*insurance*" Or   f.Name Like "*customer*" Then
        ReDim Preserve RepFich(1 To 2, 1 To i)
        RepFich(1, i) = dossier
        RepFich(2, i) = f.Name
        i = i + 1
     End If
End If


Les noms des feuilles :
Dans la Sub ImportDonnees(), remplace :
If Feuille.Name <> "Feuil2" Then Feuille.Copy after:=WbkRecap.Worksheets(WbkRecap.Worksheets.Count)

Par :
If Feuille.Name = "Global" Or Feuille.Name = "Sheet1" Then Feuille.Copy after:=WbkRecap.Worksheets(WbkRecap.Worksheets.Count)


Pour les colonnes :
Ce n'est que de la mise en place, donc tu va pouvoir finir seul avec ces indications :
Supposons, puisque toutes tes anciennes colonnes sont présentes dans le nouveau fichier, que tu veuilles supprimer les colonnes : C, D, E, G, J, K, Q et R. Le code est :
Range("C:C,D:D,E:E,G:G,J:J,K:K,Q:Q,R:R").Delete Shift:=xlToLeft

Maintenant, si tu veux faire ça sur toutes les feuilles, une boucle s'impose. Donc :
Dim Feuille As WorkSheet
Application.ScreenUpdating = False
For Each Feuille In ThisWorkBook.WorkSheets
    If Feuille.Name <> "Feuil1" Then
        With Feuille
            .Range("C:C,D:D,E:E,G:G,J:J,K:K,Q:Q,R:R").Delete Shift:=xlToLeft
        End With
    End If
Next
Application.ScreenUpdating = True

idem pour "l'échange" de place des colonnes.
Supposons, qu'après avoir supprimé tes colonnes tu souhaites placer la colonne H à la place de D. Dans la même boucle intégrer :
.Columns("H:H").Cut
.Columns("D:D").Insert Shift:=xlToRight


Ce qui nous donne une nouvelle Sub :
Sub ArrangeColonnes()
Dim Feuille As WorkSheet

For Each Feuille In ThisWorkBook.WorkSheets
    If Feuille.Name <> "Feuil1" Then
        With Feuille
            .Range("C:C,D:D,E:E,G:G,J:J,K:K,Q:Q,R:R").Delete Shift:=xlToLeft
            .Columns("H:H").Cut
            .Columns("D:D").Insert Shift:=xlToRight
        End With
    End If
Next
End Sub


Cette Sub, il convient de l'appeler, dans la procédure principale (MainProcedure), comme ceci :
Sub MainProcedure()
Dim racine As String
Dim fs As Object, dossier_racine As Object

  racine = ChoixDossier()
  If racine = "" Then Exit Sub
  i = 1
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set dossier_racine = fs.getfolder(racine)
  Lit_dossier dossier_racine
  ImportDonnees
  ArrangeColonnes
End Sub
1
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
23 juil. 2012 à 10:12
Bonjour,

Merci beaucoup pour ta reponse tres rapide et developpee.

J'ai quelques questions a te poser, pour bien comprendre ton code:

- Peux t on mettre plusieurs tags comme condition de la boucle if par exemple:

If f.Name Like "*frais*&*poisson*" Then MsgBox f.Name

- Dans cette boucle "Each f In dossier.Files", f=file, mais comment excel sait qu'il faut prendre les fichiers? Car tu n'as pas dit a quoi correspondait f avant?

- Peux tu me fournir, si tu as le temps :), une petite explication de la fonction: ChoixDossier(), car j ai beaucoup de difficultes a comprendre ce que tu fais.

Merci encore pour ton aide :)

Cordialement.

MB
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
23 juil. 2012 à 10:38
Voici le même code, avec déclaration des variables. Utilise le ce sera beaucoup mieux.
Option Explicit

Sub arborescenceRepertoire()
Dim racine As String
Dim fs As Object, dossier_racine As Object
  racine = ChoixDossier()
'Si la fonction ChoixDossier renvoie une chaine vide alors on quitte la sub
  If racine = "" Then Exit Sub
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set dossier_racine = fs.getfolder(racine)
  Lit_dossier dossier_racine, 1
End Sub

Sub Lit_dossier(ByRef dossier, ByVal niveau)
Dim f, d
   For Each f In dossier.Files
        If f.Name Like "*frais*" Then MsgBox f.Name
   Next
   For Each d In dossier.SubFolders
     Lit_dossier d, niveau + 1
   Next
End Sub

Function ChoixDossier()
'vérifie la version d'Excel. Selon la version (97 il me semble), 
'on devra utiliser une InputBox pour saisir le nom du répertoire
    If Val(Application.Version) >= 10 Then
      'il ouvre la boite de dialogue FolderPicker (sélecteur de répertoire)
       With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        'si tu en sélectionnes un alors
        If .SelectedItems.Count > 0 Then
           'la fonction retourne son chemin complet
           ChoixDossier = .SelectedItems(1)
         'sinon
        Else
           'la fonction retourne une chaine vide
                  'cf dans la Sub arborescenceRepertoire() If Racine = ""
           ChoixDossier = ""
        End If
       End With
     Else
       ChoixDossier = InputBox("Répertoire?")
     End If
End Function


1- oui on peux mettre plusieurs tags, sans souci. Le problème étant de savoir comment...
Soit tes noms de fichiers contiennent les 2 mots et à ce moment utilises:
If f.Name Like "*frais*" & "*poisson*"

Soit tes noms de fichiers contiennent soit l'un, soit l'autre :
If f.Name Like "*frais*" Or f.Name Like  "*poisson*"


2- Dans cette boucle "Each f In dossier.Files", f=file, mais comment excel sait qu'il faut prendre les fichiers?
Comme il boucle dans les fichiers (In Dossier.files) Excel sait qu'il boucle sur les fichiers. C'est logique non?
f est déclaré as Variant parce que je ne sais pas trop comment le déclarer autrement...

3- Peux tu me fournir, si tu as le temps :), une petite explication de la fonction: ChoixDossier(),
Cf : les commentaires dans le code ci-dessus.

Tu dis...
Quand tu auras assimilé tout ça, on passe au point 2 : Mettre toutes les feuilles de tous les fichiers dans un meme fichier
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 juil. 2012 à 10:46
Salut Pijaku,

Apparemment, tu n'as pas fait ton petit tour sur DVP
https://www.developpez.net/forums/d1246112/logiciels/microsoft-office/excel/macros-vba-excel/macro-gestion-donnees/

Amicalement
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
23 juil. 2012 à 10:58
salut Michel,

Je ne vois pas en quoi demander de l aide a plusieurs personnes pose un probleme.

De plus c est la premiere fois que j utilise ce genre de forum donc je ne sais pas lequel est le mieux pour se genre de demande.

Pikaju a eut la gentillesse de m'aider et en plus de m expliquer ce qu il avait fait donc je le remercie.

Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
23 juil. 2012 à 11:00
Salut Michel_m,
Comment va?
Non, je ne suis pas allé sur DVP, pas depuis vendredi... Ach!

Bon et bien puisqu'il y a doublon, ...

Merci à toi et bonne journée

@ ambr, il est inutile de multiplier les sujets sur les forums de discussion, cela n'est jamais plaisant pour celles et ceux qui tentent de t'aider... D'autant que pour la plupart, ils naviguent sur tous ces forums... Comme tu me sembles débutant(e), je te laisse le choix, mais ne poursuit pas les deux discussions, cela risque :
1- de t'embrouiller,
2- de nous embrouiller,
3- ça ferait double office et tu "forces" deux fois plus de personnes à travailler pour toi (d'autant plus qu'il s'agit tout de même d'un projet professionnel destiné à faire gagner du temps et donc de l'argent à la société qui t'emploie)
4- Si, et cela se produira forcément, deux pistes différentes te sont proposées, tu va envoyer paître celle qui te conviendra le moins. C'est naturel, mais pense à celui ou celle qui aura bossé sur la solution rejetée.....

Tu dis...
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
23 juil. 2012 à 11:05
et pour etre parfaitement transparent j en ai aussi poste un sur:

https://www.excel-downloads.com/threads/macro-excel-gestion-de-donnees.189105/#post1172531
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
23 juil. 2012 à 11:43
2) Mettre tous les feuilles de tous les fichiers dans un meme fichier.
Ici quelques questions s'imposent :
> Nombre de fichiers à traiter,
> Nombre de feuilles par fichier,
> Version d'excel utilisée (question subsidiaire car on va faire en sorte que la macro finale soit "portable" d'une version à l'autre)
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
23 juil. 2012 à 12:30
C est la ou est le probleme, le nombre de fichier est variable (normalement c est un par mois, mais malheuresement il y a des exceptions ;( ), le nombre de feuille est variable aussi, bien que l on retrouve une recurrence dans le nom de la feuille et dans la position (mais malheuresement la encore ce n'est pas toujours le cas).
De plus on ne sait pas combien d annee on doit traiter a l avance, donc le nombre de fichiers peut varier a ce niveau la aussi.

Je suis desole, je sais pas quoi te donner comme meilleures indications.

Pour excel, ce serait une version 2010....

Encore Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 23/07/2012 à 15:17
OK.
Sans plus de précisions, voici ce que l'on va faire.
1- à ce niveau là :
If f.Name Like "*frais*" Then MsgBox f.Name 
on va alimenter une variable tableau à deux dimensions, qui va stocker le nom des fichiers et leurs chemins respectifs.
2- On va traiter cette variable tableau dans une procédure qui va :
> ouvrir chaque fichier
> boucler sur toutes les feuilles
> copier ces feuilles dans notre classeur.
Attention tout de même, le nombre de feuilles maximum que peux traiter Excel sont définies par la capacité de mémoire..........
Personnellement je préconiserai déjà de sélectionner les feuilles qui ne doivent pas être supprimées après...

Donc j'ai besoin de deux informations :
1- la liste des "tags" permettant de sélectionner les fichiers
2- la liste des feuilles à ne pas importer...
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
24 juil. 2012 à 04:39
Le probleme est que je ne peux pas donner ce genre d infos, mais par contre on ne peut pas inventer des noms comme exemple, que je pourrai plus tard modifier dans la macro. En plus pour que je puisse l utiliser, si c est possible pour plusieurs programmes, les noms varient. C est la meme chose pour les feuilles, les noms et la quantite varient selon le type de fichier utilise. Mais pour un meme type de fichier les noms sont a peu pres les memes.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 juil. 2012 à 10:08
BONJOUR! <------- Elément indispensable à une bonne discussion, même avec 6-7h de décalage...
1- Dis? Tu crois pas que tu exégères dans la confidentialité? Ne pas fournir un fichier, je veux bien, à la rigueur, s'il contient des infos personnelles. Mais là, ne pas vouloir fournir un mot commun à tes noms de fichier, ni un mot commun à tes noms de feuilles??????? T'en fais pas un peu trop?
A moins que ces mots communs soient :
"plan"
"bombe"
"atomique"
.....
Bref.

2- Essaie ce code (lancer la procédure : "MainProcedure") :
Option Explicit

Dim RepFich() As String
Dim i As Integer

Sub MainProcedure()
Dim racine As String
Dim fs As Object, dossier_racine As Object

  racine = ChoixDossier()
  If racine = "" Then Exit Sub
  i = 1
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set dossier_racine = fs.getfolder(racine)
  Lit_dossier dossier_racine
  ImportDonnees
End Sub

Sub Lit_dossier(ByRef dossier)
Dim f, d

For Each f In dossier.Files
    If f.Name Like "*Classeur*" And Left(Split(f.Name, ".")(1), 3) = "xls" Then
        ReDim Preserve RepFich(1 To 2, 1 To i)
        RepFich(1, i) = dossier
        RepFich(2, i) = f.Name
        i = i + 1
    End If
Next
For Each d In dossier.SubFolders
    Lit_dossier d
Next
End Sub

Sub ImportDonnees()
Dim WbkRecap As Workbook, WbkSource As Workbook
Dim Feuille As Worksheet

Set WbkRecap = ThisWorkbook
Application.ScreenUpdating = False
For i = LBound(RepFich, 2) To UBound(RepFich, 2)
    Set WbkSource = Workbooks.Open(RepFich(1, i) & "\" & RepFich(2, i))
    For Each Feuille In WbkSource.Worksheets
        If Feuille.Name <> "Feuil2" Then Feuille.Copy after:=WbkRecap.Worksheets(WbkRecap.Worksheets.Count)
    Next Feuille
    Application.DisplayAlerts = False
    WbkSource.Close
    Application.DisplayAlerts = True
Next i
Application.ScreenUpdating = True
Set WbkRecap = Nothing
Set WbkSource = Nothing
End Sub

Function ChoixDossier()
If Val(Application.Version) >= 10 Then
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        If .SelectedItems.Count > 0 Then
            ChoixDossier = .SelectedItems(1)
        Else
            ChoixDossier = ""
        End If
    End With
Else
    ChoixDossier = InputBox("Répertoire?")
End If
End Function

0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
24 juil. 2012 à 12:22
Bonjour Pijaku,

Encore merci pour ton aide, le fichier marche tres bien cela copie toutes les feuilles dans le meme fichier :)

Desole de te repondre que maintenant, mais j ai pris le temps de comprendre ton fichier ;)

J'ai enfin demande a mon entreprise, il veulent bien que je communique ce genre de donnes, j etais pas sur hier soir donc je voulais assure, encore desole.

Les tags pour le nom des fichiers sont: insurance, customer
Il y a deux cas pour les feuilles:

- Global/Personal: Seule la feuille Global est a selectionner, l autre est a supprimer
- Sheet1/Sheet2/Sheet3: Seule la feuille Sheet1 est a selectionner, l autre est a supprimer

Les colonnes sont les suivantes:
Name(1)/FirstName(2)/Nationality/PhoneNumber//CellNumber/BirthDate(3)/PlaceBirth/ContractNumber(7)/ContractType(8)/SubDate/EndDate/FeesPaid(9)/Fees(10)/Address(4)/Country(5)/Profession(6)/WorkAdress/CompanyName

Les colonnes avec un numero a cote sont les colonnes a selectionner dans chaque fichier et et le numero entre parenthese est la position de la colonne dans le nouveau fichier. Toutes les autres colonnes sont a supprimer.

Encore merci pour ton travail et le temps que tu passes dessus, cela m aide beaucoup
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
24 juil. 2012 à 15:52
Merci beaucoup pour ton aide.

Je peux pas le tester ce soir, car je n ai pas les fichiers, je ferai ca demain matin.
Je te tiendrai au courant mais je vois pas pourquoi ca ne marcherai pas.

En tout cas grâce a tes conseils ca m a permis de mieux comprendre les macros.

Encore merci
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
25 juil. 2012 à 02:37
Bonjour Pijaku,

Hier tu m avais propose des modifications pour traiter les noms des fichiers, les noms des feuilles,ainsi que leur position. Je ne sais pas pourquoi le post n'est plus present sur le forum ce matin.

J avais eu le temps de voir que ces informations etaient d'une aide precieuse, As tu la possibilite de reposter ton commentaire?

Merci d avance
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 25/07/2012 à 08:49
Bonjour,

Il est toujours là :
https://forums.commentcamarche.net/forum/affich-25654477-excel-macro-gestion-donnees#18

S'il est remonté dans le fil c'est parce que tu as mis +1 et que ti tries tes discussions par vote.
Au dessus de cette réponse :
https://forums.commentcamarche.net/forum/affich-25654477-excel-macro-gestion-donnees#1
tu peux trouver :
Trier par : Vote | Date | Date décroissante
Choisis le tri par Date pour avoir les réponses dans l'ordre chronologique.
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
25 juil. 2012 à 12:20
Merci,

Desole, ca prouve mon experience demesuree en forum ;)

J ai teste la macro, tout fonctionne tres bien au debut, puis elle ne fait la copie que de deux fichiers par type (insurance, customer). J ai essaye de changer pas mal de trucs et de verifier les differences entre mes fichiers mais je n ai rien trouve.

As tu une idee de la ou ca pourrait venir?


Merci encore pour ton aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
25 juil. 2012 à 12:40
Je pensais que c'était clair pour toi cette partie....
Le choix des fichiers utilisés par la macro se fait sur les noms de ces fichiers.
For Each f In dossier.Files
  If Left(Split(f.Name, ".")(1), 3) = "xls" Then
     If f.Name Like "*insurance*" Or  f.Name Like "*customer*" Then
        ReDim Preserve RepFich(1 To 2, 1 To i)
        RepFich(1, i) = dossier
        RepFich(2, i) = f.Name
        i = i + 1
     End If
  End If
Next

Traduit en "français" :
- Pour tous les fichiers contenus dans le répertoire "dossier"
- Si les trois lettres après le point dans le nom du fichier sont : xls alors
(En gros, ici, on teste s'il s'agit bien d'un classeur Excel. Ceci afin d'éviter qu'un fichier .ink par exemple s'invite dans la macro et la plante...)
- Si dans le nom de ce fichier on trouve insurance ou customer alors
(on parle bien ici du nom du fichier. insurance_machin.xls par exemple)
- redimensionnement de la variable tableau + enregistrement des données déjà "dedans",
- stock du chemin complet d'accès au fichier
- stock du nom du fichier
- indice suivant pour la variable tableau
- fin test si nom = insurance ou customer
- fin test si fichier .xls
- fichier suivant.

Donc, si tous tes fichiers ne sont pas pris en compte, c'est parce que (au choix) :
1- Soit l'extension de ces fichiers ne commence pas par xls (après le point)
2- Soit leur nom ne contient ni le mot : insurance ni le mot customer. JE PARLE BIEN DU NOM DU FICHIER!!!!!!!!!!
0
ambr92 Messages postés 19 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 août 2012
26 juil. 2012 à 09:58
Bonjour,

J avais bien compris tout cela, mais merci avec plus de details je comprends encore mieux. Je pense que les fichiers etaient trop lourds et donc la macro ne pouvait plus copier de feuilles.
J ai pris d autres fichiers test moins lourds et maintenant ca marche.

Il me reste un probleme, je n arrive pas a copier les colonnes dans la meme feuille en rajoutant une colonne au tout debut, en lui mettant le tire "source" et mettant dans cette colonne la date des donnees contenue dans le titre de chaque fichier selectionne. Par exemple le titre de chaque fichier est "Sept09 insurance".

Je pense que le plus simple en realite serait de faire cette action lors de la copie de toutes les feuilles des fichiers d origine dans le meme fichier c a d a l etape 2.


Pourrais tu m aider sur cela?

Merci encore pour ton aide.
0