Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro complexe - occurence de texte sur fichiers joint

2 réponses
Avatar
Lune Rousse
Bonjour,

Si l=92un ou l=92une d=92entre vous =E0 des pistes pour r=E9soudre le long
probl=E8me VBA suivant je suis =E0 l=92=E9coute.

Merci.

Lune Rousse


Chacune des cellules de E3 =E0 Exxxx de la feuille TUTU contient un mot
associ=E9 =E0 un hyperlien qui renvoi vers un dossier.

Je souhaite appliquer une macro =E0 chacune des cellules pleines de la
plage E3 : E25000 pour obtenir le r=E9sultat suivant : (Le traitement
reste invisible pour l=92utilisateur.)

Macro :

En VBA je clic sur l=92hyperlien de la cellule E3, le dossier associ=E9
s=92ouvre.

Trois cas peuvent alors se pr=E9senter :

1 =96 La cellule E3 a d=E9j=E0 =E9t=E9 trait=E9e lors d=92un travail pr=E9c=
=E8dent. 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=96 Le dossier ouvert par l=92hyperlien de E3 est vide, il peut contenir
d=92autres 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 =96 Le dossier ouvert par l=92hyperlien de E3 contient un ou des
fichiers. (Les sous-dossiers pr=E9sents ne sont pas trait=E9s.)
Deux cas, =AB a =BB ou =AB b =BB, sont alors possibles :

a- L=92un des fichiers est un document *.eml et son nom contient au
moins les neuf premiers caract=E8res de la cellule de d=E9part (ici E3)
(exemple, si la cellule E3 contient : D=C9SOXYRIBONUCL=C9IQUE le fichier
*.eml peut se nommer =AB vecteur azot=E9e et D=E9soxyribonucl=E9otides dctp=
=BB

i. Dans ce cas il me faut rechercher dans le corps ou dans l=92en-t=EAte
du message le chiffre 20xx qui me donnera l=92ann=E9e d=92envoi du message.
Ce chiffre sera alors pos=E9 dans la cellule G3 puisque je traite E3.
ii. Dans le corps du message je recherche une occurrence de texte par
exemple : =ABquaternion=BB si je la trouve ne fusse qu=92une fois je mets u=
n
petit x dans la cellule H3 puisque je traite E3 et je passe
directement =E0 l=92=E9tape v sans r=E9aliser les =E9tapes iii et iv, sinon=
:
iii. J=92ouvre toutes les pi=E8ces jointes au message *.eml (les *.doc,
*.docx, *.ppt, *.odt,*.pdf,*.xls, *.xlsx) et je recherche l=92expression
=ABquaternion=BB dans ces pi=E8ces jointes. Si je la trouve ne fusse qu=92u=
ne
fois je mets un petit x dans la cellule H3 puisque je traite E3.
iv. Si je n=92ai pas trouv=E9 l=92 expression =AB quaternion=BB je mets u=
n
petit x dans la cellule i3.
v. La cellule E3 est maintenant trait=E9e, 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=92y a pas de fichier *.eml qui porte au moins les neuf premiers
caract=E8res de la cellule de d=E9part (ici E3). Dans ce cas :

i. J=92ouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx pr=E9sent dans le dossier ouvert par l=92hyperlien, sans ouvrir
les documents pr=E9sents dans les sous dossiers et je recherche
l=92expression =AB20xx=BB correspondant au num=E9ros de l=92ann=E9e =E9crit=
e dans
ces documents. Ce chiffre sera alors pos=E9 dans la cellule G3 puisque
je traite E3.

Pour ce traitement s=92il existe dans ce document les chiffres 2006,
2007 et 2005, on garde le chiffre le plus =E9lev=E9, on le stock et on le
compare aux autres chiffres trouv=E9s dans les autres documents pour ne
conserv=E9 que le plus =E9lev=E9.
ii. J=92ouvre tous les fichiers *.doc, *.docx, *.ppt, *.odt,*.pdf,*.xls,
*.xlsx et je recherche l=92expression =ABquaternion=BB dans ces documents.
Si je la trouve ne fusse qu=92une fois je mets un petit x dans la
cellule H3 puisque je traite E3.
iii. Si je n=92ai pas trouv=E9 l=92 expression =AB quaternion=BB je mets =
un
petit x dans la cellule i3.
iv. La cellule E3 est maintenant trait=E9e, 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=92ai fini !

2 réponses

Avatar
Papyjac
Bonjour Lune Rousse,

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" a écrit dans le message de
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 !
Avatar
FS
> Si l’un ou l’une d’entre vous à des pistes



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 :
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 !