Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment forcer le calcul d'une cellule en VBA

JNP

XLDnaute Barbatruc
Bonjour ,
J'ai crée une fonction qui calcule le nombre d'heure sup à récupérer en fonction de la couleur de fond de la cellule:
Function HeuresARécupérer(Heures)
Dim NombreCellule As Integer, I As Integer
NombreCellule = Heures.Count
For I = 1 To NombreCellule
Select Case Heures(I).Interior.ColorIndex
Case 35
HeuresARécupérer = HeuresARécupérer + Heures(I).Value
End Select
Next I
End Function

Cette formule, je l'injecte dans une feuille via VBA pour chaque mois ainsi que la somme avec les instructions suivantes:
Cells(36, 3).Value = "=heuresarécupérer(C4:C34)"
Cells(36, 4).Value = "=heuresarécupérer(D4: D34)"
Cells(36, 5).Value = "=heuresarécupérer(E4:E34)"
Cells(36, 6).Value = "=heuresarécupérer(F4:F34)"
Cells(36, 7).Value = "=heuresarécupérer(G4:G34)"
Cells(36, 8).Value = "=heuresarécupérer(H4:H34)"
Cells(36, 9).Value = "=heuresarécupérer(I4:I34)"
Cells(36, 10).Value = "=heuresarécupérer(J4:J34)"
Cells(36, 11).Value = "=heuresarécupérer(K4:K34)"
Cells(36, 12).Value = "=heuresarécupérer(L4:L34)"
Cells(36, 13).Value = "=heuresarécupérer(M4:M34)"
Cells(36, 14).Value = "=heuresarécupérer(N4:N34)"
Cells(36, 15).Value = "=SOMME(C36:N36)"

Le problème est que le calcul ne s'effectue pas dans la feuille. Malgré la présence d'heures, la valeur reste à "0" et la somme m'affiche "#NOM?"
Je suis obligé de doublecliquer dans chaque cellule en sélectionnant la plage pour qu'à la validation, le calcul s'éffectue enfin...
Merci d'avance de vos solution pour forcer le calcul des cellules via VBA...
 

JNP

XLDnaute Barbatruc
Re : Comment forcer le calcul d'une cellule en VBA

Merci Luki,
Effectivement, j'ai rajouté un calculate (pas dans mon userform, mais juste avant son affichage car sinon, il fallait que je réaffiche...) et ÇA FONCTIONNE!!!
Merci à tous pour votre aide et à la prochaine
 

pierrejean

XLDnaute Barbatruc
Re : Comment forcer le calcul d'une cellule en VBA

Re

eh bien il fallait bien tout ça

Calculate hein !!

je ne sais pas si j'y aurais pensé !!

Donc ça y est, et

Le canard est toujours vivant

bravo JNP
 

benoit.frn

XLDnaute Nouveau
Re : Comment forcer le calcul d'une cellule en VBA

Bonjour,
Je travaille sur un gros fichier Excel (75 onglets, en moyenne 700 lignes par onglet)
J'ai un problème sur une feuille qui ne veut pas se calculer automatiquement, j'ai beau essayer vos techniques décrites précédemment, je n'arrive à rien et je suis obligé de me taper toutes les lignes, F2+Entrée pour calculer.
Est-il possible d'écrire sous Visual Basic une sorte de rafraichissement de l'onglet pour tout recalculer automatiquement ?
Merci pour vos réponses,

Benoit
 

Staple1600

XLDnaute Barbatruc
Re : Comment forcer le calcul d'une cellule en VBA

Bonsoir

A tout hasard
essayes cette macro
Code:
sub a()
Application.EnableEvents=true
end sub

Sinon un fichier exemple reproduisant le phénomène ne ferait pas tâche dans ce fil ...
 

benoit.frn

XLDnaute Nouveau
Re : Comment forcer le calcul d'une cellule en VBA

Merci pour la réponse ! Mais j'ai essayé, ça ne marche pas..
J'ai effectivement pensé ajouter le fichier en ligne mais il est trop gros et la feuille concernée par mon problème pioche dans une dizaine de feuilles différentes..
 

Staple1600

XLDnaute Barbatruc
Re : Comment forcer le calcul d'une cellule en VBA

Re


Il suffit d'alléger ton fichier suffisamment
Deux feuilles suffisent, et 20 lignes dans chaque d'elles, avec des données fictives ou anonymisées, ton classeur zippé
(Clic-droit sur ton *.xls puis choisir Envoyer vers Dossiers compressés )

Et normalement tu auras alors un fichier exemple à joindre à ta discussion
 

job75

XLDnaute Barbatruc
Re : Comment forcer le calcul d'une cellule en VBA

Bonjour benoit.frn, Jean-Marie

Ceci doit forcer le recalcul des formules dans la feuille active :

Code:
Sub ForceCalcul()
Dim plage As Range, cel As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
On Error Resume Next
Set plage = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
For Each cel In plage
  cel.Formula = cel.Formula & "+µµµ"
Next
plage.Replace "+µµµ", "", xlPart
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment forcer le calcul d'une cellule en VBA

Re,

Essayez aussi tout benoîtement :

Code:
Sub ForceCalcul()
Cells.Replace "=", "µµµ", xlPart
Cells.Replace "µµµ", "="
End Sub
A+
 

benoit.frn

XLDnaute Nouveau
Re : Comment forcer le calcul d'une cellule en VBA

Merci pour vos réponses ! ça marche bien mais je me rends compte que ce n'est pas adapté à mon cas. Je ne travaille que depuis une semaine sur ce fichier que je n'ai pas moi-même conçu donc je ne saisis pas encore toutes les dépendances dans chacune des feuilles. En l’occurrence job75, votre code actualise chacune des lignes au fur et à mesure mais certaines de mes cellules du début de la feuille dépendent d'autres en fin de feuille, d'où bug...

@staple1600, ce n'est pas par manque de volonté et je comprends que vous joindre un fichier aiderait mais je ne peux vraiment pas le résumer. Les cellules pour lesquels le calcul ne se fait pas sont assez loin dans la feuille, prennent des références au début, et ne concernent que de simples additions qui ne se calculent pas proprement, allez savoir pourquoi... Alors que d'autres se font très bien ! J'espère avoir été assez clair dans mes explications
Je vais essayer d'appliquer la macro de job75 que pour certaines cellules. Est-il possible de la lancer que pour des cellules sélectionnées par hasard ?

Un grand merci
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…