|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Bonjour a tous
Nouveau en VBA Word (je suis bon debutant en VBA excel), j'aimerai faire une macro qui m'ouvre tout les doc d'un repertoire et sous repertoire et qui me "scanne" les fichiers a la recherche d'images puis puis qu'il les compresse (en 200DPi). En effet j'ai dans un repertoire sur le reseau quelque millier de doc. Et chaque doc comporte au moins 2 images. la taille du doc avant compression de l'image est de 1500 Ko et apres 200 Ko. Pour ouvrir un repertoire et faire des actions sur les fichier j'ai deja une macros mais tiré d'excel je ne sais pas si elle fonctionnent. Code :
Code :
J'ai essayer de vous mettre une pieces jointe mais elle est trop grosse Merci de votre aide et @+ |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
Code :
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Bonjour Heureu-oli
Merci de repondre. J'ai essayé ton code mais j'ai l'impression qu'il manque la fin Pas de end if End Sub etc... |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
Oui, je n'ai pas repris la fin du tien, j'ai pris le début pour indiquer par où je commence.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#5 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut,
Il existe un utilitaire (hélas peu paramétrable ) dans Word qui permet de comprimer des images par interface. Je ne connais pas le code pour y accéder mais en revanche dans une macro VBA, il est possible directement d'appeler une boîte de dialogue de l'application (voir sur le site les très bons exemples fournis par Heureux-oli, entre autres). Il suffit d'appeler et de lui envoyer OK (sendKey vbCr) pour avoir le "compresseur" d'images dans Word.
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Bonsoir sepia
merci de repondre Effectivement par l'interface je connais (, mais je ne vais pas faire cela sur plusieur millier de fichier.....) je vais chercher les exemples de Heureux-oli. Le code que je fournit puis modifier par Heureux-oli pour ouvrir les fichier dans un repertoire ne fonctionne pas sous Word.... Arghh |
|
|
00
|
|
|
#7 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
En fait, je n'ai pas voulu réécrire tout le code, j'ai donc simplement utilisé la partie que tu avais faite et mis les lignes pour ouvrir un fichier Word.
Code :
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Re heureux-oli
ton 2em code me donne une erreur de compilation (je crois que c'est : type non defini..suis sous Word 2003 en Allemand): sur la ligne Dim oFSO As New FileSystemObject Dois je declaré quelque chose en zone public ou je sais pas ? |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
Il faut déclarer la bibliothèque Microsoft Scripting Runtime.
Tools References Outils Références Désolé, mais en allemand, je ne connais pas.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#10 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut Fredheg,
il ne faut pas oublier que tu peux appeler l'interface de Word par le code VBA, lui transmettre des commandes et mettre le tout dans une macro qui bouclerait sur les fichiers sur la base du code de Heureux-Oli |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Bonjour heureux-oli et sepia
merci de repondre heureux-oli : D'accord mais comment ? Excuse moi si ca te parait des question "stupide" mais en VBA Word je suis debutant. Dois je stocké mes macros dans un module de normal.dot ? Sepia : j'en prend note pour eventuellement la suite du code. Pour l'instant je suis bloqué au declaration de heureux-oli. Merci et@+ |
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
En fait, l'endroit où va se trouver le code n'est pas important.
Si tu stockes ce code dansun module du normale.dot, ce code sera accessible au départ de tous les documents. Si tu mets ce code dans un autre document, il ne sera disponible que lorsque ce document sera ouvert. Au vu du code que tu nous avais mis, je pensais que tu étais habitué au VBA. Je vais donc détailler comment fonctionne le code que j'ai posté. Code :
En VBA, quelque soit le programme utilisé, il estpossible de faire appel à une autre bibliothèque (programme). Pour pouvoir utiliser une bibliothèque, il faut dire au programme qu'il peut l'utiliser. Outils Références.Cette ligne de code : Dim oFSO As New FileSystemObject fait appel au programme et le déclare comme objet. Toutes ses fonctionnalités vont donc être disponibles. File system permet de travailler sur les fichiers et répertoires, tu trouveras un tuto ici Dès que j'ai récupéré le nom et le chemin du fichier, je l'ouvre en Word pour effectuer un traitement. Application.Documents.Open FileName:="f:\temp\" & oFil Application étant un objet application Word Attention, dans mon code, je ne ferme pas les objet ouvert, c'était juste un exemple. Application.Documents.Open FileName:="f:\temp\" & oFil doit être suivi d'un Document.close après traitement. Le traitment je ne l'ai pas mis.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Bonjour Heureux-oli
Effectivement je connais un peu VBA mais pour EXCELL pour word je nage encore un peu.... merci pour ton explication. J'ai declaré les ressource. Par contre je bloque a Code :
Si je corrige wApp.Documents.Open FileName:="D:\temp\" & oFil par Application.Documents.Open FileName:= "D:\temp\" & oFil alors j'ai une erreur "Microsft Visual basic :" je traduit : erreur temp depassé : 5273 Document ou chemin incorecte, essayer une des solution suivantes: controlé le chemin cliqué sur ouvrir et recherche votre document (d:\temp\nom-fichier.doc) EDIT : je pense qu'il faut prendre juste oFil Si je corrige wApp.Documents.Open FileName:="D:\temp\" & oFil par Application.Documents.Open FileName:=oFil alors j'ai une erreur "Microsft Visual basic :" je traduit : erreur temp depassé : 13 mauvais typ Une idées ? |
||
|
|
00
|
|
|
#14 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
Combien de fichiers y a-t-il dans le répertoire ?
Essaie de mettre un Debug.Print sur un compteur Genre Code :
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||
|
|
00
|
|
|
#15 | ||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Re
voici la liste des fichier du repertoire : nom fichier taille date heure 200030903-08956-07h17.doc 1411584 2003.9.3 6:18.8 20030807-08667-06h46.doc 1441792 2003.8.7 5:46.20 20030807-08667-14h06.doc 1483264 2003.8.7 13:7.4 20030808-08667-06h27.doc 1509376 2003.8.8 5:27.18 20030808-08667-10h16.doc 1499648 2003.8.8 9:20.44 20030811-08667-06h17.doc 1476096 2003.8.11 5:17.18 donc 5 fichier (pour tester) de environ 1.5 Mo chacun. J'ai essayer avec des nom de fichier "simple" (genre 1.doc, 2.doc etc...) mais j'ai encore la meme erreur. voici le code : Code :
mauvais type. Le debogeur s'arret dans la boucle et pendant la 1er boucle (arret sur le 1er fichier trouvé). Serait il possible que la declaration Dim oFil As File soit erroné ? |
||
|
|
00
|
|
|
#16 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
Possible, je vais regarder de plus près demain.
Je vais écrire et tester le code, on gagnera un peu de temps.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Edit du poste precedent pour plus de precisions..
OK pour la reecriture, c'est vraiment gentil. A demain |
|
|
00
|
|
|
#18 | ||||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 358 ![]() |
La routine pour ouvrir les fichiers d'un répertoire.
Il faut ajouter la référence de la bibliothèque Microsoft Scripting RunTime Code :
J'ai testé ce matin et je n'ai pas rencontré de problème Code :
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||||
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Bonjour Heureux-oli
Merci de repondre. Tes codes marche nickel (seulement si on oubli pas le \ a la fin du chemin). Donc la 1er etape est resolu. je vais encore tester avec des sous repertoire... Par contre il reste l'epineux probleme de la compresion d'image (la deuxieme etape). La aussi je veut bien de l'aide car je ne sais pas commenr appeler la fonction). |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Et ben non les sous repertoire ne sont pas pris en compte!
Une idées peut etre ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com