Codification VBA + faire paraître la fiche correspondante en milieu d'écran

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour le Forum,
Bonjour,
Je vous propose qu’une aide me soit donnée pour ce qui est expliqué ci-après.
Je dispose d’un fichier, lourd pour être compressé ici.
J’ai besoin d’aide pour mon application commencée en VBA.
J’espère ne pas m’être trompé dans la composition de l’ensemble, et serais comblé si un spécialiste dans ce domaine pouvait me corriger les erreurs, y placer les oublis, et m’indiquer la marche à suivre pour finaliser la suite du travail sur deux points décrits ci-dessous.

Le fichier dispose d’une feuille de base de données que j’ai nommée B (en onglet)
J’ai créé un Userform 1, et suis fier d’être arrivé jusque là. Comment supprimer les points en fond pour « n’y voir que du bleu » ?

J’ai aussi préparé une feuille que j’ai nommée FICHE SAISIES. J’y ai placé un bouton « Formulaire de saisie » qui pourrait être en relation avec la fiche de saisies Userform1 déjà créée
1 - Mais là je ne sais pas comment faire. Selection image + affecter une macro, mais laquelle car à ce moment là je n’ai rien dans la fenêtre qui apparaît !

Peut-être est-il possible de faire paraître cette fiche de saisie Userform sur cette feuille FICHE SAISIES lors de son accès ?
Le bouton QUITTER devant avoir deux fonctions :
- ne pas enregistrer les valeurs entrées partiellement sur la fiche de saisie,
- faire partir de l’écran la fiche, la feuille ne retrouvant alors que bouton « Formulaire de saisie »
Je ne sais pas composer le code.
Il est d’ailleurs probable que la fin de ma liste ci-dessous ne soit pas bonne.

2 - Mais là je ne sais pas comment faire.

Avec Alt F11, j’ai tenté de placer les codes correspondants, ce qui a donné :

Private Sub UserForm1_Click() 'FICHE DE SAISIE
' Cette fenêtre de saisie devrait paraître en milieu d'écran de la feuille nommée FICHE SAISIES
End Sub
Private Sub ComboBox1_Change() 'Fenêtre Date
'c'est une liste déroulante prise dans feuille Paramètres zone E2:E15
Sub Nbre_ZoneListe() 'devrait dimensionner la zone de liste suiv nbr enreg
Dim NbreEnreg As Integer
With UserForm1
.ComBox1.RowSource = "E2:E15" 'Dans la feuille nommée Paramètres
NbreEnreg = .ComBox1.ListCount
.ComBox1.ListRows = NbreEreg
.Show
End With

End Sub
Private Sub ComboBox2_Change() 'FenêtreLieu
'c'est une liste déroulante prise dans feuille Paramètres zone C2:C41

Sub Nbre_ZoneListe() 'devrait dimensionner la zone de liste suiv nbr enreg
Dim NbreEnreg As Integer
With UserForm1
.ComBox2.RowSource = "C2:C41" 'Dans la feuille nommée Paramètres
NbreEnreg = .ComBox1.ListCount
.ComBox1.ListRows = NbreEreg
.Show
End With
End Sub


Private Sub CommandButton2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
End Sub ‘j’ai l’impression que cette partie est inutile


Private Sub Label1_Click() 'Texte Date
End Sub

Private Sub Label2_Click() 'Texte Lieu
End Sub

Private Sub Label3_Click() 'Texte PBrut
End Sub

Private Sub Label4_Click() 'TexteCat0
End Sub

Private Sub Label5_Click() 'TexteCat0,5
End Sub

Private Sub Label6_Click() 'TexteCat1
End Sub

Private Sub Label7_Click() 'TexteCat2
End Sub

Private Sub Label9_Click() 'Texte PSacVide
End Sub

Private Sub TextBox1_Change() 'FenBrut0
End Sub

Private Sub TextBox2_Change() 'FenSacV0
End Sub

Private Sub TextBox3_Change() 'FeBrut0,5
End Sub

