Je sollicite une nouvelle fois votre aide car je n'y connais rien en programmation VBA.
J'ai créé un tableau Excel avec plusieurs onglets. Chacun des ces onglets représente une catégorie de dépenses.
A la fin de chaque ligne j'aimerai une formule qui me calcule automatiquement la colonne "payé" que je matérialise avec une police en coloris rouge.
Ensuite je pourrai faire calculer à Excel la colonne "En attente" en prenant le Total - le Payé.
J'espère que mes explications sont assez claires.
Mais plutôt que de longs discours, le fichier me parait être assez parlant à lui tout seul.
Merci une nouvelle fois de votre précieuse aide ;-)
Prenez toutes et tous bien soin de vous
Oups! Un petit souci car le changement de couleur d'une cellule ne provoque pas de recalcul. Ce que j'avais oublié.
Donc Application.Volatile ne sert à rien dans cette configuration.
Une solution : mettre dans chaque feuille un Recalcul si selection cellule :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C33:L66")) Is Nothing Then
Calculate
End If
End Sub
Mais même là, la mise à jour ne se fait pas sur le changement de couleur mais sur la sélection d'une cellule.
En clair : On choisit une cellule, on la met en rouge. Rien ne se passe.
On sélectionne une autre cellule et tout se recalcule.
Pas génial mais je n'ai pas d'autre solution à vous proposer. A voir en...
Bonjour,
Oui, mais dans ce cas tout sera recalculé à chaque recalcul de la feuille;
C'est un choix. A voir si ça ne ralentit pas trop XL. Tout dépend du nombre de formules présentes dans votre feuille.
VB:
Function Payé(Plage)
Application.Volatile
For Each c In Plage
If c.Font.Color = vbRed Then Payé = Payé + c
Next
End Function
Bonjour,
Oui, mais dans ce cas tout sera recalculé à chaque recalcul de la feuille;
C'est un choix. A voir si ça ne ralentit pas trop XL. Tout dépend du nombre de formules présentes dans votre feuille.
VB:
Function Payé(Plage)
Application.Volatile
For Each c In Plage
If c.Font.Color = vbRed Then Payé = Payé + c
Next
End Function
Oups! Un petit souci car le changement de couleur d'une cellule ne provoque pas de recalcul. Ce que j'avais oublié.
Donc Application.Volatile ne sert à rien dans cette configuration.
Une solution : mettre dans chaque feuille un Recalcul si selection cellule :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C33:L66")) Is Nothing Then
Calculate
End If
End Sub
Mais même là, la mise à jour ne se fait pas sur le changement de couleur mais sur la sélection d'une cellule.
En clair : On choisit une cellule, on la met en rouge. Rien ne se passe.
On sélectionne une autre cellule et tout se recalcule.
Pas génial mais je n'ai pas d'autre solution à vous proposer. A voir en PJ si ça vous va.
Sinon il faut trouver une autre approche avec un bouton Payé par ex. Un clic sur ce bouton met la cellule en rouge et fait le recalcul. Ou encore utiliser une touche pour cette fonction.
Oups! Un petit souci car le changement de couleur d'une cellule ne provoque pas de recalcul. Ce que j'avais oublié.
Donc Application.Volatile ne sert à rien dans cette configuration.
Une solution : mettre dans chaque feuille un Recalcul si selection cellule :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C33:L66")) Is Nothing Then
Calculate
End If
End Sub
Mais même là, la mise à jour ne se fait pas sur le changement de couleur mais sur la sélection d'une cellule.
En clair : On choisit une cellule, on la met en rouge. Rien ne se passe.
On sélectionne une autre cellule et tout se recalcule.
Pas génial mais je n'ai pas d'autre solution à vous proposer. A voir en PJ si ça vous va.
Sinon il faut trouver une autre approche avec un bouton Payé par ex. Un clic sur ce bouton met la cellule en rouge et fait le recalcul. Ou encore utiliser une touche pour cette fonction.