Calcul intermittent-Résolu

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • 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 !

Calvus

XLDnaute Barbatruc
Bonsoir le Forum,

J'ai ce code dans un Userform :
VB:
ca = Format(Application.SumIfs([J:J], [B:B], ComboBox1, [H:H], ">=" & date1), "# ##0.00")    'CA année N
ca2 = Format(Application.SumIfs([J:J], [B:B], ComboBox1, [H:H], "<" & date1), "# ##0.00")    'CA N-1

Ce code fonctionne très bien, et affiche les résultats dans 2 labels.
Il est activé au lancement du Userform, et à un changement dans un Combobox.

Or, en ajoutant une fonctionnalité, la boucle se fait, mais le résultat reste à 0.

Voici ce que j'ai ajouté :
VB:
Private Sub Label45_Click()
ComboBox1 = Label45
ComboBox1_Change
Calcul_CA
End Sub

J'ai ajouté la ligne Calcul_CA car les 2 premières ne donnaient rien. Et ce code, le voici, comme le premier :
VB:
Sub Calcul_CA()
ca = Format(Application.SumIfs([J:J], [B:B], ComboBox1, [H:H], ">=" & date1), "# ##0.00")    'CA année N
ca2 = Format(Application.SumIfs([J:J], [B:B], ComboBox1, [H:H], "<" & date1), "# ##0.00")    'CA N-1
Label3.Caption = ca
Label40.Caption = ca2
End Sub

J'y perds mon latin. Si je change une valeur de mon combox, la boucle se fait, ainsi que le calcul.
Si je lance à partir du clic, la boucle se fait exactement de la même manière, mais pas le calcul.

Et j'ai vérifié évidemment, ce n'est pas un problème de format.

Merci de votre aide.
 
Bonsoir Calvus 🙂, Le Forum 🙂

Si tu as des titres de colonnes, pourquoi prends-tu toute la colonne ?? 🙄 À moins que je me trompe.

Normalement c'est du style (SumIs - CountIs ect.)

VB:
Option Explicit

Private Sub CommandButton1_Click()
Dim derlig As Long,  i As Long

  With Sheets("BASE")
  derlig = .Range("e" & Rows.Count).End(xlUp).Row

  For i = 5 To 10
  Range("d" & i) = Application.SumIf(.Range("e3:e" & derlig), Range("c" & i), .Range("g3:g" & derlig))
  Range("f" & i) = Application.CountIfs(.Range("c3:c" & derlig), Range("h" & i), .Range("e3:e" & derlig), Range("c" & i))
  Range("g" & i) = Application.CountIfs(.Range("c3:c" & derlig), Range("i" & i), .Range("e3:e" & derlig), Range("c" & i))
  Next i
  End With
End Sub

Ensuite tu met le format : Range("d" & i) = Format(Range("d" & i), "# ##0.00")
 
Bonsoir Calvus 🙂

Si tu veux que le label affiche le total de la colonne, il faut mettre la fonction subtotal(9, colonne) ou Sum.

x = subtotal(9, colonne) - label2.caption = Format(x, "####0.00"). Le label me peux pas contenir 65536 cellules, si tu vois ce que je veux dire. Oubien comme ceci peut-être

VB:
Sub Calcul_CA()
ca = Application.SumIfs([B:B], ComboBox1, [H:H], ">=" & date1)    'CA année N
ca2 = Format(Application.SumIfs([J:J], ComboBox1, [H:H], "<" & date1)   'CA N-1
Label3.Caption = Format(ca, "# ##0.00")
Label40.Caption = Format(ca2, "# ##0.00")
End Sub
 
Dernière édition:
Re-bonsoir Lone-wolf,

On n'arrive pas à se comprendre. Mon code fonctionne, et très bien. Le résultat est unique, et parfaitement affiché dans les labels, SAUF si l'appel de la procédure se fait par un clic sur un autre label.
Le problème vient de là, pas d'ailleurs.
Je posterai un fichier tout à l'heure ou demain.

A+
 
Bonjour,

Tu dis que la boucle se fait (quelle boucle ??? où est-elle ?) mais que le calcul ne se fait pas.
Si le code est exécuté, alors le calcul devrait s'effectuer.

Qu'est-ce qui te fait dire que le calcul ne se fait pas ? Est-ce parce que tes Label3 et Label40 ne changent pas de valeur ? ou est-ce parce que tu as vérifié et constaté que tes variables Ca etCa2 ne changent pas de valeur ?
 
Bonsoir Marcel,

Le calcul ne se fait pas, le CA reste à zéro.

Voici une exacte copie de mon fichier, seulement raccourcie.
J'ai fait un copier coller du code et gardé les mêmes nom de labels.
Je n'ai seulement pas ajouté la procédure Calcul_Ca qui est dans le post 1, car dans cette copie, ça fonctionne. Je ne comprends pas...
 

Pièces jointes

Bonjour Lone_wolf, Marcel, le forum,

@ Calvus: comment tu fait le calcul si il n'y a aucune date supérieure à janvier 2017?? 🙄

Çà on s'en fiche. Tu vois bien que ça fonctionne pour 2016. Et puis il suffit de changer 3 ou 4.dates pour voir que ça fonctionne aussi. Sur mon fichier original, rien ne fonctionne (je ne parle que des clics sur les labels évidemment, le reste fonctionne).
 
Re,

Oui Lone-wolf.
Sur le fichier que tu as téléchargé ça fonctionne.
Sur mon fichier original ça ne fonctionne pas.

Je le redis, le problème est sur mon fichier original.

Et ça vient manifestement du transfert du nom du combobox par le clic, bien qu'en mode debug la valeur est bien affectée. Seulement le calcul donne irrémédiablement 0.
 
Re

Il y a aussi une autre chose qui cloche. J'ai changé 2 dates à Riri en mettant 2017. Sur la feuille j'obtient 1177.92 alors que le label affiche 1166.60, en faisant un test sans + 0.5)* 100) / 100.

Fait un test en créant par exemple private sub Somme_Noms(), tu met ce qu'il y a dans la combo; ensuite dans celle-ci. If combobox1.text <> "" Then call somme_noms else Exit sub End if: Enlève aussi le calcul dans initialize.
 
Dernière édition:
- 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

Discussions similaires

N
  • Question Question
Réponses
5
Affichages
3 K
J
Réponses
8
Affichages
2 K
D
Réponses
2
Affichages
2 K
deeppurple
D
Y
Réponses
13
Affichages
23 K
Yvouille
Y
N
Réponses
0
Affichages
853
N
K
  • Question Question
Réponses
3
Affichages
2 K
Retour