Résolu Simuler un double clic

jhlamoustache

XLDnaute Occasionnel
Bonjour,

Je crée un classeur (A) avec des procédures pour automatiser la saisie sur d'autres classeurs (B).
Dans les classeurs B, le seul mode de saisie dans certaines cellules est le double-clic, (qui renvoie "Now" si la cellule est initialement vide; et "" si la cellule contient une date). Bien entendu, ces procédures des classeurs B sont assorties de multiples contrôles et actions. Et le code des classeurs B est protégé.
Je peux donc pas y accéder, encore moins le modifier.


Lorsque, avec les macros du classeur A, je change de cellule sur le classeur B,
Private Sub Worksheet_SelectionChange(ByVal Target As Range) du classeur B s'exécute
Lorsque je change la valeur de cette cellule,
Private Sub Worksheet_Change(ByVal Target As Range) du classeur B s'exécute.
Mais cela donne des résultats non conformes.
Il faudrait que Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) de classeur B s'exécute.

J'ai tenté de mettre Application.doubleclick, mais rien ne se passe.

De ce que j'ai lu sur les forums, les demandes portant le même titre n'étaient pas similaires à ce que je demande. (Elles ne consistaient pas vraiment à simuler un doubleclic sur une feuille qui exécute du code).
Ou je n'ai pas tout compris.



J'ai préparé deux classeurs. Afficher le B et faire des doubles clics dans la colonne D. En D2 ou D3, les dates s'affichent ou se suppriment. Puis lancer les procédures Ajout_Date ou Supp_Date. On voit que les conditions d'ajout de dates ne sont pas respectées car l'ajout de dates se produit en D4 à
D10. C'est pourquoi j'ai besoin de simuler ce doubleclick.

Pouvez-vous m'aider ?
 

Pièces jointes

  • Fichier A.xlsm
    14.9 KB · Affichages: 39
  • Fichier B.xlsm
    17.6 KB · Affichages: 40

PMO2

XLDnaute Accro
Bonjour,

Merci beaucoup jhlamoustache pour la dithyrambe et pour m'avoir avoir appris "Dumbledore" (j'ai été obligé de chercher la signification).
Le R.Select ne s'impose pas, vous pouvez essayer sans l'utiliser comme suit :
VB:
'### Votre traitement (à parfaire par vos soins) ###
For i& = 2 To S.[a1].CurrentRegion.Rows.Count
  Set R = S.Range("D" & i& & "")
'  R.Select '//// on peut virer cette instruction qui ne servait qu'à visualiser
  '--- Appelle la procédure privée double clic avec les paramètres (ByVal Target As Range, Cancel As Boolean) qui vont bien ---
  Application.Run Chemin$, R, False
Next i&
'###################################################
En principe cela fait la même chose.
 

jhlamoustache

XLDnaute Occasionnel
Re,

lol : je vous souhaite bien évidemment un sort moins funeste qu'à Dumbledore.

J'ai écrit dans mes boucles des différentes procédures :
Cells(N + L - 1, C).Select
Call ZDBclick
ce qui me permet dans ZDBclick d'affecter Activecell à la variable R (Set R = ActiveCell).

Pour m'épargner Select, j'ai déclaré Public R as Range,
et j'ai remplacé Cells(N + L - 1, C).Select par Set R = Cells(N + L - 1, C) dans les boucles.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 336
Membres
103 190
dernier inscrit
silverwolf854