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
tamo - 24 déc. 2013 à 19:27
A voir également:
- EXCEL: Macro Gestion Donnees
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
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 752
23 juil. 2012 à 09:28
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 :
Regarde déjà ce code qui réponds à ta première interrogation. Une fois assimilé, on passera à la seconde.
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 juil. 2012 à 13:00
24 juil. 2012 à 13:00
Point par point :
Les noms de fichiers :
Dans la Sub Lit_dossier(ByRef dossier), remplace :
Par :
Les noms des feuilles :
Dans la Sub ImportDonnees(), remplace :
Par :
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 :
Maintenant, si tu veux faire ça sur toutes les feuilles, une boucle s'impose. Donc :
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 :
Ce qui nous donne une nouvelle Sub :
Cette Sub, il convient de l'appeler, dans la procédure principale (MainProcedure), comme ceci :
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
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
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2012 à 10:38
23 juil. 2012 à 10:38
Voici le même code, avec déclaration des variables. Utilise le ce sera beaucoup mieux.
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:
Soit tes noms de fichiers contiennent soit l'un, soit l'autre :
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
23 juil. 2012 à 10:46
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
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
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
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2012 à 11:00
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...
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...
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
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
https://www.excel-downloads.com/threads/macro-excel-gestion-de-donnees.189105/#post1172531
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2012 à 11:43
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)
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)
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
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 23/07/2012 à 15:17
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à :
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...
Sans plus de précisions, voici ce que l'on va faire.
1- à ce niveau là :
If f.Name Like "*frais*" Then MsgBox f.Nameon 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...
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
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
Merci
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 752
24 juil. 2012 à 10:08
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") :
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
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
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
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
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
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
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
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
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 25/07/2012 à 08:49
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.
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.
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
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
25 juil. 2012 à 12:40
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.
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!!!!!!!!!!
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!!!!!!!!!!
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
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.
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.