Afficher UserForm lors de calcul de cellules indivuduelles ciblées

Bonjour tout le monde !

Voilà un problème supplémentaire que je n'arrive pas résoudre.

Un grand aide m'a été amené pour le code ci-dessous :

Private Sub Worksheet_Calculate()

With ThisWorksheet

For Each cell In Range("AC7,AC10,AQ7,AQ10,AQ13,AQ16,AQ19,AQ22,AQ25,AQ28,BF7,BF10,BF13,BF16,BF19,BF22")

If cell.Value = 1 Then

UsF_Red.Show

End If

Next cell

End With

End Sub

J'aimerais maintenant pouvoir effectuer quelque chose de similaire dans une autre feuille.

Mais il s'agirait d'afficher un UserForm lorsque la valeur d'une seule cellule spécifique est re-calculer.

J'ai plusieurs cellule qui changent dans cette nouvelle feuille (analogue au premier code), mais je ne souhaite l'affichage du UserForm que par cellule isolée. Le code plus haut fait une estimation globale et non ciblée.

Des pistes pour m'aiguiller ?

D'avance merci

Bien à vous.

Willau

Bonjour

J'ai un peu du mal à comprendre tes explications sans fichier, aussi tu comprendras que je répondrai peut-être à côté de la plaque

Mais il s'agirait d'afficher un UserForm lorsque la valeur d'une seule cellule spécifique est re-calculer.

J'ai plusieurs cellule qui changent dans cette nouvelle feuille (analogue au premier code), mais je ne souhaite l'affichage du UserForm que par cellule isolée. Le code plus haut fait une estimation globale et non ciblée.

Quand la valeur d'une cellule est recalculée... Hum je ne connais pas de moyens d'intercepter le recalcul d'une feuille, enfin, tu as bien un évènement calculate, mais il n'y a pas de Range associé à cet évènement.

En revanche, si une cellule change, tu peux regarder si elle a des dépendants, Range.Dependents renvoie toutes les cellules qui dépendent de la cellule qui change, tu as aussi Range.DirectDependents qui ne renvoie que les cellules qui dépendent directement de celle qui change.

Je pense que tu pourrais t'en sortir avec ça si j'ai bien compris ce que tu veux faire, mais comme je l'ai dis précédemment, je me trompe peut-être dans ma compréhension du sujet.

A toi de me dire si ce début de piste te parle ou non.

Bonjour Ausecour

Merci pour ton retour.

Un fichier n'aurait pas apporté plus d'informations. Mais je comprends la difficulté de comprendre ce que je veux atteindre.

Néanmoins, je crois que ton analyse s'approche grandement de ce que je cherche à atteindre.

Range.DirectDependents semble convenir à ce que je recherche.

Admettons:

Si la cellule A1 change de résultat suite à un nouveau calcul (la cellule est liée à une autre cellule dans une autre feuille), je souhaite qu'un Userform apparaisse selon le résultat (La cellule concernée peut avoir comme résultat soit:

1 (Délai en retard)

2 (Délai court dans 30 minutes)

3 (Délai couru et réussi)

J'ai créé un tableau de bord qui rassemble différents résultats. Donc sur ce tableau, différentes cases peuvent contenir un 1 ou un 2 ou un 3.

Avec ma formule présentée dans mon premier poste, si un calcul (modification) s'effectue sur mon tableau de bord, le Userform s'affiche autant de fois que j'ai un 1 dans le tableau. Je souhaite que le UsF ne s'affiche que pour LA cellule qui se modifie.

Donc je pense que ton "Range.DirectDependents" semble répondre à cette servitude.

Je ne sais malheureusement pas comme le placer

Aurais-tu une piste supplémentaire à ce sujet ?

D'avance merci.

Cordialement

Willau

Bonjour,

Détrompe toi, un fichier vaut souvent mieux que de longues explications, quelques cellules mises en couleur, le résultat attendu en commentaire ou à côté, c'est plus rapide à comprendre, mais bon...

Si on essaye d'adapter ton code avec ce que j'ai compris...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, dep As Range
On Error Resume Next
Set plage = Target.Dependents 'ou DirectDependents, toi qui vois
If Not plage Is Nothing Then
    For Each dep In plage.Cells
        If dep = 1 Then
            UsF_Red.Show
        End If
    Next dep
End If
End Sub

Salut Ausecour

Un grand merci pour ta contribution. Je me suis permis une modification selon les résultats possibles dans ma feuille.

Cependant, un problème subsiste... J'ai insérer dans différentes cellules de ma feuille des formules de type "=RASTER!AK12" (valeur référence dans une autre feuille). /(cette idée ne met venue que cet après-midi)/

Ce qui veut dire que pour ma macro, aucun changement ne s'effectue, bien que la valeur de la cellule puisse changer en référence à une autre feuille.

Existe-t-il le moyen de modifier le "Worksheet_Change(ByVal Target As Range)" afin que tout changement de valeur soit pris en considération.

Mon code actuel:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim plage As Range, dep As Range

On Error Resume Next

Set plage = Target.Dependents 'ou DirectDependents, toi qui vois

If Not plage Is Nothing Then

For Each dep In plage.Cells

If dep = 1 Then

UsF_Red.Show

End If

If dep = 2 Then

UsF_Orange.Show

End If

Next dep

End If

End Sub

D'avance merci.

Willau

Re,

Dans le code que tu me montres, on ne limite pas les cellules pouvant changer, ça lance donc bien le worksheet change etc, par contre, tu as modifié plusieurs cellules d'un coup?

Salut

Non, pas de modification de plusieurs cellules d'un coup.

Je vais essayé de trafiquer mon fichier afin de pouvoir le mettre en pièce jointe. Mais pas mal de trucs confidentiels trainent encore dessus...

Dans mon tableau général "Dashboard" (feuille où se trouve le code), j'ai différents résultats (rien, 1, 2, 3) qui sont mis dans des cellules références en relation avec des cellules se trouvant sur d'autres feuilles. Il s'agit pour moi d'un système de radar avec les jeux de couleurs (gris, rouge, orange et vert) qui interagit avec des délais en cours. (dans les temps, en retard, activé dans 30 minutes, annonce enregistrée)

Dans la cellule AD13 de ma feuille Dashboard j'ai la formule: =RASTER!AK12 (se référence à la cellule AK12 de la feuille RASTER)

Dans la cellule AD15 de ma feuille Dashboard j'ai la formule: =ANNONCE1!AA1 (se référence à la cellule AA1 de la feuille ANNONCE1)

etc.

Je pense que le fait d'avoir une formule dans mes cellules AD13, AF15, etc. fait que Excel ne considère pas qu'il y a un changement vu que le contenu reste identique.... seule la valeur change du fait de ce référencement.

Comme dit, j'essaie d'envoyer quelque chose d'un peu plus concret (fichier) mais cela risque de prendre un peu de temps...

Merci encore !

Cordialement

Willau

Bonjour,

Je viens de comprendre la problématique... Et c'est embêtant, je dois bien l'avouer, c'est vrai que worksheet change n'intercepte pas les changements de valeur par formule, du coup c'est... problématique.

Par contre, si tu changesta cellule AK12, ou une cellule dont elle dépend, il faudrait simplement que tu interceptes ce changement là pour ensuite revenir à la cellule AD13 qui appelle cette valeur, il suffirait alors de mettre worksheet change un peu partout, et de passer le code que l'on a fait dans un module pour qu'il puisse être appelé de n'importe où dans le projet VBA...

Ce sera plus simple de comprendre ce que tu souhaites quand même avec un fichier, tu dois être largué par ce que je raconte ça se trouve

Rechercher des sujets similaires à "afficher userform lors calcul indivuduelles ciblees"