OVH Cloud OVH Cloud

Simuler

10 réponses
Avatar
13Hubert
Bonjour à toutes et à tous !

Je posais hier, une question relative à un problème de simulation d'appui
sur la touche Entrée...
MichDenis et Infogroup m'ont gentiement et rapidement répondu et j'ai
considéré que leurs réponses me satisfairaient.
Je suis allé un peu vite en besogne car leur propositions ne fonctionne
pas... J'explique ci-après en détails ce que je veux faire ainsi que le
problème que je rencontre. Bien évidement, je ne suis pas obtu et quoi que
l'on me proposera, même si ce n'est pas de simuler la touche Entrée, ça
m'ira... Il ne manquerait plus que je fasse la fine bouche ! :-))

Un collègue a mis à la disposition de l'ensemble, sur le réseau, un fichier
"effectifs.xls" dont il est le concepteur et qu'il ne veut pas modifier pour
mes beaux yeux.
Ce fichier contient des informations dont j'ai besoin journellement. Ces
infos n'apparaissent qu'après avoir renseigné deux cellules ("A4" date de
début de calcul et "D4" date de fin...) . Après renseignement de ces dates,
le calcul se fait après que l'on ait pressé un bouton de commande
nommé....Calcul On peut ensuite fermer le fichier.

Moi, je suis en train de créer un autre fichier et, plutôt que de monter une
autre usine à gaz qui ira calculer des infos qui sont déjà présentes dans
effectifs.xls j'ai eu l'idée d'aller y puiser ce que je veux.
Au beau milieu d'une macro, je voudrais ajouter des fonctions pour :

1/ ouvrir effectifs.xls,
2/ presser le premier bouton "Ok" du message qui nous annonce qu'on est bien
dans le fichier effectifs.xls conçu par machin-chose(mégalo ?),
3/ ouvrir deux boites successives pour renseigner A4 et D4,
4/ activer le bouton de lancement du calcul,
5/ ressortir du fichier après avoir copié le résultat dans une cellule de
mon fichier
6/ continuer ma macro pour autre chose...

Je sais faire le 1/, le 3/, le 5/ et le 6/.
J'ai un gros problème pour les 2/ et 4/.


Voilà !
Merci à tous de vous pencher sur ma misérable personne ;-)

Hubert
--
...from Marseille !

10 réponses

Avatar
jps
ça ne m'étonne pas...
jps (dont les petites jambes s'animent pour courir vers l'abri anti-scuds)

"13Hubert" a écrit dans le message de
news:
MichDenis m'a gentiment et rapidement répondu et j'ai
considéré que sa réponse me satisferait.
Je suis allé un peu vite en besogne car sa proposition ne fonctionne
pas...


Avatar
Paul V
En ces beaux jours de fêtes, je me sens un peu flemmard et je me dis qu'a ta
place je me contenterais de faire une copie complète du fichier, je virerais
les procédures genantes et créerais une seule procédure qui reprend ce qui
découle du OK, entrerais les données demandées et relancerais la procédure à
l'endroit du calcul en interceptant le bouton Calcul.

C'est peut-être idiot par rapport à ton fichier mais c'est ma première idée
pour simplifier le tout et virer les principaux problèmes.

A+

Paul V


"13Hubert" a écrit dans le message de
news:
Bonjour à toutes et à tous !

Je posais hier, une question relative à un problème de simulation d'appui
sur la touche Entrée...
MichDenis et Infogroup m'ont gentiement et rapidement répondu et j'ai
considéré que leurs réponses me satisfairaient.
Je suis allé un peu vite en besogne car leur propositions ne fonctionne
pas... J'explique ci-après en détails ce que je veux faire ainsi que le
problème que je rencontre. Bien évidement, je ne suis pas obtu et quoi que
l'on me proposera, même si ce n'est pas de simuler la touche Entrée, ça
m'ira... Il ne manquerait plus que je fasse la fine bouche ! :-))

