Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un userform

mistercoke

XLDnaute Junior
Bonjour la communauté,

Je cherche depuis un moment un petit tuto pour le rappel des données dans un userform
J'ai créé ( Grace a vous tous ) un formulaire de saisi avec :
--Des option button
--Des textbox
--Des combobox
qui alimente une base de donnée.

Aujourd'hui j'aimerais en cliquant sur une ligne de la base de donnée que les données alimentent automatiquement le userform de départ pour avoir la possibilité d'apporter des modifications si besoin.

Dans l'attente d'avoir des infos je vais chercher d'avantage sur le forum et le net.

D'avance merci à tous.:)
 

mistercoke

XLDnaute Junior
Re : Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un user

Bonjour Staple1600
Merci pour les liens, cela pourra m'aider pour d'autre conception de userform mais je recherche le rappel du userform avec les données d'une ligne sélectionnée dans la base de donnée prélablement créé et non la réalisation.

Merci quand meme
 

Gorfael

XLDnaute Barbatruc
Re : Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un user

Salut mistercoke et le forum
Petit rappel : pas de devin, ni de télépathe sur ce site.

Si tu as compris comment mettre les données du USF dans une ligne, il suffit de faire l'inverse dans la macro Initialize de l'USF
A+
 

Si...

XLDnaute Barbatruc
Re : Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un user

salut

en principe, une macro du genre
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim L As Long
    L = Target.Row
    With UserForm1
        .OptionButton1 = Cells(L, 1)
        .OptionButton2 = Not .OptionButton1
        .TextBox1 = Cells(L,2)
        'ainsi de suite 
    End With
    UserForm1.Show

End Sub
 

mistercoke

XLDnaute Junior
Re : Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un user

Salut Gorfael et si ( original comme nom ) et le forum

Ca à l'air si simple en vous lisant, mais je ne vois pas comment faire appel au userform en faisant un double clic sur sur une des cases de la ligne à modifer. Mais bon, je vais voir ce que je peux faire avec les exemples que je peux trouver sur le forum. En effet Gorfael vous n'êtes pas devin ni télépath, je comprend bien votre message, par conséquent je vous met le code mais ca risque d'être indigeste et lourd.
N'ayez pas peur des horreurs que vous pourriez trouver, sans être expert j'ai quand même réussi a faire tout ceci grace a vous et le pire c'est que ca marche.
Pour certains cela ne sera que de la lecture mais moi je n'en suis pas à ce niveau.

Merci encore de votre présence et d'avoir tenter de m'aider.

Codialement,

Voici mon boulot de 4 jours environs.:p
Private Sub Userform_Initialize() 'Définition des listes de blocage ou non

Me.BlocagePFSup.List = Array("Non", "Oui") ' Première liste
Me.BlocagePFSup.ListIndex = 0 'Positionnement sur le premier élément de la liste

Me.BlocagePFPm.List = Array("Non", "Oui") ' Deuxième liste
Me.BlocagePFPm.ListIndex = 0

Me.BlocageHorsScell.List = Array("Non", "Oui") 'Troisième liste
Me.BlocageHorsScell.ListIndex = 0

Me.BlocagePFDluo.List = Array("Non", "Oui") 'Quatrième liste
Me.BlocagePFDluo.ListIndex = 0

'---Reset du Useform

NbPrelevementMono.Value = "0"
NbCaissePrelevementMono.Value = "10"
NbPrelevementBi.Value = "0"
NbCaissePrelevementBi.Value = "10"
NbCaissePaal2.Value = "0"
NbCaissePaal3.Value = "0"
NbDefFuiteScellSupS.Value = "0"
NbDefFuiteScellSupJ.Value = "0"
NbDefFuiteScellSupY.Value = "0"
ActionDefScellSup.Value = ""
NbFuiteScellPMS.Value = "0"
NbFuiteScellPMJ.Value = "0"
NbFuiteScellPMY.Value = "0"
ActionDefScelPm.Value = ""
NbFuiteHorsScellS.Value = "0"
NbFuiteHorsScellJ.Value = "0"
NbFuiteHorsScellY.Value = "0"
NbFuiteHorsScellA.Value = "0"
ActionDefHorsScel.Value = ""
NbDéfautDateS.Value = "0"
NbDéfautDateJ.Value = "0"
NbDéfautDateY.Value = "0"
ActionDefDluo.Value = ""



