XL 2013 CALCUL AUTOMATIQUE

bouteille à la mer

XLDnaute Nouveau
Bonjour,

Nouvelle sur ce forum je sollicite votre aide pour résoudre les difficultés que je rencontre dans un tableau de suivi de CA ;
J'ai enregistré une formule qui prend en considération la couleur du fond de cellule pour soustraire le montant de la cellule coloré à une autre cellule. Or le calcul automatique ne fonctionne pas. J'ai vérifier la coche est bien activée de calcul automatique dans Option / Formule de ma feuille de calcul. Et pourtant c'est comme si l'option ne fonctionne pas. j'ai également vérifier que les cellules sont bien en format nombre... mais rien ne change.
Est-ce que quelqu'un peut regarder dans la pièce jointe?
L'idée est lorsque la facturation est faite, la cellule contenant le montant facturé est en fond rouge. cependant, je suis obligée à chaque fois de procéder au calcul automatique manuellement.

Et seconde question : lorsque je veux insérer une ligne supplémentaire dans mon tableau elle apparait sans dupliquer les formules de calcul ou fonction : Comment puis-je insérer une ligne en dupliquant ?

D'avance merci pour votre aide et la générosité du partage...
 

Pièces jointes

  • TEST.xlsm
    34.6 KB · Affichages: 16

piga25

XLDnaute Barbatruc
Bonjour Bouteille à la mer, le Forum
Pour le calcul automatique ajouter ceci dans le code de la feuille
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Calculate
End Sub

Pour insérer une ligne automatiquement avec les formules, il existe un truc tout simple qui je l'espère pourra t'aider, c'est d'utiliser l'outil "Tableau" d'Excel.
Sur Excel 2007 ou plus, sélectionne ta zone, puis dans le menu Accueil, clique dans le ruban sur "Mettre sous forme de tableau" ( n'oublie pas de cocher la case "Mon tableau comporte des en-têtes").
Ensuite, tu verras que comme par magie, dès que tu saisis une donnée après la dernière ligne, elle est automatiquement intégrée à ton "Tableau", et de même, les formules s'ajustent toute seules sans avoir quoi que ce soit à faire.
Le seul inconvénient à cela il faut juste une seule ligne d'entête et sans cellules fusionnées.
 
Dernière édition:

bouteille à la mer

XLDnaute Nouveau
Bonjour Bouteille à la mer, le Forum
Pour le calcul automatique ajouter ceci dans le code de la feuille
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Calculate
End Sub

Pour insérer une ligne automatiquement avec les formules, il existe un truc tout simple qui je l'espère pourra t'aider, c'est d'utiliser l'outil "Tableau" d'Excel.
Sur Excel 2007 ou plus, sélectionne ta zone, puis dans le menu Accueil, clique dans le ruban sur "Mettre sous forme de tableau" ( n'oublie pas de cocher la case "Mon tableau comporte des en-têtes").
Ensuite, tu verras que comme par magie, dès que tu saisis une donnée après la dernière ligne, elle est automatiquement intégrée à ton "Tableau", et de même, les formules s'ajustent toute seules sans avoir quoi que ce soit à faire.
Le seul inconvénient à cela il faut juste une seule ligne d'entête et sans cellules fusionnées.



Merci pour ta réponse... je vais mettre en application tes conseils
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @bouteille à la mer, @piga25,

Un changement de couleur n'est pas associé à un évènement qu'on peut gérer en VBA. Un pis-aller est de lancer toutes les n secondes un calcul automatique qui recalculera le classeur. Pour cela, on lance le processus de calcul à intervalle régulier l'ouverture du classeur et on arrête ce processus à la fermeture du classeur. Le code se trouve dans les modules de ThisWorkbook et de module2. L'intervalle entre deux recalculs est défini via la constante delai dans module2
ThisWorkbook:
VB:
' à l'ouverture du fichier on lance le calcul périodique via la sub Encore()
Private Sub Workbook_Open()
  Encore
End Sub

' à la fermeture du fichier on arrête le calcul périodique via la sub Arret()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Arret
End Sub

Le code dans module2:
VB:
Option Explicit

Const delai = 3   ' délai entre deux calculs périodiques (en seconde)
Public prochain   ' heure du prochain calcul périodique

Sub Encore()
  Arret     ' on arrête le processus de calcul périodique
  prochain = Now() + 1 / 86400 * delai      ' date du prochain calcul forcé
  Application.OnTime prochain, "Encore", , True     ' on relance le calcul périodique
End Sub

Sub Arret()
  ' arrêter le processus de calcul périodique
  ' et procéder à un dernier calcul de mise à jour
  On Error Resume Next
  Application.OnTime prochain, "Encore", , False
  On Error GoTo 0
  Application.Calculate     ' on force un dernier calcul
End Sub
 

Pièces jointes

  • bouteille à...- compter couleur- v1a.xlsm
    38.2 KB · Affichages: 14
Dernière édition:

bouteille à la mer

XLDnaute Nouveau
Bonsoir @bouteille à la mer, @piga25,

Un changement de couleur n'est pas associé à un évènement qu'on peut gérer en VBA. Un pis-aller est de lancer toutes les n secondes un calcul automatique qui recalculera le classeur. Pour cela, on lance le processus de calcul à intervalle régulier l'ouverture du classeur et on arrête ce processus à la fermeture du classeur. Le code se trouve dans les modules de ThisWorkbook et de module2. L'intervalle entre deux recalculs est défini via la constante delai dans module2
ThisWorkbook:
VB:
' à l'ouverture du fichier on lance le calcul périodique via la sub Encore()
Private Sub Workbook_Open()
  Encore
End Sub

' à la fermeture du fichier on arrête le calcul périodique via la sub Arret()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Arret
End Sub

Le code dans module2:
VB:
Option Explicit

Const delai = 3   ' délai entre deux calculs périodiques (en seconde)
Public prochain   ' heure du prochain calcul périodique

Sub Encore()
  Arret     ' on arrête le processus de calcul périodique
  prochain = Now() + 1 / 86400 * delai      ' date du prochain calcul forcé
  Application.OnTime prochain, "Encore", , True     ' on relance le calcul périodique
End Sub

Sub Arret()
  ' arrêter le processus de calcul périodique
  ' et procéder à un dernier calcul de mise à jour
  On Error Resume Next
  Application.OnTime prochain, "Encore", , False
  On Error GoTo 0
  Application.Calculate     ' on force un dernier calcul
End Sub


MaPomme,

Un grand merci pour le partage... cela fonctionne!
 

Discussions similaires

Réponses
3
Affichages
324

Statistiques des forums

Discussions
315 093
Messages
2 116 130
Membres
112 667
dernier inscrit
foyoman