macro complexe - occurence de texte sur fichiers joint
Le
Lune Rousse
Bonjour,
Si lun ou lune dentre vous à des pistes pour résoudre le long
problème VBA suivant je suis à lécoute.
Merci.
Lune Rousse
Chacune des cellules de E3 à Exxxx de la feuille TUTU contient un mot
associé à un hyperlien qui renvoi vers un dossier.
Je souhaite appliquer une macro à chacune des cellules pleines de la
plage E3 : E25000 pour obtenir le résultat suivant : (Le traitement
reste invisible pour lutilisateur.)
Macro :
En VBA je clic sur lhyperlien de la cellule E3, le dossier associé
souvre.
Trois cas peuvent alors se présenter :
1 La cellule E3 a déjà été traitée lors dun travail préc=
èdent. Cela
est visible car la cellule F3 contient un petit x. (Dans ce cas,
aucune action, je traite simplement la cellule suivante de la colonne
E de la feuille TUTU, ici E4).
2 Le dossier ouvert par lhyperlien de E3 est vide, il peut contenir
dautres dossiers mais il ne contient pas de fichier. Dans ce cas, je
mets simplement un petit x dans la cellule F3, et je traite la cellule
suivante de la colonne E de la feuille TUTU.
3 Le dossier ouvert par lhyperlien de E3 contient un ou des
fichiers. (Les sous-dossiers présents ne sont pas traités.)
Deux cas, « a » ou « b », sont alors possibles :
a- Lun des fichiers est un document *.eml et son nom contient au
moins les neuf premiers caractères de la cellule de départ (ici E3)
(exemple, si la cellule E3 contient : DÉSOXYRIBONUCLÉIQUE le fichier
*.eml peut se nommer « vecteur azotée et Désoxyribonucléotides dctp=
»
i. Dans ce cas il me faut rechercher dans le corps ou dans len-tête
du message le chiffre 20xx qui me donnera lannée denvoi du message.
Ce chiffre sera alors posé dans la cellule G3 puisque je traite E3.
ii. Dans le corps du message je recherche une occurrence de texte par
exemple : «quaternion» si je la trouve ne fusse quune fois je mets u=
n
petit x dans la cellule H3 puisque je traite E3 et je passe
directement à létape v sans réaliser les étapes iii et iv, sinon=
:
iii. Jouvre toutes les pièces jointes au message *.eml (les *.doc,
*.docx, *.ppt, *.odt,*.pdf,*.xls, *.xlsx) et je recherche lexpression
«quaternion» dans ces pièces jointes. Si je la trouve ne fusse quu=
ne
fois je mets un petit x dans la cellule H3 puisque je traite E3.
iv. Si je nai pas trouvé l expression « quaternion» je mets u=
n
petit x dans la cellule i3.
v. La cellule E3 est maintenant traitée, je mets un petit x dans la
cellule F3, et je traite la cellule suivante de la colonne E de la
feuille TUTU.
b- Il ny a pas de fichier *.eml qui porte au moins les neuf premiers
caractères de la cellule de départ (ici E3). Dans ce cas :
i. Jouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx présent dans le dossier ouvert par lhyperlien, sans ouvrir
les documents présents dans les sous dossiers et je recherche
lexpression «20xx» correspondant au numéros de lannée écrit=
e dans
ces documents. Ce chiffre sera alors posé dans la cellule G3 puisque
je traite E3.
Pour ce traitement sil existe dans ce document les chiffres 2006,
2007 et 2005, on garde le chiffre le plus élevé, on le stock et on le
compare aux autres chiffres trouvés dans les autres documents pour ne
conservé que le plus élevé.
ii. Jouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx et je recherche lexpression «quaternion» dans ces documents.
Si je la trouve ne fusse quune fois je mets un petit x dans la
cellule H3 puisque je traite E3.
iii. Si je nai pas trouvé l expression « quaternion» je mets =
un
petit x dans la cellule i3.
iv. La cellule E3 est maintenant traitée, je mets un petit x dans la
cellule F3, et je traite la cellule suivante de la colonne E de la
feuille TUTU.
Ouf jai fini !
Si lun ou lune dentre vous à des pistes pour résoudre le long
problème VBA suivant je suis à lécoute.
Merci.
Lune Rousse
Chacune des cellules de E3 à Exxxx de la feuille TUTU contient un mot
associé à un hyperlien qui renvoi vers un dossier.
Je souhaite appliquer une macro à chacune des cellules pleines de la
plage E3 : E25000 pour obtenir le résultat suivant : (Le traitement
reste invisible pour lutilisateur.)
Macro :
En VBA je clic sur lhyperlien de la cellule E3, le dossier associé
souvre.
Trois cas peuvent alors se présenter :
1 La cellule E3 a déjà été traitée lors dun travail préc=
èdent. Cela
est visible car la cellule F3 contient un petit x. (Dans ce cas,
aucune action, je traite simplement la cellule suivante de la colonne
E de la feuille TUTU, ici E4).
2 Le dossier ouvert par lhyperlien de E3 est vide, il peut contenir
dautres dossiers mais il ne contient pas de fichier. Dans ce cas, je
mets simplement un petit x dans la cellule F3, et je traite la cellule
suivante de la colonne E de la feuille TUTU.
3 Le dossier ouvert par lhyperlien de E3 contient un ou des
fichiers. (Les sous-dossiers présents ne sont pas traités.)
Deux cas, « a » ou « b », sont alors possibles :
a- Lun des fichiers est un document *.eml et son nom contient au
moins les neuf premiers caractères de la cellule de départ (ici E3)
(exemple, si la cellule E3 contient : DÉSOXYRIBONUCLÉIQUE le fichier
*.eml peut se nommer « vecteur azotée et Désoxyribonucléotides dctp=
»
i. Dans ce cas il me faut rechercher dans le corps ou dans len-tête
du message le chiffre 20xx qui me donnera lannée denvoi du message.
Ce chiffre sera alors posé dans la cellule G3 puisque je traite E3.
ii. Dans le corps du message je recherche une occurrence de texte par
exemple : «quaternion» si je la trouve ne fusse quune fois je mets u=
n
petit x dans la cellule H3 puisque je traite E3 et je passe
directement à létape v sans réaliser les étapes iii et iv, sinon=
:
iii. Jouvre toutes les pièces jointes au message *.eml (les *.doc,
*.docx, *.ppt, *.odt,*.pdf,*.xls, *.xlsx) et je recherche lexpression
«quaternion» dans ces pièces jointes. Si je la trouve ne fusse quu=
ne
fois je mets un petit x dans la cellule H3 puisque je traite E3.
iv. Si je nai pas trouvé l expression « quaternion» je mets u=
n
petit x dans la cellule i3.
v. La cellule E3 est maintenant traitée, je mets un petit x dans la
cellule F3, et je traite la cellule suivante de la colonne E de la
feuille TUTU.
b- Il ny a pas de fichier *.eml qui porte au moins les neuf premiers
caractères de la cellule de départ (ici E3). Dans ce cas :
i. Jouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx présent dans le dossier ouvert par lhyperlien, sans ouvrir
les documents présents dans les sous dossiers et je recherche
lexpression «20xx» correspondant au numéros de lannée écrit=
e dans
ces documents. Ce chiffre sera alors posé dans la cellule G3 puisque
je traite E3.
Pour ce traitement sil existe dans ce document les chiffres 2006,
2007 et 2005, on garde le chiffre le plus élevé, on le stock et on le
compare aux autres chiffres trouvés dans les autres documents pour ne
conservé que le plus élevé.
ii. Jouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx et je recherche lexpression «quaternion» dans ces documents.
Si je la trouve ne fusse quune fois je mets un petit x dans la
cellule H3 puisque je traite E3.
iii. Si je nai pas trouvé l expression « quaternion» je mets =
un
petit x dans la cellule i3.
iv. La cellule E3 est maintenant traitée, je mets un petit x dans la
cellule F3, et je traite la cellule suivante de la colonne E de la
feuille TUTU.
Ouf jai fini !

Poser une question


Tes spécifications me semblent correctes, mais je crains que l'on s'éloigne
d'une question ponctuelle appelant une réponse précise
Tu demandes carrément à quelqu'un d'écrire ta macro.
Il faut que nous disent, ce que tu sais pas faire plus précisément
Car soit, tu es bloquée dès le démarrage de ton code, soit tu as commencé
ton code et tu peines sur telle ou telle fonction...
Dans le premier cas, il faut que tu ramènes à un problème plus simple (sans
les 3 cas, sans le petit x...) et puis tu enrichis en fonction des résultats
obtenus
Dans le 2ème cas tu nous donnes ton code en cours avec le problème identifié
Pour ma part j'aurai tendance à dire que la cellule contenant un lien
hypertexte ne devrait contenir qu'un seul fichier ou qu'un seul dossier
Désolé de ne répondre plus précisément à ta question
Papyjac
"Lune Rousse" news:
Bonjour,
Si l’un ou l’une d’entre vous à des pistes pour résoudre le long
problème VBA suivant je suis à l’écoute.
Merci.
Lune Rousse
Chacune des cellules de E3 à Exxxx de la feuille TUTU contient un mot
associé à un hyperlien qui renvoi vers un dossier.
Je souhaite appliquer une macro à chacune des cellules pleines de la
plage E3 : E25000 pour obtenir le résultat suivant : (Le traitement
reste invisible pour l’utilisateur.)
Macro :
En VBA je clic sur l’hyperlien de la cellule E3, le dossier associé
s’ouvre.
Trois cas peuvent alors se présenter :
1 – La cellule E3 a déjà été traitée lors d’un travail précèdent. Cela
est visible car la cellule F3 contient un petit x. (Dans ce cas,
aucune action, je traite simplement la cellule suivante de la colonne
E de la feuille TUTU, ici E4).
2– Le dossier ouvert par l’hyperlien de E3 est vide, il peut contenir
d’autres dossiers mais il ne contient pas de fichier. Dans ce cas, je
mets simplement un petit x dans la cellule F3, et je traite la cellule
suivante de la colonne E de la feuille TUTU.
3 – Le dossier ouvert par l’hyperlien de E3 contient un ou des
fichiers. (Les sous-dossiers présents ne sont pas traités.)
Deux cas, « a » ou « b », sont alors possibles :
a- L’un des fichiers est un document *.eml et son nom contient au
moins les neuf premiers caractères de la cellule de départ (ici E3)
(exemple, si la cellule E3 contient : DÉSOXYRIBONUCLÉIQUE le fichier
*.eml peut se nommer « vecteur azotée et Désoxyribonucléotides dctp »
i. Dans ce cas il me faut rechercher dans le corps ou dans l’en-tête
du message le chiffre 20xx qui me donnera l’année d’envoi du message.
Ce chiffre sera alors posé dans la cellule G3 puisque je traite E3.
ii. Dans le corps du message je recherche une occurrence de texte par
exemple : «quaternion» si je la trouve ne fusse qu’une fois je mets un
petit x dans la cellule H3 puisque je traite E3 et je passe
directement à l’étape v sans réaliser les étapes iii et iv, sinon :
iii. J’ouvre toutes les pièces jointes au message *.eml (les *.doc,
*.docx, *.ppt, *.odt,*.pdf,*.xls, *.xlsx) et je recherche l’expression
«quaternion» dans ces pièces jointes. Si je la trouve ne fusse qu’une
fois je mets un petit x dans la cellule H3 puisque je traite E3.
iv. Si je n’ai pas trouvé l’ expression « quaternion» je mets un
petit x dans la cellule i3.
v. La cellule E3 est maintenant traitée, je mets un petit x dans la
cellule F3, et je traite la cellule suivante de la colonne E de la
feuille TUTU.
b- Il n’y a pas de fichier *.eml qui porte au moins les neuf premiers
caractères de la cellule de départ (ici E3). Dans ce cas :
i. J’ouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx présent dans le dossier ouvert par l’hyperlien, sans ouvrir
les documents présents dans les sous dossiers et je recherche
l’expression «20xx» correspondant au numéros de l’année écrite dans
ces documents. Ce chiffre sera alors posé dans la cellule G3 puisque
je traite E3.
Pour ce traitement s’il existe dans ce document les chiffres 2006,
2007 et 2005, on garde le chiffre le plus élevé, on le stock et on le
compare aux autres chiffres trouvés dans les autres documents pour ne
conservé que le plus élevé.
ii. J’ouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx et je recherche l’expression «quaternion» dans ces documents.
Si je la trouve ne fusse qu’une fois je mets un petit x dans la
cellule H3 puisque je traite E3.
iii. Si je n’ai pas trouvé l’ expression « quaternion» je mets un
petit x dans la cellule i3.
iv. La cellule E3 est maintenant traitée, je mets un petit x dans la
cellule F3, et je traite la cellule suivante de la colonne E de la
feuille TUTU.
Ouf j’ai fini !
En général, pour résoudre un problème complexe, il est utile de le
découper en petits bouts, chacun d'eux étant traité par une macro ou une
fonction. La procédure qui permettra de résoudre l'ensemble du problème
sera au final constituée d'appels de ces macros ou fonctions.
Tu as déjà pas mal découpé ton problème.
Il va te falloir, par exemple, une fonction perso pour traiter le cas
des fichiers eml. Elle renverra comme résultat 'vrai' si elle a trouvé
ce que tu cherches, 'faux' sinon. Autre fonction s'il n'y a pas de
fichier eml. Dans les deux cas, le mot clé à rechercher (quaternion dans
ton exemple) sera passé en paramètre de la fonction.
Un problème clairement posé étant, dit-on, à moitié résolu, tu es bien
parti(e) :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Lune Rousse a écrit :