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
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Bonjour jdilo et bienvenue sur XLD :)

Est-tu sûr d'avoir mis le bon fichier? Moi dans les deux feuilles (stock initial et final) je ne vois pas de colonne fournisseur. Montre nous le résultat que tu veux obtenir.
 

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:

Lone-wolf

XLDnaute Barbatruc
Re

@jdilo: est-ce qu'il y a aussi les quantités ou pas ?. Tu fais une copie du fichier original en le renommant et tu éfface les données.

Edit: bonjour Jean Marie :)
 
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

@Staple1600

Il faut regarder le classeur. D'après le choix de la 1ère combobox qui a le nom des feuilles. Celle-ci doit être activée et ensuite on inscrit les données.
 

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
 

Fichiers joints

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.
 

Fichiers joints

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
 

Staple1600

XLDnaute Barbatruc
Re,

@Lone-wolf
Le code initial était le sien
(Je l'ai remaniée une première fois -> message#4)
Puis j'en ensuite remanié le code que j'avais remanié et l'ai posté dans le message#13)

(PS:pas trace de Find dans mon code);)
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas