|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonjour à tous et toutes,
je souhaite automatiser la mise en forme de fichiers que je reçois chaque mois. Je copie/colle des parties de ces fichiers "bruts" vers des fichiers "mis en forme". Comme je suis ultra débutant j'ai enregistré une macro que je vous copie ci-dessous: Code :
Pouvez vous m'aider? D'avance grand merci. Djepi Edité 25/09/11 à 23h36 Désolé pour le non emploi de la balise code. |
||
|
|
00
|
|
|
#2 |
|
Futur Membre du Club
![]() Étudiant Inscription : août 2011 Messages : 34 ![]() |
Je pense qu'un "like" avant la partie de nom du fichier qui t’intéresse peut être une solution.
Pour plus d'infos l'aide VBA est assez bien faite: tape like sur n'importe quelle ligne de vba, surligne avec la souris et appuie sur F1 |
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Essaie comme ceci (je n'ai pas retouché autrement ton code qui pourrait être simplifié) : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonjour,
Teste ce qui suit mais attention, les 2 feuilles du classeur copié doivent se nommer "acc" et "achats", adapte si ce n'est pas le cas car dans ta macro les feuilles copiées ne sont pas précisées : Code :
|
||
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
merci Polyamide,Daniel et Theze pour vos réponses.
Polyamide, je suis encore trop débutant et je n'ai pas encore eu le temps nécessaire mais je n'ai pas su mettre la solution "like" en route. Daniel j'ai essayé de faire fonctionner ta macro mais j'ai un message :erreur d'exécution '13' incompatibilité de type et c'est la ligne set w=windows(i) qui est surlignée. Thèse j'ai modifié le nom des feuilles comme tu le demandais et tout marche très bien. Grand merci. Si je peux encore poser une question j'aimerais que tu m'indiques comment il faut modifier ta macro si le fichier excel 'Transit en forme.xls' se trouve à l'adresse C:\mes documents\DEVOK alors que tous les autres fichiers excel (acc, achats, etc...) se trouvent à l'adresse C:\mes documents\DEVBRUT . D'avance merci pour l'aide précieuse. Djepi |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonjour,
Donc, si j'ai bien compris, tu souhaiterais ouvrir les classeurs automatiquement ? Indique nous avec assez de précisions la marche à suivre afin de ne pas te donner des réponses erronées qui finiront par semer la pagaille. Hervé. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonjour le forum, bonjour Hervé, merci pour l'aide.
Je voudrais d'abord redire que les seules macros que j'ai jamais faites sont celles qui proviennent de l'enregistreur de macros de excel. D'avance donc désolé lorsque je ne comprends pas assez vite. Hervé, comme demandé, voilà la séquence exacte de ce que je fais aujourd'hui de façon non automatique et que j'aimerais automatiser au maximum: 1)je vais à l'adresse C:\mes documents\DEVOK et là j'ouvre le fichier "transit en forme.xls" (c'est dans ce fichier que je voudrait ultérieurement enregistrer la macro) 2)je vais à l'adresse C:\mes documents\DEVBRUT et là se trouvent 5fichiers: "achats 08.2011.xls","aci 08.2011.xls","acu 08.2011.xls","bal 08.2011.xls" et "jour 08.2011.xls" (ces fichiers changent de date tous les mois mais grace à ta macro je peux maintenant ignorer cette partie du nom de fichier) 2a)j'ouvre ces 5 fichiers. 2b)dans chacun de ces 5 fichiers je copie une portion (A1:M275) de la feuille intitulée "sheet1" (ces fichiers n'ont qu'une seule feuille sauf "bal xx" où je dois prendre le dernier onglet de droite) 2c)je colle ces différentes parties de feuilles dans la cellule B1 du fichier "transit en forme.xls" (ouvert dans le point 1) dans respectivement les onglets "achats", "aci", "acu", "bal" et "jour". 2d)je referme les 5 fichiers. Voilà la description détailée de ce que je fais. Merci de bien vouloir m'aider. Djepi |
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Tu n'as pas besoin d'ouvrir les classeurs pour copier leurs données. Colle la macro suivante dans le classeur "transit en forme.xls" : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#9 | ||||
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonjour le Forum, bonjour Daniel,
comme promis je reviens avec les résultats des test en réel. Tout d'abord ci-dessous le code élaboré par Daniel et modifié par moi avec les noms et adresses réels: Code :
Je précise que il n'y a pas de formule dans les zones que je voudrais copier. Il n'y a pas de formule non plus dans la zone où je voudrais coller.Je précise aisi que dans le classeur cible il y a d'autres fichiers que ceux visés. En regardant dans le forum j'ai vu qu'il fallait peut-être employer: Code :
Merci beaucoup de me donner un coup de main. Djepi |
||||
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Citation:
Je viens d'exécuter ces lignes ici et ça se passe bien quand aux autres paramètres de la méthode "Pastespecial", il sont optionels et ne servent pas en ce qui nous concernent. Essaie : à la place, mais je n'y crois pas.
__________________
Cordialement. Daniel Citation:
|
||
|
00
|
|
|
#11 |
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonjour le forum, bonjour Daniel,
merci pour ta réponse. Non cela ne marche pas. Même message d'erreur et même ligne en erreur. Est ce qu'une solution ne serait pas de d'abord ouvrir les fichiers via un code (je ne sais pas si c'est possible ?) et puis de faire les "copier-coller" ? Je continue à chercher de mon coté. Si toi Daniel ou un autre membre du forum a la gentilesse de me donner des pistes je suis extrèmement preneur. Mille mercis. Djepi. |
|
|
00
|
|
|
#12 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Je ne vais pas te retarder davantage. J'étais particulièrement fier de ma solution, pourtant. Oui, prend la solution s'il y en a eu une de postée, sinon, je travaille à en sortir une.
Essaie (non testé) en vérifiant les plages à copier et les noms de feuille : Code :
au lieu de :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonjour le Forum, bonjour Daniel
Daniel tu peux être fier parce que le dernier code que tu m'as fourni marche (presque) parfaitement bien. Je te donne le feedback complet: 1)j'ai vérifié et modifié range qd nécessaire (B1:O2050) devient (A1:N2050) 2)j'ai lancé test et j'ai eu 4 messages ms "presse papier contient gde qté info...". Après recherche sur le forum j'ai pu éliminer ces messages en incorporant Code :
Code :
Sh = Application.Index(Feuilles2, Application.Match(Left(Fichier, 3), Feuilles, 0)) Mes réflexions: 1)est ce que l'incompatibilité de type ne viendrait pas du fait qu'il teste un fichier "bal*.xls" qui est différent de ce qui est défini dans les Feuilles? 2)dans les fichiers .xls qui se trouvent dans "DEV MENSUEL BRUT" il y en a encore 2 que je dois copier/coller. Mais les critères ne sont pas les mêmes que pour les 4 autres fichiers. a)pour le fichier "bal*.xls": il faut copier A1:I2050 de sheet1 et coller en U1 de l'onglet "BAL washed" de l'activeworkbook et b)pour le fichier "TVA*.xls il faut copier A1:O250 du dernier onglet existant et coller en A1 de l'onglet "TVA washed" de l'activeworkbook. Penses tu qu'il est imaginable d'inclure ces deux actions supplémentaires dans la même procédure? Je suis extrèmement reconnaissant de l'aide que je recois Daniel, et, si de mon coté je peux aider dans des recherches, tests et explications complémentaires je serai plus qu'heureux de le faire. Merci. Djepi |
||
|
|
00
|
|
|
#14 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Citation:
En ce qui concerne les 2 fichiers supplémentaires, Citation:
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#15 | ||||
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Merci beaucoup pour ton message. Voici mes réponses.
Tout d'abord pour éviter toute confusion je remets ci-dessous le dernier code employé pour mes test Code :
Citation:
Citation:
Pour le moment la macro traite 4 fichiers (acc*.xls; ach*.xls; aci*.xls; acu*.xls) et dans ces 4 fichiers la feuille est toujours la même (sheet1) et le range est toujours le même (A1:N2050). Les deux fichiers supplémentaires ne répondent pas aux mêmes critères. a)le fichier "bal*.xls" qui se trouve dans "DEV MENSUEL BRUT" et dont je voudrais copier de la feuille "sheet1" le range (A1:I2050) pour aller le coller en (U1:AC2050) de l'onglet nommé "BAL washed" de l'activeworkbook et b)le fichier "TVA*.xls" qui se trouve dans "DEV MENSUEL BRUT" et dont je voudrais copier de la dernière feuille (en employant sheets.count peut-etre le range (A1:O250) pour aller le coller en (A1:O250) de l'onglet nommé "VAT washed" de l'activeworkbook. Voilà Daniel, j'espère avoir été clair. Merci pour ton attention et ton aide. Djepi. |
||||
|
|
00
|
|
|
#16 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
J'ai apporté toutes les modifications, donc le code devrait être exécutable tel quel. Vérifie simplement les majuscules et minuscules dans les noms de fichier.
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#17 | ||||||||
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonsoir le Forum, bonsoir Daniel,
de retour comme promis. J'ai testé et j'ai eu deux petits soucis. Un ici Code :
Code :
Code :
Code :
Un dernier point dont je veux te parler: la macro se termine dans le dernier onglet du fichier "TVA*.xls (qui est dans DEV MENSUEL BRUT).Il faut fermer ce fichier manuellement et ms excel dit "Presse papier contient grande qté....", réponse non, le fichier se ferme et on se retrouve dans la page "TVA washed" de l'activeworkbook. AMENDEMENT: je viens de voir également que le fichier "bal*.xls" reste lui aussi ouvert.Donc le souci de refermeture des fichier se produit pour les deux derniers fichiers traités. Idéalement je voudrais terminer en cellule A1 d'un onglet nommé "PILOTAGE" dans l'activeworkbook. J'ai essayé d'inclure une ligne Code :
Thisworkbook.Sheets("PILOTAGE").[A1:A1].Select Aurais-tu la gentilesse de me donner encore un coup de main pour trouver la bonne instruction? Encore un énorme merci pour cette application. Cordialement Djepi |
||||||||
|
|
00
|
|
|
#18 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Essaie la macro :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#19 |
|
Invité de passage
![]() Patrick Joye Inscription : mars 2010 Messages : 14 ![]() |
Bonsoir le Forum, bonsoir Daniel,
Daniel, tout fonctionne parfaitement! Un tout grand merci pour ton aide et respect pour ton professionnalisme, tes connaisances et ta patience vis à vis d'un "totalement non expert". A bientôt sur le forum. Bien à toi. Djepi |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com