End Sub

Private Sub BoutonValider_Click() 'Paramètrage du bouton valider

'---Sélection de la couleur equipe
CEquipe = ""
For Each e In Me.Equipe.Controls
If e.Value Then CEquipe = e.Caption
Next e

'---Sélection du cyle
CCycle = ""
For Each c In Me.Cycle.Controls
If c.Value Then CCycle = c.Caption
Next c

'---Vérification des champs si renseignés ou non
'EQUIPE
If CEquipe = "" Then
MsgBox "Vous devez choisir une équipe"
Exit Sub
End If

'CYCLE
If CCycle = "" Then
MsgBox "Vous devez choisir un cycle"
Exit Sub
End If

'PRELEVEMENTS
If NbPrelevementMono.Value = 0 And _
NbPrelevementBi.Value = 0 Then
MsgBox "Vous devez saisir le nombre de prélèvement fait dans les différents formats"
Exit Sub
End If

If NbCaissePrelevementMono.Value = 0 And _
NbCaissePrelevementBi.Value = 0 Then
MsgBox "Vous devez saisir le nombre de caisse par prélèvement"
Exit Sub
End If

'FUITE SCELLAGE SUPERIEUR
If (NbDefFuiteScellSupS.Value <> 0 Or NbDefFuiteScellSupJ.Value <> 0 Or NbDefFuiteScellSupY.Value <> 0) And _
ActionDefScellSup.Value = "" Then
MsgBox "Vous devez saisir un commentaire sur l'action faite en équipe suite au défaut "
Exit Sub
End If

'FUITE SCELLAGE PM
If (NbFuiteScellPMS.Value <> 0 Or NbFuiteScellPMJ.Value <> 0 Or NbFuiteScellPMY.Value <> 0) And _
ActionDefScelPm.Value = "" Then
MsgBox "Vous devez saisir un commentaire sur l'action faite en équipe suite au défaut "
Exit Sub
End If

'FUITE HORS SCELLAGE
If (NbFuiteHorsScellS.Value <> 0 Or NbFuiteHorsScellJ.Value <> 0 Or NbFuiteHorsScellY.Value <> 0 Or NbFuiteHorsScellA.Value <> 0) And _
ActionDefHorsScel.Value = "" Then
MsgBox "Vous devez saisir un commentaire sur l'action faite en équipe suite au défaut hors scellage"
Exit Sub
End If

'DEFAUT DATE
If (NbDéfautDateS.Value <> 0 Or NbDéfautDateJ.Value <> 0 Or NbDéfautDateY.Value <> 0) And _
ActionDefDluo.Value = "" Then
MsgBox "Vous devez saisir un commentaire sur l'action faite en équipe suite au défaut date"
Exit Sub
End If

'QUANTITE DE CAISSES
If NbCaissePaal2.Value = 0 And NbCaissePaal3.Value = 0 Then
MsgBox "Vous devez saisir un nombre de caisse"
Exit Sub
End If

'---Vérification des formats infèrieurs et non numérique
If NbCaissePaal2.Value < 0 Or Not IsNumeric(NbCaissePaal2.Value) Then _
GoTo MsgFormatNum: Exit Sub 'Appel le message en bas du Sub
If NbCaissePaal3.Value < 0 Or Not IsNumeric(NbCaissePaal3.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbPrelevementMono.Value < 0 Or Not IsNumeric(NbPrelevementMono.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbPrelevementBi.Value < 0 Or Not IsNumeric(NbPrelevementBi.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbCaissePrelevementMono.Value < 0 Or Not IsNumeric(NbCaissePrelevementMono.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbCaissePrelevementBi.Value < 0 Or Not IsNumeric(NbCaissePrelevementBi.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbDefFuiteScellSupS.Value < 0 Or Not IsNumeric(NbDefFuiteScellSupS.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbDefFuiteScellSupJ.Value < 0 Or Not IsNumeric(NbDefFuiteScellSupJ.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbDefFuiteScellSupY.Value < 0 Or Not IsNumeric(NbDefFuiteScellSupY.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteScellPMS.Value < 0 Or Not IsNumeric(NbFuiteScellPMS.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteScellPMJ.Value < 0 Or Not IsNumeric(NbFuiteScellPMJ.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteScellPMY.Value < 0 Or Not IsNumeric(NbFuiteScellPMY.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteHorsScellS.Value < 0 Or Not IsNumeric(NbFuiteHorsScellS.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteHorsScellJ.Value < 0 Or Not IsNumeric(NbFuiteHorsScellJ.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteHorsScellY.Value < 0 Or Not IsNumeric(NbFuiteHorsScellY.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbFuiteHorsScellA.Value < 0 Or Not IsNumeric(NbFuiteHorsScellA.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbDéfautDateS.Value < 0 Or Not IsNumeric(NbDéfautDateS.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbDéfautDateJ.Value < 0 Or Not IsNumeric(NbDéfautDateJ.Value) Then _
GoTo MsgFormatNum: Exit Sub
If NbDéfautDateY.Value < 0 Or Not IsNumeric(NbDéfautDateY.Value) Then _
GoTo MsgFormatNum: Exit Sub

'---Définition du nombre de poch triés
NpochTri = (((NbPrelevementMono.Value) * (NbCaissePrelevementMono.Value)) + _
((NbPrelevementBi.Value) * (NbCaissePrelevementBi.Value))) * 24

'---Définition de la semaine calendaire
semcal = Format(Date, "ww", vbMonday, vbFirstFourDays)

'---Définition de la période
Select Case semcal
Case 1 To 4
Periode = 1
Case 5 To 8
Periode = 2
Case 9 To 12
Periode = 3
Case 13 To 16
Periode = 4
Case 17 To 20
Periode = 5
Case 21 To 24
Periode = 6
Case 25 To 28
Periode = 7
Case 29 To 32
Periode = 8
Case 33 To 36
Periode = 9
Case 37 To 40
Periode = 10
Case 41 To 44
Periode = 11
Case 45 To 48
Periode = 12
Case 49 To 53
Periode = 13
End Select

'Définition de la semaine
Select Case semcal
Case 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49
Semaine = 1
Case 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 56, 50
Semaine = 2
Case 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51
Semaine = 3
Case 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52
Semaine = 4
Case 53
Semaine = 5
End Select

'--- Positionnement dans la base
ligne = Sheets("BD_Tri_4A").[B65000].End(xlUp).Row + 1

'--- Transfert Formulaire dans BD
Sheets("BD_Tri_4A").Cells(ligne, 2) = Date
Sheets("BD_Tri_4A").Cells(ligne, 3) = CEquipe
Sheets("BD_Tri_4A").Cells(ligne, 4) = CCycle
Sheets("BD_Tri_4A").Cells(ligne, 5) = CDbl(NpochTri)
Sheets("BD_Tri_4A").Cells(ligne, 6) = CDbl(Me.NbDefFuiteScellSupS) + CDbl(Me.NbDefFuiteScellSupJ) + CDbl(Me.NbDefFuiteScellSupY)
Sheets("BD_Tri_4A").Cells(ligne, 7) = Me.BlocagePFSup
Sheets("BD_Tri_4A").Cells(ligne, 8) = Me.ActionDefScellSup
Sheets("BD_Tri_4A").Cells(ligne, 9) = CDbl(Me.NbFuiteScellPMS) + CDbl(Me.NbFuiteScellPMJ) + CDbl(Me.NbFuiteScellPMY)
Sheets("BD_Tri_4A").Cells(ligne, 10) = Me.BlocagePFPm
Sheets("BD_Tri_4A").Cells(ligne, 11) = Me.ActionDefScelPm
Sheets("BD_Tri_4A").Cells(ligne, 12) = CDbl(Me.NbFuiteHorsScellS) + CDbl(Me.NbFuiteHorsScellJ) + CDbl(Me.NbFuiteHorsScellY) + CDbl(Me.NbFuiteHorsScellA)
Sheets("BD_Tri_4A").Cells(ligne, 13) = Me.BlocageHorsScell
Sheets("BD_Tri_4A").Cells(ligne, 14) = Me.ActionDefHorsScel
Sheets("BD_Tri_4A").Cells(ligne, 15) = CDbl(Me.NbDéfautDateS) + CDbl(Me.NbDéfautDateJ) + CDbl(Me.NbDéfautDateY)
Sheets("BD_Tri_4A").Cells(ligne, 16) = Me.BlocagePFDluo
Sheets("BD_Tri_4A").Cells(ligne, 17) = Me.ActionDefDluo
Sheets("BD_Tri_4A").Cells(ligne, 18) = CDbl(Me.NbCaissePaal2)
Sheets("BD_Tri_4A").Cells(ligne, 19) = CDbl(Me.NbCaissePaal3)
Sheets("BD_Tri_4A").Cells(ligne, 20) = (CDbl(Me.NbCaissePaal2) + CDbl(Me.NbCaissePaal3)) * 24
Sheets("BD_Tri_4A").Cells(ligne, 21) = 100 * (CDbl(NpochTri) / ((CDbl(Me.NbCaissePaal2) + CDbl(Me.NbCaissePaal3)) * 24))
Sheets("BD_Tri_4A").Cells(ligne, 22) = 10000 * ((CDbl(Me.NbDefFuiteScellSupS) + CDbl(Me.NbDefFuiteScellSupJ) + CDbl(Me.NbDefFuiteScellSupY) + _
CDbl(Me.NbFuiteScellPMS) + CDbl(Me.NbFuiteScellPMJ) + CDbl(Me.NbFuiteScellPMY)) / (CDbl(NpochTri)))
Sheets("BD_Tri_4A").Cells(ligne, 23) = ParaTarget
Sheets("BD_Tri_4A").Cells(ligne, 24) = ParaTargetMini
Sheets("BD_Tri_4A").Cells(ligne, 25) = ParaLimiteCritique
Sheets("BD_Tri_4A").Cells(ligne, 26) = semcal
Sheets("BD_Tri_4A").Cells(ligne, 27) = Periode
Sheets("BD_Tri_4A").Cells(ligne, 28) = Semaine
Sheets("BD_Tri_4A").Cells(ligne, 29) = "P" & Periode & "S" & Semaine

Unload Me

Exit Sub

'MESSAGE D'ERREUR DE FORMAT
MsgFormatNum:
MsgBox "Vous avez saisi champ du formulaire avec une valeur négative ou non numérique merci de corriger votre saisie"
Exit Sub

End Sub

Ne soyez pas géné de quitter sans répondre, je compati à votre douleur:D
 

Gorfael

XLDnaute Barbatruc
Re : Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un user

Salut mistercoke et le forum
Utilises les balises pour le code (icone # en mode avancé) à la place des quote.

Au moins, un, qui pense à renommer ses contrôles.
Je me suis donc servi du code du bouton de validation :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Ligne As Long
Ligne = Target.Row
With Sheets("BD_Tri_4A")
    Date = .Cells(Ligne, 2)
    CEquipe = .Cells(Ligne, 3)
    CCycle = .Cells(Ligne, 4)
    '........
endWith
End Sub
La macro est à mettre dans le module lié à la feuille "BD_Tri_4A".
Le With/End With et les points de liaison ne sont pas nécessaire, à priori, étant donné que tu double-cliques sur la ligne de cette feuille.
La macro est à mettre dans le module lié à la feuille "BD_Tri_4A"

Pour ta macro, je ne vois guère que pour la détermination de la période où on peut la raccourcir. À la place du "select case semcal":
Code:
Periode = Ent(semcal/4) + 1
On pourrait sans doute faire de même pour la semaine avec un "semcal mod 4", mais le code y est déjà.
A+
 
Dernière édition:

mistercoke

XLDnaute Junior
Re : Help! Recherche Tuto ( Marche a suivre ) pour récupérer des données dans un user

Hello Gorfael,
Merci du coups de main, en mixant avec divers exemples du forum et votre aide, je pense que je vais pouvoir commencer a faire quelque chose.
Pour la période et la semaine, j'ai déjà utilisé cette réduction mais parfois ne donne pas le résultat escompté. Pour ce, je préfère la version case plus longue, simpliste peut etre mais fonctionnel et irréprochable.

En tout cas merci d'être revenu et promis je tacherais de ne pas oublier le# au lieu de quota

Thanks Ciocio ;-)
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 904
Membres
103 676
dernier inscrit
Haiti