userform + 'modes'

F

FLEUVE007

Guest
Salut,

Mon problème est le suivant :

Je voudrais que quand on clic sur le bouton 'modifier' (on a préalablement sélectionné un employé dans la feuille de calcul), la fenêtre de saisie (userform "GESTION_USERS") s'ouvre mais en 'mode mofication' et pas en mode 'saisie'...

Le truc c'est que je ne sais pas comment on crée ses fameux 'modes', puisque je veux utiliser la même fenêtre pour la saisie et la modification...

En fait lorsqu'on clic sur OK, le plus simple et c'est ce que je souhaiterais faire, serait de suppirmer la ligne sélectionnée dans la feuille de calcul et de rajouter la personne en fin de liste avec les nouvelles modifications puis de retrier la liste

Si vous avez des idées...

Merci
A++

Peace à tous
 

Pièces jointes

  • PERSONNEL.zip
    24.3 KB · Affichages: 34
  • PERSONNEL.zip
    24.3 KB · Affichages: 35
  • PERSONNEL.zip
    24.3 KB · Affichages: 33
C

Creepy

Guest
Salut,

Alors moi j'ai fait ce type de macro. En faites, j'ai fait une useform double pour l'ajout et la modification de clients.

J'ai un bouton "ajouter" et un bouton "modifier" l'un par dessus l'autre. et en fonction de ce que choisit l'utilisateur (ajouter ou modifier), j'initilise differement ma Userform.

Pour choisir en quel mode lancer la U%serform, je mets 1 ou 2 dans une cellule dans un coin (blanc sur fonds blanc comme cela, ca ne se voit pas !!)

Voici des bouts de code :

------------ Le code de mes deux boutons sur ma feuille -----------------

Private Sub Ajouter_Click()
Sheets("Formulaire").Range("A1").Value = 2
ModifDial.Show
End Sub

Private Sub Modifier_Click()
If Feuil1.Clientbox.Text = "" Or Feuil1.Clientbox.Text = "Client" Then
MsgBox "Vous devez Selectionner un client avant !!", vbCritical + vbOKOnly, "Attention..."
Exit Sub
Else
Sheets("Formulaire").Range("A1").Value = 1
ModifDial.Show
End If
end sub
--------------- Initilisation de ma Userform----------------------
Private Sub UserForm_Initialize() '<- Initialisation de la Userform Modifdial
Select Case Sheets("formulaire").Range("A1").Value
Case 1
Sheets("formulaire").Range("A1").Value = "0"
With ModifDial
.Caption = "Modification enregistrement..."
.BtAjouter.Visible = False
.BtModifier.Visible = True
End With
ModMarche.Text = Feuil1.MarcheBox.Text
ModClient.Text = Feuil1.Clientbox.Text
ModNMR.Text = Feuil1.Nmr.Caption
ModPeriode.Text = Feuil1.Periode.Caption
ModUnite.Text = Feuil1.Unite.Caption
ModCM.Text = Feuil1.CM.Caption
ModTelCM.Text = Feuil1.TelCm.Caption
ModCEC.Text = Feuil1.CEC.Caption
ModTelCEC = Feuil1.TelCEC.Caption
ModProd.Text = Feuil1.Prod.Caption
ModTelProd.Text = Feuil1.ProdTel.Caption
ModDU.Text = Feuil1.DU.Caption
ModTelDU.Text = Feuil1.TelDU.Caption
ModRem.Text = Feuil1.Remarque.Caption
Case 2
Sheets("formulaire").Range("A1").Value = "0"
With ModifDial
.Caption = "Ajout d'un enregistrement..."
.BtAjouter.Visible = True
.BtModifier.Visible = False
End With
Call ClearModifdial
Case Else
Exit Sub
End Select
End Sub
---------------------------------------------------------------------------

Private Sub ClearModifdial() '<- Efface tous les champs de la Userform Modifdial
Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSForms.TextBox Then
CTRL = ""
End If
Next CTRL
End Sub

------------------------Bouton modifier de ma userform--------------------------
Private Sub BtModifier_Click() '<- Procedure de modification d'une entrée quand on clique sur le bouton "Modifier" de la UserForm Modifdial

If ModClient.Text = "" Or ModMarche = "" Or ModClient.Text = " " Or ModMarche = " " Or ModNMR.Text = "" Or ModNMR = " " Then
MsgBox "Vous devez entrer du texte ...", vbCritical + vbOKCancel, "Attention..."
Else
NomLBindex = Feuil1.Clientbox.ListIndex + 2

Dim Cherche As String
Dim L As Integer
Dim Maplage As Range
Dim FirstAddress As String
Dim C As Object
Cherche = Feuil1.Clientbox.Value
L = Sheets("BdeD").Range("A65536").End(xlUp).Row

Workbooks("KifékoA.xls").Activate
ActiveWorkbook.Sheets("BdeD").Visible = True
ActiveWorkbook.Sheets("BdeD").Select

Set Maplage = Sheets("BdeD").Range("A2:N" & L)
With Maplage
Set C = .Find(Cherche, LookIn:=xlValues)
If Not C Is Nothing Then
FirstAddress = C.Address
Do
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
End With
With Feuil3
.Range("A" & NomLBindex).Value = ModClient.Value
.Range("B" & NomLBindex).Value = ModMarche.Value
.Range("C" & NomLBindex).Value = ModNMR.Value
.Range("D" & NomLBindex).Value = ModPeriode.Value
.Range("E" & NomLBindex).Value = ModUnite.Value
.Range("F" & NomLBindex).Value = ModCM.Value
.Range("G" & NomLBindex).Value = ModTelCM.Value
.Range("H" & NomLBindex).Value = ModCEC.Value
.Range("I" & NomLBindex).Value = ModTelCEC.Value
.Range("J" & NomLBindex).Value = ModProd.Value
.Range("K" & NomLBindex).Value = ModTelProd.Value
.Range("L" & NomLBindex).Value = ModDU.Value
.Range("M" & NomLBindex).Value = ModTelDU.Value
.Range("N" & NomLBindex).Value = ModRem.Value
End With
End If
With Feuil1
.Clientbox.Value = ModClient.Value
.MarcheBox.Value = ModMarche.Value
.Nmr.Caption = ModNMR.Value
.Periode.Caption = ModPeriode.Value
.Unite.Caption = ModUnite.Value
.CM.Caption = ModCM.Value
.TelCm.Caption = ModTelCM.Value
.CEC.Caption = ModCEC.Value
.TelCEC.Caption = ModTelCEC.Value
.Prod.Caption = ModProd.Value
.ProdTel.Caption = ModTelProd.Value
.DU.Caption = ModDU.Value
.TelDU.Caption = ModTelDU.Value
.Remarque.Caption = ModRem.Value
End With

MsgBox "Modification faite. La modification sera définitive à la fermeture de l'application !!", vbCritical + vbOKOnly, "Attention..."
Sheets("formulaire").Range("A1").Value = "0"

ActiveWorkbook.Sheets("Formulaire").Select

Unload Me
End Sub
---------------------------Bouton ajouter de ma Userform -----------------
Private Sub BtAjouter_Click() '<- Procedure d'ajout d'une entrée quand on clique sur le bouton "Ajouter" de la userform Modifdial
Dim Msg1 As String
Dim Msg2 As String
Dim L2 As Integer
Dim L As Integer
Dim LastCell As String
Dim LastCell1 As String

If ModMarche = "" Or ModClient = "" Or ModNMR = "" Then '<- Si 1 des 3 premiers champ est pas rempli
MsgBox "Vous devez saisir ces 3 champs obligatoirement : Client, Marché & N° de marché !", vbCritical, "Ki-fé-koa Info..."
Exit Sub
End If

Msg1 = MsgBox("Voulez-vous ajouter cette nouvelle entrée ? ", vbYesNo, "Confirmation...")
If Msg1 = vbYes Then
L2 = Sheets("BdeD").Range("A65536").End(xlUp).Row + 1
With Feuil3
.Range("A" & L2).Value = ModClient.Value
.Range("B" & L2).Value = ModMarche.Value
.Range("C" & L2).Value = ModNMR.Value
.Range("D" & L2).Value = ModPeriode.Value
.Range("E" & L2).Value = ModUnite.Value
.Range("F" & L2).Value = ModCM.Value
.Range("G" & L2).Value = ModTelCM.Value
.Range("H" & L2).Value = ModCEC.Value
.Range("I" & L2).Value = ModTelCEC.Value
.Range("J" & L2).Value = ModProd.Value
.Range("K" & L2).Value = ModTelProd.Value
.Range("L" & L2).Value = ModDU.Value
.Range("M" & L2).Value = ModTelDU.Value
.Range("N" & L2).Value = ModRem.Value
End With
Else: Msg1 = vbNo
Exit Sub
End If

Msg2 = MsgBox("Voulez-vous continuer pour d'autres nouvelles entrées ?", _
vbYesNo, "Autre ajout ?")
If Msg2 = vbYes Then
Call ClearModifdial
Else
LastCell = Range("BdeD!A2").End(xlDown).Address
LastCell1 = Range("BdeD!B2").End(xlDown).Address
With Feuil1
.Clientbox.ListFillRange = "BdeD!A2:" & LastCell
.MarcheBox.ListFillRange = "BdeD!B2:" & LastCell1
.Clientbox.Value = ModClient.Value
.MarcheBox.Value = ModMarche.Value
.Nmr.Caption = ModNMR.Value
.Periode.Caption = ModPeriode.Value
.Unite.Caption = ModUnite.Value
.CM.Caption = ModCM.Value
.TelCm.Caption = ModTelCM.Value
.CEC.Caption = ModCEC.Value
.TelCEC.Caption = ModTelCEC.Value
.Prod.Caption = ModProd.Value
.ProdTel.Caption = ModTelProd.Value
.DU.Caption = ModDU.Value
.TelDU.Caption = ModTelDU.Value
.Remarque.Caption = ModRem.Value
End With

Workbooks("KifékoA.xls").Activate
ActiveWorkbook.Sheets("BdeD").Visible = True
ActiveWorkbook.Sheets("BdeD").Select

L = Sheets("BdeD").Range("A65536").End(xlUp).Row
Set Maplage = Sheets("BdeD").Range("A2:N" & L)
Maplage.Sort Worksheets("BdeD").Columns("A"), Order1:=xlAscending, Header:=xlGuess

ActiveWorkbook.Sheets("Formulaire").Select

Unload Me
End If
End Sub


Voila en esperant que cela te sera utile, désolé pour la longueur du post !
 
C

Creepy

Guest
Désolé mais je n'ai pas de code propre, j'ai des logos de la société, des clients, etc ...

Par soucis de confidentialité, je ne peux pas te l'envoyer, en plus ca ne passe pas sur le forum car le fichier est trop lourd (1,1 Mo non compressé !)

Si j'ai du temps je ferais le menage et je te l'enverais, mais c'est pas gagné !

Désolé !

Creepy
 

Discussions similaires

  • Question
XL 2010 Zoom
Réponses
5
Affichages
340

Statistiques des forums

Discussions
313 137
Messages
2 095 626
Membres
106 308
dernier inscrit
F.DIAS