Un collègue a mis à la disposition de l'ensemble, sur le réseau, un
fichier
"effectifs.xls" dont il est le concepteur et qu'il ne veut pas modifier
pour
mes beaux yeux.
Ce fichier contient des informations dont j'ai besoin journellement. Ces
infos n'apparaissent qu'après avoir renseigné deux cellules ("A4" date de
début de calcul et "D4" date de fin...) . Après renseignement de ces
dates,
le calcul se fait après que l'on ait pressé un bouton de commande
nommé....Calcul On peut ensuite fermer le fichier.

Moi, je suis en train de créer un autre fichier et, plutôt que de monter
une
autre usine à gaz qui ira calculer des infos qui sont déjà présentes dans
effectifs.xls j'ai eu l'idée d'aller y puiser ce que je veux.
Au beau milieu d'une macro, je voudrais ajouter des fonctions pour :

1/ ouvrir effectifs.xls,
2/ presser le premier bouton "Ok" du message qui nous annonce qu'on est
bien
dans le fichier effectifs.xls conçu par machin-chose(mégalo ?),
3/ ouvrir deux boites successives pour renseigner A4 et D4,
4/ activer le bouton de lancement du calcul,
5/ ressortir du fichier après avoir copié le résultat dans une cellule de
mon fichier
6/ continuer ma macro pour autre chose...

Je sais faire le 1/, le 3/, le 5/ et le 6/.
J'ai un gros problème pour les 2/ et 4/.


Voilà !
Merci à tous de vous pencher sur ma misérable personne ;-)

Hubert
--
...from Marseille !


Avatar
LSteph
;o))

ça ne m'étonne pas...
jps (dont les petites jambes s'animent pour courir vers l'abri anti-scuds)

"13Hubert" a écrit dans le message
de news:
MichDenis m'a gentiment et rapidement répondu et j'ai
considéré que sa réponse me satisferait.
Je suis allé un peu vite en besogne car sa proposition ne fonctionne
pas...





Avatar
MichDenis
Tiens, juste pour toi, fais le test suivant

Dans un classeur de ton choix, tu inscris dans le ThisWorkbook ceci :
'----------------
Private Sub Workbook_Open()
MsgBox "Bonjour Sieur du Beaujolais..."
End Sub
'----------------

Après avoir fermé ton classeur, tu inscris cette petite macro
dans le classeur actif à l'écran et n'oubliant pas de modifier
le chemin et le nom du classeur dans la procédure pour le chemin
et le nom du classeur dans lequel tu as ajouté la sub...
'-------------------------
Sub test()
SendKeys "{enter}"
Workbooks.Open "C:Classeur1.xls"
End Sub
'-------------------------

Comme il y a usage de "Sendkeys" dans la procédure, tu dois
OBLIGATOIREMENT exécuter cette procédure à partir de
l'interface de la feuille de calcul et non à partir de la fenêtre de
l'éditeur de code.

Est-ce que tu vois le message à l'ouverture de ton classeur ?

