Choisir champ d'action macro a partir d'un Userform

Niouf

XLDnaute Occasionnel
Bonjour le forum,

Dites moi, j'ai une macro qui fonctionne pas trop mal pour le moment, et j'aurai aime la rendre plus accessible.

Code:
'Macro for create a table in an other sheet, with the Plnd order numbers,
'and extract the TRUNKING and SM numbers in the period : Current date + 1 month - end of third next month

 date1Mois = DateSerial(Year(Date), Month(Date) + 1, Day(Date))
 date4Mois = DateSerial(Year(Date), Month(Date) + 4, Day(Date))
 Sheets(2).[A1].CurrentRegion.ClearContents
 derlig = Cells(Rows.Count, 9).End(xlUp).Row
For Each c In Range("I2:I" & derlig).SpecialCells(xlCellTypeVisible)

   If c < date1Mois Then
         ReDim Preserve tablo(3, x)
         tablo(0, x) = Cells(c.Row, 1)
         tablo(1, x) = Cells(c.Row, 4)
         tablo(2, x) = Cells(c.Row, 7)
         tablo(3, x) = Cells(c.Row, 9)
         x = x + 1
   End If

   If c >= date1Mois And c <= date4Mois And _
         Left(Cells(c.Row, 1), 2) <> "SM" And InStr(1, Cells(c.Row, 4), "trunking", 1) = 0 Then
         ReDim Preserve tablo(3, x)
         tablo(0, x) = Cells(c.Row, 1)
         tablo(1, x) = Cells(c.Row, 4)
         tablo(2, x) = Cells(c.Row, 7)
         tablo(3, x) = Cells(c.Row, 9)
         x = x + 1
   End If

Sur ce code, vous pouvez voir qu'un "Tri" est effectue sur une plage bien precise. Entre date 1 et date 4

Ce que j'aimerai faire, c'est pouvoir tout simplement faire apparaitre un userform au moment précis ou cette partie de la macro fonctionne, userform qui me demanderait de choisir deux dates pour mon champ d'action.

Est ce clair ? Et est ce facilement realisable ?

Merci d'avance :)
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Choisir champ d'action macro a partir d'un Userform

Bonjour

une piste:
tu peux ouvrir une boite de dialogue demandant de cliquer sur une cellule contenant ta date ??
date1Mois = Application.InputBox("cliquez sur une cellule contenant la date 1 Mois:", Type:=8)
 

Niouf

XLDnaute Occasionnel
Re : Choisir champ d'action macro a partir d'un Userform

Salut vgendron,

Merci pour ta piste :)
Malheureusement, ce n'est pas tres adapte a mon utilisation.

J'avais dans l'idee, tres grossierement de donner pour:
- date1=TextBox1.Value
-date4=TextBox2.Value

Et tout cela a partir d'un Userform apparu avant le code que j'ai envoye auparavant.

Clairement, je ne sais pas trop comment metre en memoire les valeurs stockees dans l'UserForm ...
 

vgendron

XLDnaute Barbatruc
Re : Choisir champ d'action macro a partir d'un Userform

Clairement, je ne sais pas trop comment metre en memoire les valeurs stockees dans l'UserForm ..

suis pas assez familier des userform..mais j'ai cru lire ca et la qu'on pouvait "stocker" le contenu de textbox dans des variables déclarées en Static
ou alors, tu les colles dans une cellule de ton fichier excel..
 

Dranreb

XLDnaute Barbatruc
Re : Choisir champ d'action macro a partir d'un Userform

Bonjour.
Il y a de nombreuses façon de traiter le problème. La plus simple, même si ce n'est pas celle qui aurait ma préférence, serait :
VB:
UserForm1.Show
Date1 = CDate(UserForm1.TextBox1.Text)
Date4 = CDate(UserForm1.TextBox2.Text)
Unload UserForm1 ' Attention: Dans UserForm1, sortir par Me.Hide, surtout pas par Unload Me
Les contrôles d'UserForm sont en effet des éléments Public, donc des propriétés, puisqu'un UserForm est un objet.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Choisir champ d'action macro a partir d'un Userform

Oui mais ce n'est pas la plus rationnelle. En fait lui et moi avons été induit en erreur par ce mot Static. Vous n'aviez en fait nul besoin d'une pérennité particulière, juste un problème de transmission de donnée. Il serait mieux de les stocker simplement dans des variables Public de votre module standard: elle seront connues dans l'UserForm. Mais ce qui aurait ma préférence, vu qu'elles n'ont pas besoin d'être globales dans ce module lui même, ce serait de les passer ByRef à une Public Sub de l'UserForm. On appelle alors ça une méthode, comme toute procédure Public dans un module objet.
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 286
Membres
104 086
dernier inscrit
lucasjol