Calcul intermittent-Résolu

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.
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir Calvus :), Le Forum :)

Si tu as des titres de colonnes, pourquoi prends-tu toute la colonne ?? :rolleyes: À 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")
 

Lone-wolf

XLDnaute Barbatruc
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:

Calvus

XLDnaute Barbatruc
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+
 

TooFatBoy

XLDnaute Barbatruc
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 ?
 

Calvus

XLDnaute Barbatruc
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

  • Macro Max 2.xlsm
    22.8 KB · Affichages: 42

Calvus

XLDnaute Barbatruc
Bonjour Lone_wolf, Marcel, le forum,

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

Çà 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).
 

Calvus

XLDnaute Barbatruc
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.
 

Lone-wolf

XLDnaute Barbatruc
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:

Calvus

XLDnaute Barbatruc
Re,

Problème réglé comme ceci :
VB:
Private Sub Label45_Click()
ComboBox1 = Mid(Label45, InStr(Label45, " ") + 1)
ComboBox1_Change
End Sub

Désolé du dérangement.
Lone-wolf, comment met on le titre en résolu ?
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa