Garder données dans USERFORM et dans classeur excel

madinyna

XLDnaute Nouveau
Bonjour !!
Je m’en remets à vous car je n’arrive pas à trouver la solution...
J’ai essayé de créer un userform afin de renseigner des heures et des quantitatifs pour un chantier(1 classeur contenant 1 feuille par mois) .
Mes données s’injectent bien dans les cellules mais j’ai plusieurs problèmes :
Les quantitatifs et les heures sont saisis tous les jours.
- elles doivent donc impérativement rester dans ma feuille excel et apparaitre dans les textbox de mon userform (nommé HJANVIER) à chaque ouverture de mon classeur
- le classeur contenant les saisies ne devrait pas être visible par la personne qui saisi les données
- J’ai besoin d’un menu qui permet de choisir le mois de saisie sans faire apparaitre le contenu de mon classeur, je ne sais pas si c’est possible.
Je n’ai jamais appris à créer un userform, désolée si j’ai fait beaucoup d’erreur…pas douée...
Merci beaucoup de votre aide !!

Je vous joint mon fichier :


'Croix désactivée
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long


'ici c'est l'initialisation du UserForm
Private Sub HJANVIER_Initialize()
End Sub

Private Sub Q1P1_Change()

End Sub

Private Sub VALIDER_Enter()
'Indiquer la feuille à remplir
Sheets("JANVIER").Select

' Mise en place des valeurs numériques saisies Poste 1 quantitatif
Range("C9").Value = Q1P1.Value
Range("C10").Value = Q2P1.Value
Range("C11").Value = Q3P1.Value
Range("C12").Value = Q4P1.Value
Range("C13").Value = Q5P1.Value
Range("C14").Value = Q6P1.Value
Range("C15").Value = Q7P1.Value
Range("C16").Value = Q8P1.Value
Range("C17").Value = Q9P1.Value
Range("C18").Value = Q10P1.Value
Range("C19").Value = Q11P1.Value
Range("C20").Value = Q12P1.Value
Range("C21").Value = Q13P1.Value
Range("C22").Value = Q14P1.Value
Range("C23").Value = Q15P1.Value
Range("C24").Value = Q16P1.Value
Range("C25").Value = Q17P1.Value
Range("C26").Value = Q18P1.Value
Range("C27").Value = Q19P1.Value
Range("C28").Value = Q20P1.Value
Range("C29").Value = Q21P1.Value
Range("C30").Value = Q22P1.Value
Range("C31").Value = Q23P1.Value
Range("C32").Value = Q24P1.Value
Range("C33").Value = Q25P1.Value
Range("C34").Value = Q26P1.Value
Range("C35").Value = Q27P1.Value
Range("C36").Value = Q28P1.Value
Range("C37").Value = Q29P1.Value
Range("C38").Value = Q30P1.Value
Range("C39").Value = Q31P1.Value

' Mise en place des valeurs numériques saisies Poste 1 heures
Range("F9").Value = H1P1.Value
Range("F10").Value = H2P1.Value
Range("F11").Value = H3P1.Value
Range("F12").Value = H4P1.Value
Range("F13").Value = H5P1.Value
Range("F14").Value = H6P1.Value
Range("F15").Value = H7P1.Value
Range("F16").Value = H8P1.Value
Range("F17").Value = H9P1.Value
Range("F18").Value = H10P1.Value
Range("F19").Value = H11P1.Value
Range("F20").Value = H12P1.Value
Range("F21").Value = H13P1.Value
Range("F22").Value = H14P1.Value
Range("F23").Value = H15P1.Value
Range("F24").Value = H16P1.Value
Range("F25").Value = H17P1.Value
Range("F26").Value = H18P1.Value
Range("F27").Value = H19P1.Value
Range("F28").Value = H20P1.Value
Range("F29").Value = H21P1.Value
Range("F30").Value = H22P1.Value
Range("F31").Value = H23P1.Value
Range("F32").Value = H24P1.Value
Range("F33").Value = H25P1.Value
Range("F34").Value = H26P1.Value
Range("F35").Value = H27P1.Value
Range("F36").Value = H28P1.Value
Range("F37").Value = H29P1.Value
Range("F38").Value = H30P1.Value
Range("F39").Value = H31P1.Value

' Mise en place des valeurs numériques saisies Poste 2 quantitatif
Range("P9").Value = Q1P2.Value
Range("P10").Value = Q2P2.Value
Range("P11").Value = Q3P2.Value
Range("P12").Value = Q4P2.Value
Range("P13").Value = Q5P2.Value
Range("P14").Value = Q6P2.Value
Range("P15").Value = Q7P2.Value
Range("P16").Value = Q8P2.Value
Range("P17").Value = Q9P2.Value
Range("P18").Value = Q10P2.Value
Range("P19").Value = Q11P2.Value
Range("P20").Value = Q12P2.Value
Range("P21").Value = Q13P2.Value
Range("P22").Value = Q14P2.Value
Range("P23").Value = Q15P2.Value
Range("P24").Value = Q16P2.Value
Range("P25").Value = Q17P2.Value
Range("P26").Value = Q18P2.Value
Range("P27").Value = Q19P2.Value
Range("P28").Value = Q20P2.Value
Range("P29").Value = Q21P2.Value
Range("P30").Value = Q22P2.Value
Range("P31").Value = Q23P2.Value
Range("P32").Value = Q24P2.Value
Range("P33").Value = Q25P2.Value
Range("P34").Value = Q26P2.Value
Range("P35").Value = Q27P2.Value
Range("P36").Value = Q28P2.Value
Range("P37").Value = Q29P2.Value
Range("P38").Value = Q30P2.Value
Range("P39").Value = Q31P2.Value

' Mise en place des valeurs numériques saisies Poste 2 heures
Range("S9").Value = H1P2.Value
Range("S10").Value = H2P2.Value
Range("S11").Value = H3P2.Value
Range("S12").Value = H4P2.Value
Range("S13").Value = H5P2.Value
Range("S14").Value = H6P2.Value
Range("S15").Value = H7P2.Value
Range("S16").Value = H8P2.Value
Range("S17").Value = H9P2.Value
Range("S18").Value = H10P2.Value
Range("S19").Value = H11P2.Value
Range("S20").Value = H12P2.Value
Range("S21").Value = H13P2.Value
Range("S22").Value = H14P2.Value
Range("S23").Value = H15P2.Value
Range("S24").Value = H16P2.Value
Range("S25").Value = H17P2.Value
Range("S26").Value = H18P2.Value
Range("S27").Value = H19P2.Value
Range("S28").Value = H20P2.Value
Range("S29").Value = H21P2.Value
Range("S30").Value = H22P2.Value
Range("S31").Value = H23P2.Value
Range("S32").Value = H24P2.Value
Range("S33").Value = H25P2.Value
Range("S34").Value = H26P2.Value
Range("S35").Value = H27P2.Value
Range("S36").Value = H28P2.Value
Range("S37").Value = H29P2.Value
Range("S38").Value = H30P2.Value
Range("S39").Value = H31P2.Value

'Garder les données dans le userform et dans le tableau excel
HJANVIER.Hide

End Sub


'Quitter
Private Sub Quitter_Click()
Unload HJANVIER
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Garder données dans USERFORM et dans classeur excel

Bonjour Madinyna bienvenue dans le forum, bonjour le forum,

Difficile de t'aider sans un fichier en pièce jointe. Comme le poids du fichier est limité essaie d'épurer un max avec juste la structure et quelques données non confidentielles ou sinon dépose-le sur un site hébergeur et envoie le lien...
 

madinyna

XLDnaute Nouveau
Re : Garder données dans USERFORM et dans classeur excel

Merci pour ta réponse Robert !!
Je te joint mon fichier (ne te moque pas ! lol !)
J'ai réussi à faire en sorte que mes données ne disparaissent pas.
Je me suis surement compliqué la vie !! Ce classeur comportera 4 postes pour chaque mois de l'année. Sans compter que j'aurais 39 classeurs (1 par batiment) !!!
Est-il possible de faire en sorte que les données validées et reportées dans le tableau ne puissent plus être modifiées ? C'est un autre problème qui s'ajoute aux précédents !!
Merci d'aider une pauvre autodidacte.
 

YANN-56

XLDnaute Barbatruc
Re : Garder données dans USERFORM et dans classeur excel

Bonjour madinyna, aux participants et à ceux qui passeront par là.

Juste une petite remarque concernant la construction de ton USF "HJANVIER"

Tu peux remplacer:
Code:
'Récupération des données dans l'userform des QUANTITATIFS POSTE 1
Q1P1 = Sheets("JANVIER").Range("C9").Value
Q2P1 = Sheets("JANVIER").Range("C10").Value
Q3P1 = Sheets("JANVIER").Range("C11").Value
Q4P1 = Sheets("JANVIER").Range("C12").Value
Q5P1 = Sheets("JANVIER").Range("C13").Value
Q6P1 = Sheets("JANVIER").Range("C14").Value
Q7P1 = Sheets("JANVIER").Range("C15").Value
Q8P1 = Sheets("JANVIER").Range("C16").Value
Q9P1 = Sheets("JANVIER").Range("C17").Value
Q10P1 = Sheets("JANVIER").Range("C18").Value
Q11P1 = Sheets("JANVIER").Range("C19").Value
Q12P1 = Sheets("JANVIER").Range("C20").Value
Q13P1 = Sheets("JANVIER").Range("C21").Value
Q14P1 = Sheets("JANVIER").Range("C22").Value
Q15P1 = Sheets("JANVIER").Range("C23").Value
Q16P1 = Sheets("JANVIER").Range("C24").Value
Q17P1 = Sheets("JANVIER").Range("C25").Value
Q18P1 = Sheets("JANVIER").Range("C26").Value
Q19P1 = Sheets("JANVIER").Range("C27").Value
Q20P1 = Sheets("JANVIER").Range("C28").Value
Q21P1 = Sheets("JANVIER").Range("C29").Value
Q22P1 = Sheets("JANVIER").Range("C30").Value
Q23P1 = Sheets("JANVIER").Range("C31").Value
Q24P1 = Sheets("JANVIER").Range("C32").Value
Q25P1 = Sheets("JANVIER").Range("C33").Value
Q26P1 = Sheets("JANVIER").Range("C34").Value
Q27P1 = Sheets("JANVIER").Range("C35").Value
Q28P1 = Sheets("JANVIER").Range("C36").Value
Q29P1 = Sheets("JANVIER").Range("C37").Value
Q30P1 = Sheets("JANVIER").Range("C38").Value
Q31P1 = Sheets("JANVIER").Range("C39").Value

Par:

Code:
'Récupération des données dans l'userform des QUANTITATIFS POSTE 1
TOP_TXB = 48
For i = 1 To 31 ' CREATION DES CONTROLES TEXTBOX
Set TXB = Me.Controls.Add("Forms.TextBox.1", , True)
    With TXB
    .Left = 30: .Width = 36: .Height = 19.5: .Top = TOP_TXB: .Value = Sheets("JANVIER").Cells(i + 8, 3).Text
    With .Font: .Italic = False: .Bold = True: .Name = "Times new roman": .Size = 12: End With
    End With
 TOP_TXB = TOP_TXB + 18
Next i

(J'ai oublié la couleur de fond…Mais pas grave: c'est aussi facile!)

Imagine le temps gagné à construire les USF suivants dont tu auras besoin !!!
Quant au nombre de lignes dans ton projet... Je te laisse deviner :)

Sans parler de la gestion de moult actions sur ces TextBoxes
(Sous réserve que tu saches utiliser un peu les modules de classe)

Ici la création n'est faite que pour une rangée de TextBoxes,
mais pour le reste; le nombre de lignes à ajouter n'est pas important.

Une remarque personnelle, au passage:
J'ai toujours trouvé inutile de rebaptiser les Contrôles d'un USF pour deux raisons:
- Temps important à investir pour rien.
- Et analyse fastidieuse par la suite.
Il y a bien d'autres façons pour s'y retrouver…

Amicalement

Yann

La petite Modif jointe:
 

Pièces jointes

  • MON_FICHIER_2.zip
    40.5 KB · Affichages: 71

YANN-56

XLDnaute Barbatruc
Re : Garder données dans USERFORM et dans classeur excel

Bonjour madinyna et à ceux qui passeront par là.

Je test et je te redis.

J'y compte bien !!! :)

Au regard de la foultitude des contrôles dont je soupçonne le nombre colossal à venir dans ton projet,
je suis vivement disposé à te faire gagner les heures que tu pourras consacrer à autre chose.

La création d'un USF à la volée est particulièrement confortable,
et vaut mille fois le temps de l'avoir appris!
(C'est comme en Mathématique; les fainéants sont souvent les meilleurs!!!)

Amicalement, et à quand tu le souhaiteras.

Yann
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 412
Membres
103 202
dernier inscrit
Claire2BM