Private Sub TextBox4_Change() 'FenSacV0,5
End Sub

Private Sub TextBox5_Change() 'FenBrut1
End Sub

Private Sub TextBox6_Change() 'FenSacV1
End Sub

Private Sub TextBox7_Change() 'FenBrut2
End Sub

Private Sub TextBox8_Change() 'FenSacV2

End Sub
Private Sub CommandButton1_Click() 'ENREGISTRER
Unload Me
' devrait placer sur la première ligne vide dans la feuille de la base B (en partant de la fin : ligne 2000 seulement) :
' la date 'jjjj jjj mm' de ComboBox1 dans la feuille de base B en colonne A7 :A2000
' la valeur choisie dans comboBox2 dans la feuille de base B en colonne B7 :B2000

' une valeur forme 1 234,56 dans TextBox1 pour FenBrut0 en feuille B en colonne D7 :D2000
' une valeur forme 1 234,56 dans TextBox2 pour FenSacV0 en feuille B en colonne E7 :E2000

' une valeur forme 1 234,56 dans TextBox3 pour FenBrut0,5 en feuille B en colonne J7 :J2000
' une valeur forme 1 234,56 dans TextBox1 pour FenSacV0,5 en feuille B en colonne K7 :K2000

' une valeur forme 1 234,56 dans TextBox3 pour FenBrut1 en feuille B en colonne P7 :p2000
' une valeur forme 1 234,56 dans TextBox1 pour FenSacV1 en feuille B en colonne Q7 :Q2000

' une valeur forme 1 234,56 dans TextBox3 pour FenBrut2 en feuille B en colonne V7 :V2000
' une valeur forme 1 234,56 dans TextBox1 pour FenSacV2 en feuille B en colonne W7 :W2000


End Sub

Private Sub CommandButton2_Click() 'Bouton QUITTER
'Private Sub CommandButton1_Click() 'Nettoie ANNULER LA SAISIE - SORTIE
' Me.ComboBox1 = "" 'Date
' Me.ComboBox2 = "" 'Lieu
' Me.TextBox1 = "" 'FenBrut0
' Me.TextBox2 = "" 'FenSacV0
' Me.TextBox3 = "" 'FenBrut0,5
' Me.TextBox4 = "" 'FenSacV0,5
' Me.TextBox5 = "" 'FenBrut1
' Me.TextBox6 = "" 'FenSacV1
' Me.TextBox7 = "" 'FenBrut2
' Me.TextBox8 = "" 'FenSacV2
'For Each c In Me.UserForm1.Controls
' c.Value = False
'Next c
Unload Me ' Formulaire actif

End Sub
 

Pièces jointes

  • FicheSaisie.jpg
    FicheSaisie.jpg
    43.7 KB · Affichages: 305

Hulk

XLDnaute Barbatruc
Re : Codification VBA + faire paraître la fiche correspondante en milieu d'écran

Slt Web,

Là je crois qu'il faut absolument que tu déposes ton fichier.

1) Si tu as des données confidentielles, tu les remplaces.

2) Tu dis que ton fichier est trop lourd, mais tu peux en faire un échantillon et le zipper ensuite avec Windows (Click-droit et Ajouter à l'archive... max 50Ko).

3) Si ton fichier est toujours trop lourd, tu peux toujours utiliser un site tel que Cijoint.fr pour déposer ton fichier, (max 8Mo) mais il ne restera pas éternellement en ligne et d'où l'obligation d'ôter toutes données confidentielles !

Tu auras plus d'aide par la suite je pense.

Cdt, Hulk.
 

soenda

XLDnaute Accro
Re : Codification VBA + faire paraître la fiche correspondante en milieu d'écran

Bonjour le fil, Webperegrino, Hulk

On peut déjà commencer par le début

J’ai créé un Userform ... Comment supprimer les points en fond ,
Les points en fond n'apparaissent qu'en mode création, ce sont des guides qui doivent
permettre de positionner plus facilement les contrôles sur le UserForm.
En mode programme (lorsque le UserForm est lancé), ces points disparaissent.
On peut naturellement désactiver ces guides...

bouton « Formulaire de saisie » ... "pour afficher" Userform1
Dans un module standard, entre le code ci-dessous.
Code:
Sub AfficheUserForm1()
    UserForm1.Show
End Sub
puis dans ta feuille "B", fais un clic droit sur le bouton et cliques sur "affecter une macro ...",
dans la boite de dialogue sélectionne la macro et cliques sur "Ok"

A plus
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Codification VBA + faire paraître la fiche correspondante en milieu d'écran

Bonjour Hulk, Soeda, Le Forum,
Un honneur de vous voir me répondre.
Comme vous le verrez, j'ai réussi à avancer un peu et grâce à vous.

Comme proposé par Hulk, j'ai déposé le fichier prépaPESÉE.zip sur le site indiqué.
J'ai tout déprotégé : toutes les formules dans les cellules ne sont plus solides !

Comme vous constaterez dans mon avancée depuis vos deux messages, j'ai réussi à faire paraître l'userform, bien bleu comme la mer de Bretagne, dans la feuille 1 : FICHE SAISIES.
Génial ! Je l'ai aussi dans la dernière feuille : la prochaine base "B" qui va recevoir les données de la FICHE DE SAISIES.

Ainsi, toutes les feuilles de saisies journalières du Vendredi 31-7 à Je 3-8 pourraient se limiter ... à une seule feuille (!) qui deviendrait d'ailleurs une simple feuille de Consultation car j'y ajouterais alors une cellule de demande de JOUR de consultation, en plus de celle du LIEU. A la limite, elle serait même inutile car en doublon avec la Feuille "récapitulatif journalier", mais dans le doute (je verrai avec les organisateurs car je ne suis qu'un bénévole qui donne du temps et de l'aide 100 % 'gratos') je garderai donc un exemplaire et j'y mettrai des fonctions rechercheH ou rechercheV : çà devrait être gérable car il n'y a qu'une saisie par Lieu et par Jour, si j'arrive à utiliser le filtrage, à moins que j'utilise dans la feuille de consultation à venir une condition "Jour et Lieu" pour extraire les données de l'unique ligne correspodante dans base "B". Passionnant.

Je suis fier de moi : j'ai réussi à faire paraître les combox, j'ai mis les doigts (à défaut a cambouille : sur le clavier) pour saisir des codes.

Mais je ne danse pas encore ! ce n'est pas encore cela : la FICHE DE SAISIES n'a pas encore ses listes déroulantes...
Je peux QUITTER, mais ça n'enregistre pas dans base "B"...

Pour poids SacVide, j'aimerai aussi pouvoir saisir une autre valeur que 19 ou 1,50 g, la valeur allant alors se place dans la base B, mais ne venant pas dans la liste de nom "SacVidé" qui n'a que 19 et 19,50. Je pense que j'arriverai à trouver cela (ça marchera peut-être déjà).

En tout cas vous me faites faire du chemin, Merci !
L'ancienne BASE (onglet noir) ne serait ainsi plus utilisée, et mon fichier énormément allégé de ... 14 feuilles ! Rien qu'avec votre intervention de tout à l'heure !
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Codification VBA + faire paraître la fiche correspondante en milieu d'écran

Bonsoir Le Forum,
Bonsoir Hulk,
Bonsoir Soenda,

Novice en VBA, j'ai toutefois essayé une composition en accord avec ce que je voulais enregistrer dans la base BD, à partir de mon formulaire de saisie -qui apparaît !-.

Voici mon résultat... qui bloque malheureusement.
Si vous pouviez - Hulk, Soenda, ou bien sûr tout autre 'Impliqué', 'Accro', 'Barbatruc'... - me corriger la syntaxe pour que tout passe, ce serait sympathique.

Bonne soirée

Ce que j'ai saisi :

Sub AfficheUserForm1()
UserForm1.Show
End Sub

'Date en Ctdate
Private Sub Ctdate_Change()
Me.Ctdate.Text = Format(Me.Ctdate, "dd/mm/yy")
End Sub

