Crééer deux variables (de calcul) avec du vb ou du sql

Signaler
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
-
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

<caption>balance</caption>----
Période |Compte général |SOLDE DEBIT |SOLDE CREDIT |----
1, 10211000, 0, 56654583,92, ----
2, 10221000, 0, 1381876,37, ----
3, 10231000, 0, 875578,72, ----
4, 10271000, 0, 9447882,12, ----
5, 10350000, 0, 31930336,8, ----
6, 11000000, 0, 448729279,72, <tfoot></tfoot>

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

ption Compare Database
 Option Explicit</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">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>

10 réponses

Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

allez une petite aide svp
svp
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonjour,
Pas très bien compris ta question.
Tu veux introduire tes variables ou ?
Dans le rapport ?
Dans ce cas insères une formule.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

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

merci pour ton aide
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

allez une petite aide je patoge vraiment
svp
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Utilises une variable tableau de type
T(NbDeCompte,4) et remplis le


1° compte
T(1,1) renvoie le numéro du compte
T(1,2) la différence des soldes


2° compte
T(2,1) renvoie le numéro du compte
T(2,2) la différence des soldes


etc
le troisième et le quatrièmeélément seront réservés pour le résultat du calcul.


Dans une boucle, tu parcouras ton tableauet tu fais la différence et le rapport entre un élément et son précédent (ou son suivant selon ton chaix)


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





<hr />


... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

et comment je fais pour crééer une variable tableau j'ai jamias fais ça

je la créée en faisant du vb ?
ou as tu un début de code pour que je puisse la crééer
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
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.
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

merci beaucoup je vais essayer
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

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

end sub

le code est il faux?
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
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


                
<hr />