Problème de positionnement dans une macro

Michou9

XLDnaute Occasionnel
Bonjour le Forum

J'ai une macro qui me permet de rentrer une date à partir d'un UserForm avec un calendrier
Cette macro fonctionne très bien, mais j'ai un problème de positionnement

Je veux que cette macro rentre donc la date dans la colonne B sur la ligne active
Puis fasse d'autres entrées de texte sur la même ligne dans des colonnes precises

Voir mon tableau ci-joint

Si je lance la macro avec cette UserForm toute seule, la date s'inscrira bien sur la cellule active
Mais si je lance ma macro (Ctrl D), plus rien ne va !

Merci pour votre aide

A+
 

Pièces jointes

  • Saisie d'une date avec un calendrier.xlsm
    17.8 KB · Affichages: 49

Michou9

XLDnaute Occasionnel
Re : Problème de positionnement dans une macro

Re,

Je vais faire des essais en ce sens, mais cela ne correspond pas à ce que j'attendais
J'avais choisi ce "Calendar" justement par sa simplicité et sa rapidité d’exécution.
Du coup cela enlève cet avantage :(

J'avais pensé autrement à faire une pause avec Sleep
La pause se fait bien, mais entre l'apparition de l'UserForm et du Calendar
Du coup cela ne sert à rien

Et à l'intérieur de l'UserForm, je n'y arrive pas !

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de positionnement dans une macro

Bonsoir le fil, bonsoir le forum,

Tu sais, si tu mets la propriété [Default] du bouton à True, la touche [Entrée] équivaut à cliquer dessus. Tu peux même, si tu veux, le cacher derrière le calendrier... Sinon regarde les autres procédures proposées par un calendrier (DBlClick par exemple). Comme ça l'initialisation n'enchaîneras plus sur la suite.
Tu ne dis pas ce que dit le code pas à pas...
 

Si...

XLDnaute Barbatruc
Re : Problème de positionnement dans une macro

re

Finalement il semble que tu veuilles intégrer le choix de la date dans une macro .
Si... c'est le cas
Dans le Module associé au Ctrl D, ta macro :
Code:
Public Dt As Date ‘indispensable
Sub Date_Jour()
  Dim L as Long
  L=ActiveCell.Row 'en cas de changement de sélection entre temps (voir MsgBox)
   UserForm5.Show
  MsgBox "on fait ce que l'on a à faire ",, « à toi de voir
  Cells(L, 3) = Dt: Cells(L, 5) = "Date1":  Cells(L, 7) = "Date2"
  Cells(L, 6).Select
End Sub
Dans le Module de l’Usf (qui contient le contrôle Calendar)

Code:
Private Sub UserForm_Initialize()
  Calendar1 = IIf(ActiveCell = "", Date, ActiveCell)
End Sub
Private Sub Calendar1_Click()
 Dt= Calendar1 'date à reporter plus tard
  Unload Me
End Sub
sinon c'est fini pour moi.
Remarque, ta colonne C sera d’abord formatée (à toi de choisir la forme de la date)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de positionnement dans une macro

Bonsoir le fil, bonsoir le forum,

Un contrôle a plusieurs procédures. Pour cela dans VBE (l'éditeur de Visual Basic) il te suffit de double-cliquer sur un contrôle pour que la procédure par défaut s'affiche avec une ligne vide pour te permettre d'y inscrire le code que tu veux. La procédure par défaut d'une TextBox par exemple est Change. Mais tu peux aussi choisir dans la liste des procédures attribuées à ce contrôle : BdlClick, Enter, Exit, Etc. Elle se trouve dans le champ Procédure qui est la seconde "combobox" juste au dessus du grand cadre à gauche ou l'utilisateur crée/modifie/supprime le code.
Le premier champ est le champ Objet où sont listés tous les objets du composant VBA actif. Par exemple, si tu sélectionne ton UserForm, (mais au fait tu as fait une UserForm5.Initialize !Donc tu as changé la procédure par défaut d'une Userform qui est le Click. Et moi qui suis là comme un c.. à tout te détailler...)

Bref... N'ayant pas ce contrôle je ne peux pas te dire avec certitude mais il doit y avoir, je pense, dans la liste un procédure qui ne va pas réagir à l'Initialisation de l'UserForm5 et qui pourrait te convenir (Peut-être le DblClick)...

Sinon je voulais savoir comment s'exécute le code pas à pas. Mais ça risque de te demander du temps pour expliquer et ça n'a pas l'air d'être ce que tu préfères...


 

Michou9

XLDnaute Occasionnel
Re : Problème de positionnement dans une macro

Bonsoir Si

Merci à nouvezu pour ton aide

J'ai corrigé ton code
Code:
Public Dt As Date 'indispensable
Sub Date_Jour()
  Dim L As Long
  L = ActiveCell.Row 'en cas de changement de sélection entre temps (voir MsgBox)
  UserForm5.Show
  MsgBox "on fait ce que l'on a à faire ", , " à toi de voir "
  Cells(L, 3) = Dt: Cells(L, 5) = "Date1":  Cells(L, 7) = "Date2"
  Cells(L, 6).Select
End Sub

à la place de
Code:
Public Dt As Date ‘indispensable
Sub Date_Jour()
  Dim L as Long
  L=ActiveCell.Row 'en cas de changement de sélection entre temps (voir MsgBox)
  UserForm5.Show
  MsgBox "on fait ce que l'on a à faire ",, « à toi de voir
  Cells(L, 3) = Dt: Cells(L, 5) = "Date1":  Cells(L, 7) = "Date2"
  Cells(L, 6).Select
End Sub


Ce ne sont que des erreurs de ' et de ""
Mais si il n'y a pas d'autres erreurs dans ton code
Je ne vois pas bien ce que c'est censé faire ?
Si je lance la macro, j’obtiens en même temps le Calendar et la MsgBox

Si je clique sur le 15 du Calendar, il beep et ne s’efface pas
Je clic ensuite sur le MsgBox pour l'effacer
et la je vois que c'est pas le 15, mais le 8 qui est entré dans la cellule ?


Bonsoir Robert
Merci pour ce détail, mais je dois avoué que je n'arrive pas à suivre ???

(Peut-être le DblClick)
Je veux bien un Double Clique au lieu d'un Simple Clic, si cela me permet de faire ce que je veux faire
Mais comment faire :confused:

Si ce Caldendar qui d’ailleurs n'apparait étrangement nulle part dans les contrôles
Si je ne l'avais pas récupéré, je ne serais même pas comment l'insérer dans un UserForm !
Bref si ce contrôle n'existe plus pour Excel 2010, c'est sans doute qu'il pose problème ??
Comme apparemment le contrôle MontView permet aussi la sélection d'une date
et que là, je suppose tu as bien ce contrôle (ou l'ajouter temporairement)
Serait-il possible de faire ce que je souhaite avec ce contrôle ?

A+
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème de positionnement dans une macro

Bonjour le fil, bonjour le forum,

Oui en effet c'est un contrôle qui peut poser problème et s'il est utilisable sous Excel 2010 32 bits il ne l'est plus sous Excel 2010 64 bits. J'ai passé un temps fou dans différents forums pour essayer de l'installer mais Niet !
Le MonthView je ne connais pas mais j'avoue que je ne vais même pas essayer de l'installer. Je préfère en rester avec les "basiques" qui fonctionnent partout. Puis, autant je peux trouver pratique un Calendrier pour taper une date du mois en cours, autant c'est ch..t quand on doit changer de mois ou pire d'année... Ça va dix fois plus vite de taper la date dans une TextBox avec un bonne gestion d'erreur...
 

Michou9

XLDnaute Occasionnel
Re : Problème de positionnement dans une macro

Bonjour Robert, Bonjour Si, Bonjour le Forum

Vu les difficultés avec ce « Calendar » et peut être les mêmes avec MonthView que je ne connais pas du tout.
Je vais donc abandonner ce principe.

Ma plage de date tourne autour d’une quarantaine de jours.
J’ai donc remplacé ce Calendar par une simple ListBox.

Comme cette discussion ne relève plus de ce Calendar
Je vais donc réalisé une nouvelle discussion.

Ma macro fonctionne, mais pour qu’elle soit opérationnelle, il faut que j’arrive à l’ouverture de la ListBox que le pointeur pointe directement la date du jour
Je pense que cela doit être possible ???
Je joins mon fichier dans la nouvelle discussion

Merci pour toute l'aide apportée et peut être à bientôt dans cette nouvelle discussion

A+
 

Discussions similaires

Réponses
19
Affichages
707

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 014
dernier inscrit
Aurélie MONTEIL