Crééer deux variables (de calcul) avec du vb ou du sql
lilouhama
Messages postés32Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention11 septembre 2008
-
18 août 2008 à 13:12
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 2012
-
18 août 2008 à 19:02
bonjour,
je fais appel à vous car débutante dans le vb plusieurs jours q j patoge
je dispose d'une table avec plusieurs variables de ce type et je dois créér uun formulaire où il suffit de sélectionner un plusieurs compte général et obtenir le "solde débit" le "solde crédit " et par la suite créer une variable "différence" qui permet de faire la différence (solde credit-solde débit)entre les valeurs (ici 1 ou plusieurs compte général)sélectionnées
donc voici le formulaire créé de type quand on clique sur afficher on obtient un formulaire avec les comptes généraux sélectionner ac leur soldes débit et crédit et j'aimerai qu'en cliquant sur comparer on puisse faire la différence de (solde débit-solde crédit) dans une variable différence et en cliquant sur variation pourcentage on obtient la variation de solde entre les comptes généraux sélectionnés en %<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit">
voici mon code vb qui m'a permis de faire les sélections
<v:shapetype stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><o:lock aspectratio="t" v:ext="edit">Private Sub Commande29_Click()
Dim varI As Variant
Dim strFiltre As String
strFiltre = ""
If Me.Liste1.ItemsSelected.Count = 0 Then
MsgBox "Aucun compte général n'a été sélectionné"
Else
For Each varI In Me!Liste1.ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[compte général]='" & _
Me!Liste1.Column(1, varI) & "'"
Next varI
DoCmd.OpenForm "balance par compte général", acPreview, , strFiltre
'DoCmd.OpenReport "balance par compte général", acPreview, , strFiltre
End If</o:lock></v:shapetype>
<v:shapetype stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><o:lock aspectratio="t" v:ext="edit">End Sub
j'aimerai donc introduire un code qui me permet de crééer la variable "différence" et la "variable variation en %" selon les comptes généraux sélectionnés dans mon formulaire
merci pour votre aide car c'est tres urgent
</o:lock></v:shapetype>
A voir également:
Crééer deux variables (de calcul) avec du vb ou du sql
lilouhama
Messages postés32Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention11 septembre 2008 18 août 2008 à 14:42
en fait j'aimerai introduire ces variables dans le formulaire que j'obtients suite au code vb (le formulaire "balance par compte général)
en cliquant sur le bouton afficher, j'obtiens donc le formulaire affichant seulement les comptes généraux sélectionnés avec leur solde crédit et leur solde débit et la "différence des soldes" (sole credit-solde débit)
et moi j'aimerai avoir un code à insérer dans le bouton 'comparer' qui me créée la variable "comparaison" et me fait le calcul de différence "des différences des soldes" entre les comptes généraux sélectionnés
table de départ
<caption>?</caption>----
Compte général |SOLDE DEBIT |SOLDE CREDIT |différence des soldes |----
10211000, 0, 56654583,92, -56654583,92
, ----
10221000, 0, 1381876,37, -1381876,37
, ----
10231000, 0, 875578,72, -875578,72
, <tfoot></tfoot>
et donc ce que je veux par exmple obtenir
je sélectionne les comptes 10221000 et 10231000 et je veux obtenir
<caption>?</caption>----
Compte général |SOLDE DEBIT |SOLDE CREDIT |différence des soldes |----
10221000, 0, 1381876,37, -1381876,37
, ----
10231000, 0, 875578,72, -875578,72
, <tfoot></tfoot>
ainsi que deux autres cases où on retrouvera:
différences entre le compte 10221000 et 10231000: -506297,65 -> (1381876.37-875578.72)
variation (augmentaion ou dimution en pourcentage) ce qui se traduirait par une diminution de 157% environ du compte 10221000 au compte 10231000
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 18 août 2008 à 15:45
En faisant du VB.
Dans ta procédure
Dim T() As Variant
Dim NbCmpte As Integer
NbCompte=<nombre de ligne de ta table départ>
Redim Preserve T(NbCompte,4)
Maintenant tu peux t' en servir.
N' oublies pas qu' avant, tu dois avoir une table avec
4 champs.
Une fois remplis, tu transposes ton tableau dans cette table.Et c' est celle-là qui sera la base de ton raport.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
lilouhama
Messages postés32Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention11 septembre 2008 18 août 2008 à 16:44
j'ai esssayé mais ça ne fonctionne pas. j'ai d'abord créer une table T avec les 4 champs sous access
mais comment transposer mon tableau dans la table
sub command_click26()
Dim T() As Variant
Dim NbCmpte As Integer
NbCompte=<nombre de ligne de ta table départ>
Redim Preserve T(NbCompte,4)
For i=1 To UBound(T)-1
'différence
T(i+1,3)=T(i,2)-T(i+1,2)
'variation (pas sûr de la formule !)
T(i+1,4)=(T(i+1,3)*T(i,2))100
Next
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 18 août 2008 à 19:02
Qu' est-ce qui ne marche pas ?
Ou est l' erreur ?
Pour recopier ton tableau T dans ta table T, tu définis un recordset que tu lies à ta table.
Si tu ne sais pas comment faire, fais une recherche dans
le forum sur le sujet.Il y a plusieurs exemples.
Dim rs As RecordSet
Set rs=CurrentDB.OpenRecordSet("T",dbOpenDynamic)
Avant tu vides ta table
CurrentDB.Execute "DELETE * FROM T;"
Ensuite,
Dim i As Integer
For i=1 To NbCompte
rs.AddNew
rs.Fields(0)=T(i,1)
rs.Fields(1)=T(i,2)
rs.Fields(2)=T(i,3)
rs.Fields(3)=T(i,4)
rs.Update
Next