N.B. jps (dont les petites jambes ....
La levée du coude amenuise la grandeur et la vitesse des enjambées...
delà à conclure que tu as de petites jambes ...il n'y a qu'un pas que
je ne franchirai pas !!


"jps" a écrit dans le message de news: %
ça ne m'étonne pas...
jps (dont les petites jambes s'animent pour courir vers l'abri anti-scuds)

"13Hubert" a écrit dans le message de
news:
MichDenis m'a gentiment et rapidement répondu et j'ai
considéré que sa réponse me satisferait.
Je suis allé un peu vite en besogne car sa proposition ne fonctionne
pas...


Avatar
LSteph
Bonjour,

Faudrait connaître avec certitude le nom du bouton

Feuil1.CommandButton1.Accelerator = "k"
Feuil1.CommandButton1.Activate
Application.SendKeys "%k", 1

Alors, gravement d'accord avec Paul mais avec réserve sur la méthode
possible:

S'il faut deux dates (bornes sans doute) pour effectuer le calcul
puis cliquer sur un bouton pour obtenir les données, il y a fort à
parier que ton "megalo-machin" a utilisé une macro qui va chercher les
petites données mais pas forcément dans ce classeur, ou peut être déjà
dans ce classeur. En tout cas qui se coincent entre les deux dates
il y aurait donc fort à parier qu'une base de données traine quelque
part soit dans une feuille cachée du classeur, soit par liaison ou
requête sur autre chose ou fichier qui se spécifie avec les dates.
Tout cela pour en arriver à:
fais alt+F11 qd tu as ouvert le classeur
et regardes comment se prépare cette popotte.
A mon regret , si par hasard le projet est verrouillé
c'est un cas de clés de Ferrari qui ne peut tu comprendras
se résoudre sur ce forum .

Sinon tu te ramène sur ton poste la bébête qui contient toute les
données et te passes effectivement des fonctionalités du fâmeux classeur.




Cordialement.

lSteph

Bonjour à toutes et à tous !

Je posais hier, une question relative à un problème de simulation d'appui
sur la touche Entrée...
MichDenis et Infogroup m'ont gentiement et rapidement répondu et j'ai
considéré que leurs réponses me satisfairaient.
Je suis allé un peu vite en besogne car leur propositions ne fonctionne
pas... J'explique ci-après en détails ce que je veux faire ainsi que le
problème que je rencontre. Bien évidement, je ne suis pas obtu et quoi que
l'on me proposera, même si ce n'est pas de simuler la touche Entrée, ça
m'ira... Il ne manquerait plus que je fasse la fine bouche ! :-))

Un collègue a mis à la disposition de l'ensemble, sur le réseau, un fichier
"effectifs.xls" dont il est le concepteur et qu'il ne veut pas modifier pour
mes beaux yeux.
Ce fichier contient des informations dont j'ai besoin journellement. Ces
infos n'apparaissent qu'après avoir renseigné deux cellules ("A4" date de
début de calcul et "D4" date de fin...) . Après renseignement de ces dates,
le calcul se fait après que l'on ait pressé un bouton de commande
nommé....Calcul On peut ensuite fermer le fichier.

Moi, je suis en train de créer un autre fichier et, plutôt que de monter une
autre usine à gaz qui ira calculer des infos qui sont déjà présentes dans
effectifs.xls j'ai eu l'idée d'aller y puiser ce que je veux.
Au beau milieu d'une macro, je voudrais ajouter des fonctions pour :

1/ ouvrir effectifs.xls,
2/ presser le premier bouton "Ok" du message qui nous annonce qu'on est bien
dans le fichier effectifs.xls conçu par machin-chose(mégalo ?),
3/ ouvrir deux boites successives pour renseigner A4 et D4,
4/ activer le bouton de lancement du calcul,
5/ ressortir du fichier après avoir copié le résultat dans une cellule de
mon fichier
6/ continuer ma macro pour autre chose...

Je sais faire le 1/, le 3/, le 5/ et le 6/.
J'ai un gros problème pour les 2/ et 4/.


Voilà !
Merci à tous de vous pencher sur ma misérable personne ;-)

Hubert


Avatar
13Hubert
Merci PaulV pour cette proposition...

En dépit de ma farouche volonté de respecter le travail des autres, j'avoue
humblement avoir été séduit un moment par cette idée mais je l'ai rapidement
chassée.
Et puis, n'y tenant plus, mon coté humain de base a pris le dessus et je me
suis lâchement laisser emporter par la simplicité, doublée, il faut le dire,
d'une pensée émue pour vous, chers Exceliens avancés, que j'allais forcément
ennuyer jusqu'aux dernières limites d'une année moribonde si je resistais
encore à l'appel de ce que croyais être une malhonnêteté intellectuelle...
Ainsi, fort de mes nouvelles convictions, j'ai "tapé" dans le fichier en
question pour en extraire les lignes qui devaient me mener jusqu'au Graal
tant espéré...
C'était sans compter avec la mégalomanie de mon "cher" collègue qui, la
magie du réseau et de ses sécurités aidant, a tout fait pour cacher les
données de référence sous des droits et autres autorisations...

