[Catégorie modifiée VB6 -> VBA] Calcul somme à partir d'une base de données

Signaler
Messages postés
20
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
1 février 2012
-
Messages postés
20
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
1 février 2012
-
Bonjour,

Dans un dossier j'ai :

J'ai une feuille "base" comprenant une colonne quantité de produit A (valeur numérique), une colonne pays B("FRA","GBR"...) et une dernière colonne attestation C (O, N).
J'ai une autre feuille dans lequel je dois indiquer le résultat.

Exemple :
La macro rechercherait dans la "base" toutes les cellules dont la valeur est "FRA" ET "O", calculerait la somme des quantité de produits indiquée dans la colonne A et collerait le résultat dans une cellule spécifique de la seconde feuille.

Pourriez-vous m'aiguiller svp?

11 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
340
Bonjour,

Si la colonne qui contient FRA et O s'appelle variable,

La requête doit être un truc du genre :

SELECT SUM(colonneA) GROUP BY variable WHERE variable="FRA" OR variable="O"
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Salut

Sulivan : Mets toi dans la tête que VBA n'est pas du VB6.
Tu parles de colonnes : Serais-tu sous Excel ?
Une info importante, non ?

La réponse de Julien considère que tu travailles avec une base de données, comme le dit le titre de ta question, donc que tu sais accéder aux données avec les objets ADODB par exemple.
Là aussi, ça manque de précision.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Dans la requète de Silvian, le GROUP BY n'a pas d'intérêt ici puisqu'on filtre déjà le pays, et il faut remplacer OR par AND :
SELECT SUM(colonneQuantitéProduit_A)
WHERE colonnePays_B = "FRA"
AND colonneAttestation_C = "O"
Bien sûr, il faut remplacer les noms des colonnes par les vrais noms
Messages postés
20
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
1 février 2012

Désolé, je me suis pas très bien expliqué... je ne suis loin d'être un expert en VBA et ca fait longtemps que je n'y ai pas touché.
Je ne connais pas les objets ADODB...

Bref... Je vais essayer d'être plus explicit :

Il s'agit bien d'Excel.

Mon fichier est composé de 2 feuilles : une contient la base (que j'appelle "base" ) les colonnes sont : "Quantité"/"Pays"/"Attestation", l'autre un tableau sur lequel je dois indiquer des quantités globales en fonction de certains critères sur plusieurs cellules (que j'appelle "ajust").

Ma base étant énorme je souhaite automatiser mon fichier.
En gros, je veux appuyer sur un bouton et que mon tableau se remplisse automatiquement.
Au moment où j'appuierai sur le bouton, une cellule spécifique de "ajust" recensera la quantité totale de produit dont le pays est "FRA" et l'attestation est "O".
Puis sur une autre cellule de "ajust", il sera indiqué la quantité totale de produit dont le pays est "GBR" et "N"...

Vous voyez un peu mieux ce que je souhaite faire?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Ok, plus clair.
Ça, c'est ton cahier des charges, mais sur quoi bloques-tu ?
As-tu regardé dans l'aide de Excel en recherchant "base de données" ou même la fonction SOMME.SI avec laquelle tu pourrais t'en sortir assez facilement ?
Messages postés
20
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
1 février 2012

Malheureusement je ne sais pas par où commencer...
J'ai beaucoup de critère à indiquer pour avoir la somme des quantités de produits et la fonction somme.si risque d'être très longue.
J'ai pensé à créer une macro VBA pour gagner du temps mais je suis loin d'être calé dessus.

Je sais appelé une macro via un bouton , par contre je ne sais pas comment calculer une somme en fonction de critère sur plusieurs colonnes et que cette somme soit reporté dans un tableau sur une autre feuille.

Si je peux avoir des bouts de codes j'arriverai ptete à me débrouiller ensuite...
En tout cas merci de ton aide!
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
As-tu tapé "base de données" dans l'aide de Excel, comme je te le suggérais ?
Il faut commencer par là, les infos par l'exemple y sont.
Par exemple, DBSOMME
Messages postés
20
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
1 février 2012

Je trouve pas dans l'aide ce que je veux faire...
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Quelle version de Excel ?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Messages postés
20
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
1 février 2012

Bonjour,

Avec BDSOMME ca me renvoie #VALEUR, par contre j'ai demandé de l'aide à une collègue qui a trouvé ca :

[i]Sub ajust()

With Sheets("Base").Activate

Selection.AutoFilter Field:=7, Criteria1:="CHEQUE"
Selection.AutoFilter Field:=10, Criteria1:="SOCIETE"

End With

With Sheets("Ajust").Activate
range("F16").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,BASE!R[317]C[-1]:R[5961]C[-1])"
ActiveCell.Offset(1, 0).range("A1").Select

End With/i


Ca a l'air de fonctionner mais j'ai peur que ca soit lourd non?