Useform selon le jour de la semaine

@

@Christophe@

Guest
Bonsoir Forum

Depuis mon poste de cette aprem, j'ai deja pas mal avancé, je suis arrivé a activé mon toggle button, qui m'ouvre le userform qu'il me faut selon la cellule active, mais maintenant une fois mon Toggle button sur position Insertion, si je change de jour, le bon userform ne veux pas s'ouvrir, je suis obligé de cliqué a nouveau sur mon toggle button pour retourner en mode normal en ensuite a nouveau cliqué decu pour retourner un mode Insertion, quelqu'un pourrait il m'aider. Plus d'explication sur le fichier

Merci d'avance

Bonne soiré a tous

@Christophe@
 

Pièces jointes

  • Planningform.zip
    27.3 KB · Affichages: 34
Dernière modification par un modérateur:
@

@+Thierry

Guest
Salut @Xtoph@

Tu trouveras le fichier ci-joint où je pense être arrivé à faire ce que tu voulais...
Mais bon c'est tout de même assez "usine à gaz" ton idée de faire tout çà, just pour saisir DEUX Malheureuses lettres !!

Je me suis cassé la tête en vain pour retourner le focus sur la feuille quand on change de sélection, et donc qu'on lance le Userform correspondant au jour... Mais bon çà tourne quand même.

J'ai préféré une méthode Select Case à ta casacde de If...

Regarde et dis-moi
@+Thierry
 

Pièces jointes

  • PlanningformThierry.zip
    35.3 KB · Affichages: 34
S

STéphane

Guest
j'ai réussi à finir ce que j'avais commencé ce matin

Option Explicit

'Thierry Macro Démo sur Excel-Downloads, February 2003
Dim Verrou As Boolean
Dim Adresse As String

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Phase Insertion"
Verrou = True
Adresse = ActiveCell.Address
Call_UserForm
Else
ToggleButton1.Caption = "Phase Normale"
Userform_Mass_Unloading
Verrou = False
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Verrou = False Then Exit Sub
If Not Application.Intersect(Target, Range("B1:AC12")) Is Nothing Then
Adresse = ActiveCell.Address
Call_UserForm
End If
End Sub

Private Sub Call_UserForm()
Dim d As Date
Dim UserDay As Date
Dim C As Byte
Dim USFname As String
Dim frm
C = ActiveCell.Column
d = Cells(1, C).Value
UserDay = Weekday(d)

USFname = Application.WorksheetFunction.Proper(Format(ActiveSheet.Cells(1, Selection.Cells(1, 1).Column), "dddd"))

For Each frm In Array(Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)
If frm.Name = USFname Then Load frm: frm.Show 0
Next frm
Range(Address).Activate
' Select Case UserDay
' Case 1
' USF_Unload
' Dimanche.Show 0
' Range(Adresse).Select '(un essai pour récupérer le focus sur la cellule)
' Case 2
' USF_Unload
' Lundi.Show 0
' Range(Adresse).Select
' Case 3
' USF_Unload
' Mardi.Show 0
' Range(Adresse).Select
' Case 4
' USF_Unload
' Mercredi.Show 0
' Range(Adresse).Select
' Case 5
' USF_Unload
' Jeudi.Show 0
' Range(Adresse).Select
' Case 6
' USF_Unload
' Vendredi.Show 0
' Range(Adresse).Select
' Case 7
' USF_Unload
' Samedi.Show 0
' Range(Adresse).Activate
' End Select

End Sub

Private Sub USF_Unload()

'J'avais tenté comme çà... Mais non çà ne prend pas !
'Donc méthode classique !!

Unload Lundi
Unload Mardi
Unload Mercredi
Unload Jeudi
Unload Vendredi
Unload Samedi
Unload Dimanche
End Sub

Function FormIsLoaded(MyFormName As String) As Boolean
Dim i As Integer
FormIsLoaded = False
For i = 0 To UserForms.Count - 1
If UserForms(i).Name = MyFormName Then
FormIsLoaded = True
Exit Function ' Quit function once form has been found.
End If
Next i
End Function

Sub test()
On Error Resume Next
For Each frm In Array(Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)
'MsgBox frm.Name
For i = 0 To UserForms.Count - 1
If UserForms(i).Name = frm.Name Then
Set usf = UserForms(i)
Unload usf
End If
Next i
Next frm
End Sub
Sub Userform_Mass_Unloading()
Dim frm
On Error Resume Next
For Each frm In Array(Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)
Unload frm
Next frm
End Sub
 
@

@+Thierry

Guest
Wow Thank You STéphane,

Mais je ne sais pas si tu te rappelles, mais je suis en US au bureau et donc, j'ai dû basculer en FR pour tester ton astuce, mais c'est génial !!

Tu as toujours des astuces du tonerre !!

Bonne Soirée
@+Thierry
 
@

@Christophe@

Guest
Bonsoir Forum

Ben la Thierry et Stephane un grand grand merci, c'est vraiment super, et ca marche du tonerre. Thierry, ce que je ne comprends pas c'est la réponse de Stéphane, j'ai copie coller, et ca marche pas trop, j'ai une erreure, ca pour le debut idem a ta macro, pourrais tu m'en dire un peu plus, merci

En tous cas encore un tres tres grand merci a vous deux de m'avoir aidé, sans vous je n'y serais jamais arrivé

Je ne voudrais pas faire le difficile, mais y aurais t'il moyen que dans mes userform, des que je clique sur un des bouton, que ce bouton se désactive, que je ne sais que cliqué une fois decu. si c'est pas trop difficile

Un grand grand merci

@Christophe@

FAut dire que je vous ai mis sur la bonne voie avec mon debut de macro, lol, lol, lol
 
@

@+Thierry

Guest
Salut @Xtof@

Ben pour te répondre dans l'ordre, STéphane est toujours assez rapide dans ses réponses, et il faut savoir les interpréter, car même étant succintes aux yeux du novice, elles sont terribles.

Il n'a pas mis ici un code à copier/coller........ Il a fait plus, il a mis ici son travail...

Il faut juste savoir le lire !