Que me restait-il d'autre que "d'enquiquiiner" (mot marseillais facile à
comprendre...) mes amis du forum...?
Ainsi fut fait et me voilà à quémender encore un peu de votre savoir...

En tous cas, merci beaucoup, surtout de m'avoir lu jusqu'au bout. Et en
parlant de bout, je terminerai en vous souhaitant un :

BON BOUT D'AN !

...comme on dit chez moi :

Hubert
--
...from Marseille !
Avatar
jps
bonjour denis
eh bien sûr que ça marche ton truc ; qui pourrait en douter?
quant à la levée du coude, ça fonctionne bien aussi, merci...
jps

"MichDenis" a écrit dans le message de news:

Tiens, juste pour toi, fais le test suivant

Dans un classeur de ton choix, tu inscris dans le ThisWorkbook ceci :
'----------------
Private Sub Workbook_Open()
MsgBox "Bonjour Sieur du Beaujolais..."
End Sub
'----------------

Après avoir fermé ton classeur, tu inscris cette petite macro
dans le classeur actif à l'écran et n'oubliant pas de modifier
le chemin et le nom du classeur dans la procédure pour le chemin
et le nom du classeur dans lequel tu as ajouté la sub...
'-------------------------
Sub test()
SendKeys "{enter}"
Workbooks.Open "C:Classeur1.xls"
End Sub
'-------------------------

Comme il y a usage de "Sendkeys" dans la procédure, tu dois
OBLIGATOIREMENT exécuter cette procédure à partir de
l'interface de la feuille de calcul et non à partir de la fenêtre de
l'éditeur de code.

Est-ce que tu vois le message à l'ouverture de ton classeur ?

N.B. jps (dont les petites jambes ....
La levée du coude amenuise la grandeur et la vitesse des enjambées...
delà à conclure que tu as de petites jambes ...il n'y a qu'un pas que
je ne franchirai pas !!


"jps" a écrit dans le message de news:
%
ça ne m'étonne pas...
jps (dont les petites jambes s'animent pour courir vers l'abri anti-scuds)

"13Hubert" a écrit dans le message de
news:
MichDenis m'a gentiment et rapidement répondu et j'ai
considéré que sa réponse me satisferait.
Je suis allé un peu vite en besogne car sa proposition ne fonctionne
pas...






Avatar
MichDenis
Utilise ce type de syntaxe :

Feuil1 = Nom du module à adapter
Denis = Nom de la macro à adapter
(Si la macro appelée est dans un module standard,
il n'est pas nécessaire de mentionner son nom dans
la ligne de code)

'-------------------
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!Feuil1.Denis"
Application.Run LaMacro

Feuil1 = Nom du module
Denis = Nom de la macro
'-------------------


"13Hubert" a écrit dans le message de news:

Bon !

Je suis désolé d'avoir été, avec mon problème de bouton OK, à l'origine de
petits grincements de dents... Mea culpa !

Je viens de lire les messages qui ont fait suite à ma requête et j'ai
compris pas-mal de chose. Comme quoi, rions, pleurons, crions etc... mais
surtout ne nous taisons jamais car la discussion fait toujours avancer le
schmilblik !

Ainsi, je me suis rendu compte, en essayant les petits fichiers test de
MichDenis (très formateurs au demeurant...!) que j'avais pris le problème
dans le mauvais sens. Dans ma logique "implacable", je m'étais imaginé qu'il
fallait d'abords ouvrir le fichier puis ensuite, simuler l'appui sur
Entrée... Ben non ! Excel et VBA en ont voulu autrement ! Il semble qu'il
faille presser Entrée avant d'ouvrir le fichier. Ainsi, les lignes avinées
;-) relatives au Beaujolais de MichDenis (sobre, lui...) m'ont aidé dans ma
démarche et j'ai l'immense plaisir de vous annoncer que CA MARCHE même avec
mon mégalo-fichier...!
Alors, encore une fois, merci MichDenis !

Quant à ISteph, merci à lui pour sa réponse à la lecture de laquelle on
comprend que lui aussi a vu juste. Je le disais avec beaucoup moins de
technicité que lui (son message ayant croisé mon dernier post), je n'ai pas
toutes les données dans le fichier effectifs.xls.
De fait, il me faut impérativement utiliser ce fichier et ses macros pour
aller chercher les données.

Je l'ai donc décortiqué, et le clic sur le bouton "calcul" lance une
"Private Sub" qui se trouve dans la feuille active...
D'où ma nouvelle question :

J'ai tenté de lancer un "call" de cette Private Sub mais ça plante... (J'en
connais un qui me dirait : "ça ne m'étonne pas..." ;-)
Je me doute bien qu'il doit y avoir un truc puisqu'il s'agit de lancer une
Private Sub qui se trouve en plus dans une feuille et non dans un module...

Alors voilà...
J'ai posé ma nouvelle question...

Je vous l'avais bien dit que j'allait vous casser les... pieds jusqu'au bout !

Merci mille fois à tous

Hubert

--
...from Marseille !
Avatar
LSteph
Re,

J'ai tenté de lancer un "call" de cette Private Sub mais ça plante...


En ce cas (sauf si l'objet est protégé)la simulation du click que je
t'ai proposée ne fonctionnerait-elle pas?

Il faut quand même adapter au code de la feuille et au nom du bouton.

Cordialement.

lSteph


Bon !

Je suis désolé d'avoir été, avec mon problème de bouton OK, à l'origine de
petits grincements de dents... Mea culpa !

Je viens de lire les messages qui ont fait suite à ma requête et j'ai
compris pas-mal de chose. Comme quoi, rions, pleurons, crions etc... mais
surtout ne nous taisons jamais car la discussion fait toujours avancer le
schmilblik !

Ainsi, je me suis rendu compte, en essayant les petits fichiers test de
MichDenis (très formateurs au demeurant...!) que j'avais pris le problème
dans le mauvais sens. Dans ma logique "implacable", je m'étais imaginé qu'il
fallait d'abords ouvrir le fichier puis ensuite, simuler l'appui sur
Entrée... Ben non ! Excel et VBA en ont voulu autrement ! Il semble qu'il
faille presser Entrée avant d'ouvrir le fichier. Ainsi, les lignes avinées
;-) relatives au Beaujolais de MichDenis (sobre, lui...) m'ont aidé dans ma
démarche et j'ai l'immense plaisir de vous annoncer que CA MARCHE même avec
mon mégalo-fichier...!
Alors, encore une fois, merci MichDenis !

Quant à ISteph, merci à lui pour sa réponse à la lecture de laquelle on
comprend que lui aussi a vu juste. Je le disais avec beaucoup moins de
technicité que lui (son message ayant croisé mon dernier post), je n'ai pas
toutes les données dans le fichier effectifs.xls.
De fait, il me faut impérativement utiliser ce fichier et ses macros pour
aller chercher les données.

Je l'ai donc décortiqué, et le clic sur le bouton "calcul" lance une
"Private Sub" qui se trouve dans la feuille active...
D'où ma nouvelle question :

J'ai tenté de lancer un "call" de cette Private Sub mais ça plante... (J'en
connais un qui me dirait : "ça ne m'étonne pas..." ;-)
Je me doute bien qu'il doit y avoir un truc puisqu'il s'agit de lancer une
Private Sub qui se trouve en plus dans une feuille et non dans un module...

Alors voilà...
J'ai posé ma nouvelle question...

Je vous l'avais bien dit que j'allait vous casser les... pieds jusqu'au bout !

Merci mille fois à tous

Hubert



Avatar
13Hubert
Merci MichDenis !

Ce soir, je suis en congés pour quelques jours. J'emporte ce que tu m'as
indiqué comme des devoirs à faire à la maison... ;-))
J'ai donc un peu de temps devant moi pour comprendre et appliquer...

A très bientôt à tous, merci encore et re-BON BOUT D'AN !

Hubert
--
...from Marseille !