Facturier automatique
Re,
Désole. Il y avait une erreur dans le code :
Private Sub ajouter_Click()
Dim DEST As Range
Set DEST = IIf(OF.Range("C22").Value = "", OF.Range("C22"), OF.Range("C22").End(xlDown).Offset(1, 0))
DEST.Value = Me.liste.Value
DEST.Offset(0, 1).Value = Me.TextBox1.Value
DEST.Offset(0, 2).Value = Me.quantite.Value
DEST.Offset(0, 4).Value = Me.Remise.Value
Unload Me
facture.Show
End SubPour le calcul du prix il suffit de refaire ton Userform en incluant le prix unitaire. De la même manière que tu récupères la désignation au changement de la ComboBox tu pourras récupérer le prix unitaire dans la colonne G de la base :
Me.TextBox2.Value = OC.Cells(Me.liste.ListIndex + 8, "G").ValueRefait ton Userform avec toutes les données de la ligne de la facture et je ferai les codes...
ok ça c'est bon j'ai toute modifié et maintenant le PU s'affiche et j'arrive également a l'afficher dans le tableau mais du coup mes lignes ne s'ajouter plus les une au autres
et aussi comment imbriquer le calcul dans l'userform ?
Le fichier...
en fait je viens de voir que cela s'ajoute sur la ligne 46
ci joint le nouveau fichier avec beaucoup moins d'onglet
Merci Thauthème pur le temps que tu m'a accordé,
j'ai enfin réussi a resoudre mon probleme grace a toi et une autre aide sur un autre forum excel
il me reste juste a trouver comment mettre ce que j'inscrit en textbox3 en %
Edit : c'est bon j'ai réussi a le mettre en % juste a rajouter " / 100" apres textbox3
voila le code
Private Sub ajouter_Click()
Dim L As Integer
Dim ligne As Integer
ligne = 22
While Sheets("facture").Cells(ligne, 3).Value <> ""
ligne = ligne + 1
Wend
If MsgBox("Voulez-vous ajouter cet article ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
Sheets("facture").Range("c" & ligne).Value = liste
Sheets("facture").Range("d" & ligne).Value = TextBox1
Sheets("facture").Range("e" & ligne).Value = TextBox2
Sheets("facture").Range("g" & ligne).Value = TextBox3
Else
End If
Unload Me
Facture.Show
End SubRe ThauThème
ton code est génial, j'adopte !
Saurais-tu comment incrémenter un N° de client ou un N° de facture en Alpha numérique ?
c'est a dire :
F00001 pour facture par exemple
C00001 pour les clients
j'y arrive en numérique pas mais en alpha numérique
Sub Incrémenter_Facture()
Dim num As Integer
Range("D45").ClearContents
Range("G17").ClearContents
Range("C22:c43").ClearContents
Range("E22:E43").ClearContents
Range("g22:g43").ClearContents
Range("d22:d43").ClearContents
Range("g6").Select
num = Range("g6").Value
num = num + 1
Range("g6").Value = num
End Subque faut il changer pour pouvoir avoir F00001 qui s'affichera en "G6" au lieu de seulement 1 ?
Re,
Évite toujours, si possible, les Select ou autres Activate inutiles. Ils ne font que ralentir l'exécution du code et sont source de plantage...
Attention ! Si G6 contient déjà un numéro avec F : FXXXXXX, alors
Sub Incrémenter_Facture()
Dim num As Integer
Range("D45").ClearContents
Range("G17").ClearContents
Range("C22:c43").ClearContents
Range("E22:E43").ClearContents
Range("G22:G43").ClearContents
Range("D22:D43").ClearContents
num = CInt(Mid(Range("G6").Value, 2)) + 1
Range("G6").Value = "F" & Format(num, "00000")
End SubParfait !
Quel serait le code pour l'incrémenter un nouveau client ?
Private Sub CommandButton1_Click()
Dim num As Integer
Dim ligne As Integer
ligne = 6
While Sheets("base clients").Cells(ligne, 1).Value <> ""
ligne = ligne + 1
Wend
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
Sheets("base clients").Range("b" & ligne).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
'et à suivre....
Sheets("base clients").Range("C" & ligne).Value = TextBox2
Sheets("base clients").Range("D" & ligne).Value = TextBox3
Sheets("base clients").Range("E" & ligne).Value = TextBox4
Sheets("base clients").Range("F" & ligne).Value = TextBox5
Sheets("base clients").Range("G" & ligne).Value = TextBox6
Sheets("base clients").Range("H" & ligne).Value = TextBox7
Sheets("base clients").Range("I" & ligne).Value = TextBox8
num = CInt(Mid(Range("a").Value, 2)) + 1
Range("a").Value = "C" & Format(num, "00000")
End If
Unload Me
nouveauclient.Show
End Subla Colonne A est celle ou il doit y avoir le n° client
Re,
Essaie comme ça :
Private Sub CommandButton1_Click()
Dim OB As Worksheet 'déclare la variable OB (Onglet Base clients)
Dim Num As Integer 'déclare la variable num (Numéro)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim J As Byte 'déclare la variable J (incrément)
Set OB = Worksheets("base clients") 'définit l'onglet OB
DL = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A
Num = CInt(Mid(OB.Cells(DL, "A").Value, 2)) + 1 'incrémente le dernier numéro utilisé
DL = DL + 1 'incrémente DL de une ligne (donc DL devient la première ligne vide de la colonne A
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
OB.Cells(DL, 1).Value = "C" & Format(Num, "00000") 'renvoie le numéro Num dans la colonne A
For J = 2 To 9 'puisque les TextBoxes sont parfaitement ordonnées par rapport aux colonnes on peut boucler
OB.Cells(DL, J).Value = Me.Controls("TextBox" & J - 1).Value 'renvoie dans la cellule ligne DL colonne J la valeur de la TextBoxJ
Next J 'prochaoine colonne de la boucle
End If 'fin de la condition
Unload Me 'vide et ferme l'UserForm en cours
nouveauclient.Show 'ouvre l'UserForm nouveauclient
End SubUn conseil : Quand tu nommes tes variables, utilise au moins une Majuscule dans le nom. Pourquoi ? Parce quand tu codes, tu écris les variables en minuscule, l'éditeur de codes les remplace automatiquement par leur vrai nom (avec la ou les majuscules). Ce système permet de visualiser plus rapidement une faute de frappe qui engendrera une erreur. Par exemple du déclare la variable Num, dans une ligne tu écris nam. nam va rester... Si tu écris num, num va se tranformer en Num dès que tu auras validé la ligne de code. Ça aide à repérer la variable erronée ou le contrôle d'ailleurs (idem pour les contrôles remise, quantité).
Ce n'est qu'un conseil tu en fais ce que tu veux...
Merci encore ThauThème,
Grâce a ton aide il est complétement Opérationnel je vais pouvoir gerer mon activité de VDI comme il se doit