Macro pour addition conditionnelle

  • Initiateur de la discussion Initiateur de la discussion Amisk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Amisk

Guest
Bonjour à tous

Je cherche à faire une macro qui va me permettre d'additionner les revenus de ventes (colonne I) par semaine et par concessionnaire. Le total doit se retrouver sur la dernière ligne de la semaine dans la colonne revenus hebdo (colonne L)

Je suis débutant en VBA

Merci de votre aide
 

Pièces jointes

Re : Macro pour addition conditionnelle

Merci JNP

Mais ce n'est pas ce que je cherche.
Le résultat doit se retrouver dans le fichier de départ car je dois utiliser ce résutltat dans des TCD. De plus j'ai de de nombreux concessionnaire et je dois faire le même calcul pour plusieurs colonnes.
 
Re : Macro pour addition conditionnelle

Re 🙂,
Si tu passes par un TCD, je ne vois pas pourquoi tu veux insérer dans le fichiers des sous calculs qui t'empêcheront de faire ce TCD. La même chose en TCD joint, le plus simple étant bien sûr de tout regrouper en une seule feuille...
Bonne journée 😎
 

Pièces jointes

Re : Macro pour addition conditionnelle

Re JNP

À cause de l'espace dont je dispose j'ai réduit considérablement ce fichier. Lorsque je fais un TCD avec la banque de données originale, les moyennes ne se calculent pas bien de sorte que je suis obligé de faire les sous-totaux par semaine et par mois avant de refaire mes TCD. voilà pourquoi j'ai besoin d'une macro pour faie tout ça.

Merci de ton aide
 
Re : Macro pour addition conditionnelle

Re 🙂,
Dans ce cas-là
Code:
Sub Test()
Dim I As Integer, Total As Long
I = 2
Total = 0
While Cells(I, 1) <> ""
If Cells(I, 6) = Cells(I + 1, 6) Then
Total = Total + Cells(I, 9)
Else
Total = Total + Cells(I, 9)
Cells(I, 12) = Total
Total = 0
End If
I = I + 1
Wend
End Sub
Attention, ça ne fonctionne que si le fichier est trié correctement...
Bon courage 😎
 
Re : Macro pour addition conditionnelle

J'ai modifié la procédure pour l'Adapter à ma base de données .
J'obtiens le code d'erreur 13, et pointe mon équation AC = AC + Cells(I, 8) + Cells(I, 9) + Cells(I, 10) + Cells(I + 11)

Quelle erreur ais-je Fait ?

Merci pour votre aide



Sub Soustotal()
Dim I As Integer, PV As Long, CV As Long, PB As Long, AC As Long
I = 2
PV = 0
CV = 0
PB = 0
AC = 0
While Cells(I, 1) <> ""
If Cells(I, 7) = Cells(I + 1, 7) Then
PV = PV + Cells(I, 21): CV = CV + Cells(I, 24): PB = PB + Cells(I, 36): AC = AC + Cells(I, 8) + Cells(I, 9) + Cells(I, 10) + Cells(I + 11)
Else
PV = PV + Cells(I, 21): CV = CV + Cells(I, 24): PB = PB + Cells(I, 36): AC = AC + Cells(I, 8) + Cells(I, 9) + Cells(I, 10) + Cells(I + 11)
Cells(I, 39) = AC
Cells(I, 40) = PV
Cells(I, 41) = CV
Cells(I, 42) = PB
PV = 0: CV = 0: PB = 0: AC = 0
End If
I = I + 1
Wend
End Sub
 
Re : Macro pour addition conditionnelle

Re 🙂,
Une erreur de type 13 provient d'une mauvaise affectation de variable. La déclaration Long comprend des entiers, mais si tu as des chiffres à virgules, ça plante (vendre des voitures avec des virgules, je n'y avais pas pensé 😛)... Donc si tu déclares en Double, ça devrait le faire. Voici ce que donne l'aide sur les variables
Résumé des types de données

Voir aussi Particularités
Le tableau suivant présente les types de données reconnus en précisant la taille des enregistrements et la plage des valeurs.
Type de données Taille d'enregistrement Plage
Byte1 octet 0 à 255
Boolean 2 octets True ou False
Integer 2 octets -32 768 à 32 767
Long (entier long)4 octets -2 147 483 648 à 2 147 483 647
Single (à virgule flottante en simple précision) 4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives
Double (à virgule flottante en double précision) 8 octets -1,79769313486231E308 à
-4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives
Currency (entier à décalage) 8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807
Decimal 14 octets +/-79 228 162 514 264 337 593 543 950 335 sans séparateur décimal ;
+/-7,9228162514264337593543950335 avec 28 chiffres à droite du séparateur décimal ; le plus petit nombre différent de zéro est +/-0.0000000000000000000000000001.
Date 8 octets1er janvier 100 au 31 décembre 9999
Object 4 octets Toute référence à des données de type Object
String (longueur variable) 10 octets + longueur de la chaîne 0 à environ 2 milliards
String (longueur fixe) Longueur de la chaîne 1 à environ 65 400
Variant (nombres) 16 octets Toute valeur numérique, avec la même plage de valeurs qu'une donnée de type Double
Variant (caractères) 22 octets + longueur de la chaîne Même plage de valeurs qu'une donnée de type String de longueur variable
Type défini par l'utilisateur (avec Type) En fonction des éléments La plage de valeurs de chaque élément correspond à celle de son type de données.

Note Quel que soit le type de données, les tableaux nécessitent 20 octets de mémoire, auxquels viennent s'ajouter quatre octets pour chaque dimension et le nombre d'octets occupés par les données. L'espace occupé en mémoire par les données peut être calculé en multipliant le nombre d'éléments par la taille de chacun d'eux. Par exemple, les données stockées dans un tableau unidimensionnel constitué de quatre éléments de type Integer de deux octets chacun occupent huit octets. Ajoutés aux 24 octets d'espace mémoire de base, ces huit octets de données portent la mémoire totale nécessaire pour le tableau à 32 octets.
Une variable de type Variant contenant un tableau nécessite 12 octets de plus qu'un tableau seul.
Note Utilisez la fonction StrConv pour convertir un type de données de chaîne en un autre.
Bon courage 😎
 
Re : Macro pour addition conditionnelle

Je te remercie JNP pour cette information

Je ne sais pas trop si ce que tu me dis a un lien avec cette formule
AC = AC + Cells(I, 8) + Cells(I, 9) + Cells(I, 10) + Cells(I + 11)

Est-ce que ma syntaxe est correcte ? Si non, comment je devrais l'écrire ?

Merci encore
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
25
Affichages
1 K
Réponses
8
Affichages
786
Retour