Saisi d'un userform vers feuille avec calcul

Jason1826

XLDnaute Junior
Bonjour ,

après avoir été aidé sur plusieurs difficultés via ce Forum incroyable, je viens ici exposer quelques difficultés supplémentaire que je pense pourra surement aider d'autre personnes,

Ayant avancé dans mon fichier ci-joint, j'aimerai que l'on ajoute :

-Lorsque que l' on click sur le bouton achat ou vente , L'heure se mette dans la colonne HEURE
- si la case Globex est coché que cela écrive "GLOBEX" sinon rien dans le colonne GLOBEX
- dans la colonne CUMUL A que cela additionne la colonne ACHAT
-dans la colonne CUMUL V que cela additionne la colonne VENTE
-dans la colonne POSITION NET que cela soustrait la colonne ACHAT - la colonne VENTE
- dans la colonne COURTAGE que ce la multiplie le nombre d'achat ou de vente par le chiffre correspondant au compte de la feuille "code gérant"

merci beaucoup pour vos aides précieuses :)
 

Pièces jointes

  • Copie de Jason_v02.zip
    161.9 KB · Affichages: 64
  • Copie de Jason_v02.zip
    161.9 KB · Affichages: 55
  • Copie de Jason_v02.zip
    161.9 KB · Affichages: 71
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : Saisi d'un userform vers feuille avec calcul

cette instruction :
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("D" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("D" & ligne).Value

doit être sur 2 lignes : la première s'arrêtant après Else _

Est-ce bien le cas après recopie ?
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Merci beacoup c'est dU beau boulot, si je peu me permettre d'une derniere chose, c'est lors de la creation d'une nouvelle feuille avec le userform2, peu tu me donner la formul pour que la nouvlle feuille est le meme ligne 2
DATE HEURE ETC....
 

CHALET53

XLDnaute Barbatruc
Re : Saisi d'un userform vers feuille avec calcul

Bonjour,

Après avoir copier l'entête de la feuille 30669 (les deux lignes) sur Feuil1 (qui servira de modèle) tu ajoutes le code suivant dans l'userform2 (partie en gras):

Private Sub CommandButton1_Click()

ligne = WorksheetFunction.CountA(Sheets("code gerant").Columns("A:A")) + 1
Sheets("code gerant").Range("A" & ligne).Value = TextBox1.Value
Sheets("code gerant").Range("B" & ligne).Value = TextBox2.Value
Sheets("code gerant").Range("D" & ligne).Value = TextBox3.Value
Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernier
ActiveSheet.Name = TextBox1.Value 'renomme l'onglet
Sheets("Feuil1").Range("A1:M2").Copy
Range("A1").Select
ActiveSheet.Paste
Range("C1").Value = TextBox1.Value

Unload UserForm2

End Sub
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Bonjour,

Après avoir copier l'entête de la feuille 30669 (les deux lignes) sur Feuil1 (qui servira de modèle) tu ajoutes le code suivant dans l'userform2 (partie en gras):

Private Sub CommandButton1_Click()

ligne = WorksheetFunction.CountA(Sheets("code gerant").Columns("A:A")) + 1
Sheets("code gerant").Range("A" & ligne).Value = TextBox1.Value
Sheets("code gerant").Range("B" & ligne).Value = TextBox2.Value
Sheets("code gerant").Range("D" & ligne).Value = TextBox3.Value
Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernier
ActiveSheet.Name = TextBox1.Value 'renomme l'onglet
Sheets("Feuil1").Range("A1:M2").Copy
Range("A1").Select
ActiveSheet.Paste
Range("C1").Value = TextBox1.Value

Unload UserForm2

End Sub

impec!! code propre et simple!!! BRAVO
je viens juste de remarquer que le courtage (colonne K) ne fonctionne pas pour les nouveau onglet cree je ne sais pas pourquoi :-\
Je pense que c'est la plage cela s'arret a A12 JE VAIS REGLER CELA C BON :)
 
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : Saisi d'un userform vers feuille avec calcul

Bonjour,

J'ai fait un test de création de compte
j'ai testé un achat : la colonne K de la feuille correspondant au compte est bien rempli (si la colonne D de la feuille Code gérant est renseignée)

a+
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Bonjour,

J'ai fait un test de création de compte
j'ai testé un achat : la colonne K de la feuille correspondant au compte est bien rempli (si la colonne D de la feuille Code gérant est renseignée)

a+

un peu honte de te demandé cela car tu as deja fait beaucoup !
Est-il compliqué d'avoir une ligne en gras qui s ajoute tjs a une ligne ou 2 de la derniere ligne crée de la feuille avec la somme de la colonne D , la colonne G + l'addition des 2 , le dernier chiffre de la colonne J et la somme de la colonne K.

merci de ta reposne !
 

CHALET53

XLDnaute Barbatruc
Re : Saisi d'un userform vers feuille avec calcul

Re,

Si je comprends bien : tu veux mentionner les totaux ci-dessus sur la dernière ligne (ligne que l'on décale d'une ligne au fur et à mesure que l'on rajoute une ligne d'information et bien sûr en modifiant la formule pour y intégrer cette nouvelle ligne)
C'est envisageable
Mai pourquoi ce que je te proposais dans le post #6 ne te convient pas . Avantage de mettre tes totaux en ligne 1 : dès lors que tu as défini la cellule D1 comme étant le total de la colonne D (=SOMME(D3:D10000), à chaque rajout de ligne, celle-ci est automatiquement intégrée dans ton total.

Je n'ai peut-être pas compris la question

a+

les ":" semblent remplacés par un symbole
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Re,

Si je comprends bien : tu veux mentionner les totaux ci-dessus sur la dernière ligne (ligne que l'on décale d'une ligne au fur et à mesure que l'on rajoute une ligne d'information et bien sûr en modifiant la formule pour y intégrer cette nouvelle ligne)
C'est envisageable
Mai pourquoi ce que je te proposais dans le post #6 ne te convient pas . Avantage de mettre tes totaux en ligne 1 : dès lors que tu as défini la cellule D1 comme étant le total de la colonne D (=SOMME(D3:D10000), à chaque rajout de ligne, celle-ci est automatiquement intégrée dans ton total.

Je n'ai peut-être pas compris la question

a+

les ":" semblent remplacés par un symbole


Oui je vois ce que tu veux dire, mais je prefère une ligne en dessous qui s'ajoute comme tu la decris avec un espace deux ou trois ligne.
 

CHALET53

XLDnaute Barbatruc
Re : Saisi d'un userform vers feuille avec calcul

Re,

Tu remplaces le module : Private Sub Achat_click par celui-ci :
Par contre, je ne sais pas où tu veux mettre le total de la colonne D et G

Private Sub ACHAT_Click()
adresse = ""
ligne = WorksheetFunction.CountA(Sheets(Me.COMPTE.Value).Columns("A:A")) + 1

Rows(ligne + 1).Select
Selection.Font.Bold = False
Rows(ligne + 1).ClearContents

Sheets(Me.COMPTE.Value).Range("A" & ligne).Value = CDate(Date)
Sheets(Me.COMPTE.Value).Range("D" & ligne).Value = QUANTITES.Value
Sheets(Me.COMPTE.Value).Range("E" & ligne).Value = COURS.Value
Sheets(Me.COMPTE.Value).Range("B" & ligne).Value = Format(Time, "h:mm:ss")
If GLOBEX = True Then Sheets(Me.COMPTE.Value).Range("C" & ligne).Value = "GLOBEX"
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("D" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("D" & ligne).Value
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("I" & ligne).Value = Sheets(Me.COMPTE.Value).Range("G" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("I" & ligne).Value = Sheets(Me.COMPTE.Value).Range("I" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("G" & ligne).Value
Sheets(Me.COMPTE.Value).Range("J" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne).Value - Sheets(Me.COMPTE.Value).Range("I" & ligne).Value
' recherche dans la feuille "code gerant"
recherche = Range("C1").Value
Set Plage = Sheets("code Gerant").Range("a2:a12") ' Cells(Rows.Count, "a").End(xlUp))
With Plage
Set c = .Find(recherche)
If Not c Is Nothing Then
adresse = c.Row
End If
End With
If adresse = "" Then Exit Sub
nb = Sheets("code gerant").Range("D" & adresse).Value
If Sheets(Me.COMPTE.Value).Range("D" & ligne).Value <> "" Then
Sheets(Me.COMPTE.Value).Range("K" & ligne).Value = nb * Sheets(Me.COMPTE.Value).Range("D" & ligne).Value
End If
If Sheets(Me.COMPTE.Value).Range("G" & ligne).Value <> "" Then
Sheets(Me.COMPTE.Value).Range("K" & ligne).Value = nb * Sheets(Me.COMPTE.Value).Range("G" & ligne).Value
End If
' Total des colonnes
'Stop

ligne = ligne + 2
'a = "=SUM(F3:F" & ligne - 2 & ")"
Range("D" & ligne) = "=SUM(D3:D" & ligne - 2 & ")"
Range("G" & ligne) = "=SUM(G3:G" & ligne - 2 & ")"
Range("K" & ligne) = "=SUM(K3:K" & ligne - 2 & ")"

Range("J" & ligne) = Range("J" & ligne - 2)

Rows(ligne).Select
Selection.Font.Bold = True
Range("A" & ligne).Select


End Sub
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Re,

Tu remplaces le module : Private Sub Achat_click par celui-ci :
Par contre, je ne sais pas où tu veux mettre le total de la colonne D et G

Private Sub ACHAT_Click()
adresse = ""
ligne = WorksheetFunction.CountA(Sheets(Me.COMPTE.Value).Columns("A:A")) + 1

Rows(ligne + 1).Select
Selection.Font.Bold = False
Rows(ligne + 1).ClearContents

Sheets(Me.COMPTE.Value).Range("A" & ligne).Value = CDate(Date)
Sheets(Me.COMPTE.Value).Range("D" & ligne).Value = QUANTITES.Value
Sheets(Me.COMPTE.Value).Range("E" & ligne).Value = COURS.Value
Sheets(Me.COMPTE.Value).Range("B" & ligne).Value = Format(Time, "h:mm:ss")
If GLOBEX = True Then Sheets(Me.COMPTE.Value).Range("C" & ligne).Value = "GLOBEX"
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("D" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("D" & ligne).Value
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("I" & ligne).Value = Sheets(Me.COMPTE.Value).Range("G" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("I" & ligne).Value = Sheets(Me.COMPTE.Value).Range("I" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("G" & ligne).Value
Sheets(Me.COMPTE.Value).Range("J" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne).Value - Sheets(Me.COMPTE.Value).Range("I" & ligne).Value
' recherche dans la feuille "code gerant"
recherche = Range("C1").Value
Set Plage = Sheets("code Gerant").Range("a2:a12") ' Cells(Rows.Count, "a").End(xlUp))
With Plage
Set c = .Find(recherche)
If Not c Is Nothing Then
adresse = c.Row
End If
End With
If adresse = "" Then Exit Sub
nb = Sheets("code gerant").Range("D" & adresse).Value
If Sheets(Me.COMPTE.Value).Range("D" & ligne).Value <> "" Then
Sheets(Me.COMPTE.Value).Range("K" & ligne).Value = nb * Sheets(Me.COMPTE.Value).Range("D" & ligne).Value
End If
If Sheets(Me.COMPTE.Value).Range("G" & ligne).Value <> "" Then
Sheets(Me.COMPTE.Value).Range("K" & ligne).Value = nb * Sheets(Me.COMPTE.Value).Range("G" & ligne).Value
End If
' Total des colonnes
'Stop

ligne = ligne + 2
'a = "=SUM(F3:F" & ligne - 2 & ")"
Range("D" & ligne) = "=SUM(D3:D" & ligne - 2 & ")"
Range("G" & ligne) = "=SUM(G3:G" & ligne - 2 & ")"
Range("K" & ligne) = "=SUM(K3:K" & ligne - 2 & ")"

Range("J" & ligne) = Range("J" & ligne - 2)

Rows(ligne).Select
Selection.Font.Bold = True
Range("A" & ligne).Select


End Sub

Ca fonctionne !
Où je peux ecrire dans le code pour que TOTAL sois ecrit en gras au debut de la ligne , colonne C par exemple.

PS: je voudrai que dans le userform1 où il y à la liste déroulant des comptes cela affiche seulement les feuilles avec des chifres et non des lettre , pour empecher d'afficher "code gerant" etc..

MERCI ENORMEMENT POUR CES CODES C'EST GEANT UN TRES GRAND MERCI !!! cela m'apprends en meme temps !!
 

CHALET53

XLDnaute Barbatruc
Re : Saisi d'un userform vers feuille avec calcul

Re,
en bas de la procédure derrière : ligne=ligne+2
surtout pas en colonne A (ça fausserait le calcul de la dernière ligne d'informations)

Deuxième point :
Dans la procédure suivante (la partie en gras)

Private Sub UserForm_Initialize() 'à l'initialisation de l'Userform
Dim o As Object 'déclare la variable o (Onglet)
For Each o In ActiveWorkbook.Sheets 'boucle sur tous les onglets du classeur
a = o.Name
If o.Name <> "Feuil1" And o.Name <> "code gerant" Then Me.COMPTE.AddItem o.Name 'ajoute le nom de l'onglet à la combobox "COMPTE" si différent de "Feuil1"
Next o 'prochain onglet de la boucle
Me.COMPTE.ListIndex = 0 'affiche le premier de la liste (lance la procédure Change de la combobox "COMPTE")
End Sub
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Re,

Tu remplaces le module : Private Sub Achat_click par celui-ci :
Par contre, je ne sais pas où tu veux mettre le total de la colonne D et G

Private Sub ACHAT_Click()
adresse = ""
ligne = WorksheetFunction.CountA(Sheets(Me.COMPTE.Value).Columns("A:A")) + 1

Rows(ligne + 1).Select
Selection.Font.Bold = False
Rows(ligne + 1).ClearContents

Sheets(Me.COMPTE.Value).Range("A" & ligne).Value = CDate(Date)
Sheets(Me.COMPTE.Value).Range("D" & ligne).Value = QUANTITES.Value
Sheets(Me.COMPTE.Value).Range("E" & ligne).Value = COURS.Value
Sheets(Me.COMPTE.Value).Range("B" & ligne).Value = Format(Time, "h:mm:ss")
If GLOBEX = True Then Sheets(Me.COMPTE.Value).Range("C" & ligne).Value = "GLOBEX"
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("D" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("F" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("D" & ligne).Value
If ligne = 3 Then Sheets(Me.COMPTE.Value).Range("I" & ligne).Value = Sheets(Me.COMPTE.Value).Range("G" & ligne).Value Else _
Sheets(Me.COMPTE.Value).Range("I" & ligne).Value = Sheets(Me.COMPTE.Value).Range("I" & ligne - 1).Value + Sheets(Me.COMPTE.Value).Range("G" & ligne).Value
Sheets(Me.COMPTE.Value).Range("J" & ligne).Value = Sheets(Me.COMPTE.Value).Range("F" & ligne).Value - Sheets(Me.COMPTE.Value).Range("I" & ligne).Value
' recherche dans la feuille "code gerant"
recherche = Range("C1").Value
Set Plage = Sheets("code Gerant").Range("a2:a12") ' Cells(Rows.Count, "a").End(xlUp))
With Plage
Set c = .Find(recherche)
If Not c Is Nothing Then
adresse = c.Row
End If
End With
If adresse = "" Then Exit Sub
nb = Sheets("code gerant").Range("D" & adresse).Value
If Sheets(Me.COMPTE.Value).Range("D" & ligne).Value <> "" Then
Sheets(Me.COMPTE.Value).Range("K" & ligne).Value = nb * Sheets(Me.COMPTE.Value).Range("D" & ligne).Value
End If
If Sheets(Me.COMPTE.Value).Range("G" & ligne).Value <> "" Then
Sheets(Me.COMPTE.Value).Range("K" & ligne).Value = nb * Sheets(Me.COMPTE.Value).Range("G" & ligne).Value
End If
' Total des colonnes
'Stop

ligne = ligne + 2
'a = "=SUM(F3:F" & ligne - 2 & ")"
Range("D" & ligne) = "=SUM(D3:D" & ligne - 2 & ")"
Range("G" & ligne) = "=SUM(G3:G" & ligne - 2 & ")"
Range("K" & ligne) = "=SUM(K3:K" & ligne - 2 & ")"

Range("J" & ligne) = Range("J" & ligne - 2)

Rows(ligne).Select
Selection.Font.Bold = True
Range("A" & ligne).Select


End Sub

pour le total D+G SOUS LA COlonne I
 

Jason1826

XLDnaute Junior
Re : Saisi d'un userform vers feuille avec calcul

Re,
en bas de la procédure derrière : ligne=ligne+2
surtout pas en colonne A (ça fausserait le calcul de la dernière ligne d'informations)

Deuxième point :
Dans la procédure suivante (la partie en gras)

Private Sub UserForm_Initialize() 'à l'initialisation de l'Userform
Dim o As Object 'déclare la variable o (Onglet)
For Each o In ActiveWorkbook.Sheets 'boucle sur tous les onglets du classeur
a = o.Name
If o.Name <> "Feuil1" And o.Name <> "code gerant" Then Me.COMPTE.AddItem o.Name 'ajoute le nom de l'onglet à la combobox "COMPTE" si différent de "Feuil1"
Next o 'prochain onglet de la boucle
Me.COMPTE.ListIndex = 0 'affiche le premier de la liste (lance la procédure Change de la combobox "COMPTE")
End Sub

Je n'ai pas compris le 1er point.
 

Discussions similaires

Réponses
3
Affichages
535

Statistiques des forums

Discussions
312 070
Messages
2 085 043
Membres
102 766
dernier inscrit
Awiix