Ci-joint la version de STéphane mise en oeuvre (sans Utiliser la Function, car elle ne m'efface pas systématiquement les précédents UserForms...(?)


Pour Ta nouvelle demande je reviens......
@+Thierry
 

Pièces jointes

  • PlanningformThierrySTephane.zip
    30.6 KB · Affichages: 33
@

@+Thierry

Guest
Donc comme j'avais dit à STéphane plus haut son astuce géniale :

USFname = Application.WorksheetFunction.Proper(Format(ActiveSheet.Cells(1, Selection.Cells(1, 1).Column), "dddd"))

For Each frm In Array(Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)
If frm.Name = USFname Then Load frm: frm.Show 0
Next frm

Mais elle ne fonctionne que sur des paramètres régionaux en Français....... Donc j'ai contourné le problème en récupérant ton code d'origine et celui de STéphane......mais en renommant tous tes UserForms.......

C'est plus simple en plus !!

Ensuite pour ta demande, ce n'est pas difficile..... Mais par contre tes UserForms Christophe...........C'est le Big Bordel!!!......

Regarde Dimanche (USF1) et Lundi (USF2)........ je me les suis tapé pour les mettre dans l'ordre des numéros de CommandButton1,CommandButton2.... Etc.......
J'ai aussi refait l'ordre de Tabulation..... Mais pas les autres !!!

Je te laisse faire les USF3, USF4, USF5, USF6 et USF7..... Il faut être Propre dans son travail, sinon on le paie tôt ou tard !!!
Car tes UserForms son faits dans n'importe quel ordre.....
CommandButton1,CommandButton2 puis CommandButton9 etc...... Et les Tabulation c'est Idem.....

Donc amuses-toi bien à tout remettre en ordre....

et dis nous si ça te convient....... Tu as de la chance, on se mets à deux pour toi !

Bonne Nuit
@+Thierry
 

Pièces jointes

  • PlanningformThierrySTephane2.zip
    33 KB · Affichages: 44
Dernière modification par un modérateur:
@

@Christophe@

Guest
Merci beaucoup Thierry

De mon coté, j'ai essaye a titre d'essay de remplacé mais commandbutton pour des toggle button dans les userform de chaque jour pour essaye de cliqué sur le bouton pour qu'il fasse apparaitre la caption du bouton sur la cellule active, et que ensuite si je réappuis il supprime la caption du jour, mais la c'est autre chose, j'arrive a le mettre, a l'enlevé si je suis sur la cellule, mais je cherche.

L'ideal, serait que dans le userform j'ai les postes a planifie, je me mets sur le personne qui ferra ce service, je clique sur le button (command ou toggle), la prestation (exemple DS) se planifie sur la cellule active, a partir de ce moment la je ne peux plus la planifie, puisque elle est déja présente.

Ensuite peux importe la cellule sur laquelle je suis sur le jour, si je réappuis sur le (command ou toggle button) d'une prestation déja planifie que il supprime la prestation du jour selectioné et que mon userform me permets a nouveau de la planifie sur la cellule active.

J'espere que tu comprends un peu ce que je veux

Je suis tous de meme sur la bonne vois, j'apprends petite a petit, dire que il ya quelque mois de cela, après nos premier poste, je ne connaissais rien du tous en VBA, maintenant je m'en tire bien, avec F1, le forum, et essayé, essayé et encore essayé, lol


Merci de votre aide

@Christophe@
 
@

@Christophe@

Guest
Si Thierry, elle est parfaite de chez parfaite

Juste que quand je clique sur le commandbutton, il disparait, Ok, mais je prefereais qu'il change de couleur par exemple, pour que je sais que je l'ai déja planifie, ainsi que si possible, si je rappuis sur le meme commandbutton, qui serais rouge par exemple, si il savait me supprimer la prestation du jour, si c'est possible

je te joint le fichier que j'ai modifié, Tab, et Ordre, dis moi si j'ai bien modifié

MErci beaucoup a vous

@Christophe@
 
@

@Christophe@

Guest
Si Thierry, elle est parfaite de chez parfaite

Juste que quand je clique sur le commandbutton, il disparait, Ok, mais je prefereais qu'il change de couleur par exemple, pour que je sais que je l'ai déja planifie, ainsi que si possible, si je rappuis sur le meme commandbutton, qui serais rouge par exemple, si il savait me supprimer la prestation du jour, si c'est possible

je te joint le fichier que j'ai modifié, Tab, et Ordre, dis moi si j'ai bien modifié

MErci beaucoup a vous

@Christophe@
 

Pièces jointes

  • PlanningformThierrySTephane2.zip
    27.3 KB · Affichages: 33
Dernière modification par un modérateur:
@

@+Thierry

Guest
BEn dans un premier temps essaie comme ceci


Private Sub CommandButton1_Click()
ActiveCell.Value = CommandButton1.Caption
CommandButton1.BackColor = RGB(255, 255, 0) 'Red
End Sub

Fais F1 Sur RGB tu auras un tableau d'indice de RedGreenBlue

Pour :
si je rappuis sur le meme commandbutton, qui serais rouge par exemple, si il savait me supprimer la prestation du jour, si c'est possible

Je ne te suis pas ? on est sur une ActiveCell... si tu reclick la valeur de l'ActiveCell sera écrasée par celle du Bouton.... non ?

je ne vois pas ce que tu veux faire
@+Thierry
 
@

@Christophe@

Guest
Ben pour etre cour, le but, disons j'ai 30 personnes, j'ai 15 prestation un mardi, donc je planifie les personnes, je suis sur mardi, mon userform mardi s'ouvre, je me mets sur une personne, je clique commandbutton"DS", l'active cell value est DS, le bouton devient rouge, ce que m'indique que j'ai planifie 1 des 15 commandbutton ou prestation si tu veux, si j'ai tous planifie, il sont tous rouge, je passe au prochain jour, mais supposons, que avant de passer au prochain jour, je voudrais modifie une prestation, j'aimerai que si je clique sur commandbutton (rouge puisque déja planifie) il me supprime la prestation DS du jour donc mardi dans cette exemple, voila

Si c'est trop de chipo, dis moi, aucun probleme, j'ameliore de jour en jour, et je suis déja super content avec ce que vous m'avez tous aidé a accomplir.

Merci

Christophe
 
@

@+Thierry

Guest
Bon j'ai déjà fermé Excel et VBE...

Mais il suffit de faire dans chaque Click de bouton une mini-boucle du style

C = ActiveCell.Column
For N = 3 to 32 'si il y a 30 ligne
if Cells(N, C) = CommandButtonX.caption then
Cells(N,C) = ""
Next N

Bon ben sur ce...... moi je vais me coucher là, je suis crevé
Bonne Nuit
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
314 644
Messages
2 111 528
Membres
111 189
dernier inscrit
Laurent.