' ORIGINE Ctorigine
Private Sub Ctorigine_Change()
End Sub

'PoidsBrut C0€
Private Sub C0€_Change()

End Sub

'PoidsBrut C05€
Private Sub C05€_Change()

End Sub

'PoidsBrut C1€
Private Sub C1€_Change()

End Sub

'PoidsBrut C2€
Private Sub C2€_Change()

End Sub

'POIDSVIDE SV0€
Private Sub SV0€€_Change()

End Sub

'POIDSVIDE SV05€
Private Sub SV05€_Change()

End Sub

'POIDSVIDE SV1€
Private Sub SV1€_Change()

End Sub

'POIDSVIDE SV2€
Private Sub SV2€_Change()

End Sub


'TexDate
Private Sub Label1_Click()

End Sub

'TexLieu
Private Sub Label2_Click()

End Sub

'TexGRATUIT
Private Sub Label4_Click()

End Sub

'Tex0,5€
Private Sub Label5_Click()

End Sub

'Tex1€
Private Sub Label6_Click()

End Sub

'Tex2€
Private Sub Label7_Click()

End Sub

'TexPoids Brut (g)
Private Sub Label3_Click()

End Sub

'TexSac Vidé (g)
Private Sub Label9_Click()


End Sub

Dim ligne As Integer

Sub CAnnule_Click()
Unload Me
End Sub

Sub COk_Click()
ligne = Sheets("BD").[B2000].End(xlUp).Row
With Sheets("BD")
.Range("A" & ligne + 1).Value = Me.Ctdate.Value
'.Range("A" & ligne + 1).Value = Format(Range("B" & ligne), "dddd dd mm")
.Range("B" & ligne + 1).Value = Me.Ctorigine.Text
.Range("D" & ligne + 1).Value = Me.C0€.Value
.Range("J" & ligne + 1).Value = Me.C05€.Value
.Range("P" & ligne + 1).Value = Me.C1€.Value
.Range("V" & ligne + 1).Value = Me.C2€.Value
.Range("E" & ligne + 1).Value = Me.SV0€.Value
.Range("K" & ligne + 1).Value = Me. SV 05€.Value
.Range("Q" & ligne + 1).Value = Me. SV 1€.Value
.Range("W" & ligne + 1).Value = Me. SV 2€.Value
End With
Unload Me
End Sub

Private Sub Label1_Click()

End Sub

Private Sub Label2_Click()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub Label4_Click()

End Sub

Private Sub Label5_Click()

End Sub

Private Sub Label6_Click()

End Sub

Private Sub Label7_Click()

End Sub

Private Sub Label9_Click()

End Sub

Private Sub C2€_Change()

End Sub

Private Sub C05€_Change()

End Sub

Private Sub C1€_Change()

End Sub

Private Sub Ctdate_Change()
Me.Ctdate.Text = Format(Me.Ctdate, " dddd dd mm ")
End Sub

Private Sub C0€_Change()

End Sub

Private Sub Ctorigine_Change()

End Sub

Private Sub UserForm_Initialize()

Label1 = [$b$11].Text
Label2 = [$c$11].Text
Label4 = [$d$11].Text
Label5 = [$e$11].Text
Label6 = [$f$11].Text
Label7 = [$g$11].Text
Label7 = [$h$11].Text
Label9 = [$i$11].Text

'Me.Ctdate.Text = Format(Now(), " dddd dd mm ")

End Sub
 

soenda

XLDnaute Accro
Re : Codification VBA + faire paraître la fiche correspondante en milieu d'écran

Bonsoir le fil, Hulk, Webperegrino

J'ai téléchargé le fichier, mais comme c'est un peu touffu (et qu'il se fait tard),
je le reprendrai demain.

A plus
 

Discussions similaires

Réponses
6
Affichages
204
Réponses
29
Affichages
926

Statistiques des forums

Discussions
312 234
Messages
2 086 467
Membres
103 226
dernier inscrit
smail12