XL 2016 [RESOLU] Aide sur UserForm

Jdilo64

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous aujourd'hui car je me lance à apprendre le VBA et mon défi du moment est l'USERFORM.

J'ai réussi à faire un formulaire basique qui me remplis les cellules telles que :
A1 = ComboBox1 = Nom du rayon
B1 = ComboBox2 = Nom du Fournisseur
C1 = TextBox1 = Montant de la facture
D1 = TextBox3 = Commentaire
E1 = TextBox4 = Date

Maintenant j'aimerais le faire autrement, dans mon tableau mensuel d'achats j'aimerais que le montant de la facture (TextBox1) se remplisse dans la feuille du nom du rayon "ComboBox1" dans la colonne fournisseur "ComboBox2" et la ligne de la date "TextBox4".

Après plusieurs recherches je ne trouve pas de pistes ...

Je vous joint mon code et mon classeur pour les gens qui voudront bien me dédié un petit moment pour m'aider dont je remercie par avance.

VB:
Private Sub CommandButton1_Click()
If Controls("ComboBox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer le rayon !", vbExclamation, _
"ERREUR ... le rayon SVP !"
Controls("ComboBox1").SetFocus
If Controls("ComboBox2") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer le fournisseur !", vbExclamation, _
"ERREUR ... le fournisseur SVP !"
Controls("ComboBox2").SetFocus
Exit Sub
End If
End If
[A1] = UserForm1.ComboBox1
[B1] = UserForm1.ComboBox2
[C1] = UserForm1.TextBox1
[D1] = UserForm1.TextBox3
[E1] = UserForm1.TextBox4

Unload UserForm1
End Sub
 

Pièces jointes

  • TEST ACHATS.xlsm
    43.5 KB · Affichages: 34

Jdilo64

XLDnaute Nouveau
Salut, tout d’abord merci beaucoup de ton accueil également de ta réponse :)
Le fichier est le bon mais je me rends compte que les cases vides en dessous des colonnes stocks initial et stock final sont censé être FRS1 FRS2 etc ...
Ce classeur est une copie de l’original avec les infos privés effacées j’ai probablement oublié de remplir ces cases, je suis actuellement sur mobile donc compliqué de ré upload dsl :(

Le rendu final doit intégrer le montant de la facture saisie dans le userform dans la feuille correspondante dans la colonne correspondante au fournisseur (FRS1, FRS2 etc...) et la ligne correspondante à la date du userform également.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@Jdilo64
Je me suis permis un petit allégement de ton code
(J'ai aussi modifié pour :
1) que les données soient inscrites dans la première ligne vide
2) que la date du jour s'affiche dans le TextBox4)
VB:
Private Sub CommandButton1_Click()
If Me.ComboBox1 = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer le rayon !", vbExclamation, _
"ERREUR ... le rayon SVP !"
Me.ComboBox1.SetFocus
If Me.ComboBox2 = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer le fournisseur !", vbExclamation, _
"ERREUR ... le fournisseur SVP !"
Me.ComboBox2.SetFocus
Exit Sub
End If
End If
With Me
   Cells(Rows.Count, 1).End(3)(2).Resize(, 5) = _
    Array(.ComboBox1, .ComboBox2, .TextBox1, .TextBox3, .TextBox4)
End With
Unload UserForm1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Me.TextBox4 = Date
End Sub

EDITION: Re, Lone-Wolf
 
Dernière édition:

Jdilo64

XLDnaute Nouveau
Bonjour Staple et merci pour ton aide ! Je regarde ça des que je retourne au bureau en milieu d’après-midi mais je ne comprends pas quand tu dis que les données sont inscrites dans la première cellule vide ?
Mon but étant que les données s’inscrivent dans la ligne correspondant à la date de la TextBox4 !

Lone-wolf, je ne vois pas de quelles quantités tu parle ? Je ne saisie pas de quantités dans mon classeur non seulement des montants de facture :)
 

Staple1600

XLDnaute Barbatruc
Re


@Jdilo64
Avec ton code initial, les données s'inscrivaient toujours en A1:E1 non ?
[A1] = UserForm1.ComboBox1
[B1] = UserForm1.ComboBox2
[C1] = UserForm1.TextBox1
[D1] = UserForm1.TextBox3
[E1] = UserForm1.TextBox4

La modification que j'ai faite fait ceci:
Au premier clic, sur CommandButton1, les données vont sur la ligne 2
(j'ai présumé que la ligne 1= ligne d'entête)
Au second clic, les données iront en ligne 3
Aau troisième clic, les données iront en ligne 4
etc...
 

Lone-wolf

XLDnaute Barbatruc
Re

@Jdilo64 : d'après l'mage, il y a 9 colonnes(achats) à remplir mais que 7 fournisseurs. Chercher l'erreur o_O
De plus, si c'est l'original, tu peux me dire où sont inscrit les fournisseurs?? :eek:

feuille.gif
 

Jdilo64

XLDnaute Nouveau
Oui il y a 9 colonnes si jamais je fais rentrer de nouveaux fournisseurs.
Au contraire c’est une copie de l’original où j’ai enlever le vrai nom des fournisseurs, le nom du magasin etc...
Effectivement au début ça faisais bêtement A1:E1 mais comme je disais c’était pour me faire la main maintenant je voudrais que sa se mettent dans la bonne cellule :)
Dans l feuille « combobox1 » , la colonne « combobox2 » (où j’ai oublié de nommer les colonnes FRS1, FRS2 etc) sur la ligne correspondant à la date « textbox4 » !
Je sais pas si je suis très clair :(
 

Jdilo64

XLDnaute Nouveau
Voilà je ré-up avec les noms de fournisseurs dans les colonnes :)

Pour récap d'après le formulaire :
upload_2018-5-12_16-17-0.png


Pour récap j'aimerais que la cellule qui se remplisse grâce au formulaire soit telle que :
Le rayon que je choisis = le nom de la feuille où se trouve la cellule à remplir
Le fournisseur = le nom de la colonne où se trouve la cellule à remplir
La date = La ligne où se trouve la cellule à remplir
Le montant = la donnée à transcrire dans la cellule
Le commentaire = Insertion d'un commentaire (facultatif)

En image :

upload_2018-5-12_16-21-40.png


Ce formulaire génére ceci :

upload_2018-5-12_16-26-5.png
 

Pièces jointes

  • TEST ACHATS.xlsm
    45.2 KB · Affichages: 21

Lone-wolf

XLDnaute Barbatruc
Re

@Jdilo64

Voilà qui est fait. Pour les colonnes et cellules avec DIV, j'ai rajouter la fonction SIERREUR(); j'ai aussi figé les volets, comme ça tu peux faire défiler les feuilles en ayant toujours les entêtes. Clique sur Fermer, une fois toutes les données inscrites (donc, pas 1 mais plusieurs fournisseurs), sinon tu est obligé à chaque fois d'afficher le formulaire. J'éspère que ça conviendra.

NOTE: pour la date, inscrit la date complète et non comme dans l'image, sinon erreur.
 

Pièces jointes

  • TEST ACHATS-VF.xlsm
    48.4 KB · Affichages: 32
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re,

@Jdilo64
Ci-dessous ma version remaniée de ton code
VB:
Private Sub CommandButton1_Click()
Dim Lig&, Col&, f As Worksheet, Z, plg As Range
If ComboBox1 = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer le rayon !", vbExclamation, _
"ERREUR ... le rayon SVP !"
ComboBox1.SetFocus
If ComboBox2 = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer le fournisseur !", vbExclamation, _
"ERREUR ... le fournisseur SVP !"
ComboBox2.SetFocus
Exit Sub
End If
End If
Set f = Sheets(ComboBox1.Value)
Set plg = f.Range("B9:B47")
Z = Application.Match(CLng(CDate(TextBox4)), plg, 0)
Lig = Z + 8
Col = ComboBox2.ListIndex + 9
'pour test
'MsgBox f.Cells(Lig, Col).Address
f.Cells(Lig, Col) = TextBox1
Unload Me
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Me.TextBox4 = Date
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL