Report de données d'une cellule contenant une formule

Bonjour à tous,

Je souhaiterais reporter les données d’une cellule (cellule S2) d’un onglet vers la colonne H d’un autre onglet. Problème : la cellule d’origine contient une formule, et je souhaite donc en réalité reporter le résultat de la formule.

La formule de la cellule d’origine (cellule S2) est la suivante : =SI(ET(S5="";S6="";S7="");"";SI(OU(S5="En attente";S6="En attente";S7="En attente");"En attente";"OK"))

Le codage pour reporter la donnée de la cellule d’origine vers la cellule de destination est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

'permet de remonter les infos de la feuille Client à la feuille Recap

If Not Intersect(Target, Range("S2")) Is Nothing Then

Dim Nom As String, Num As Long, adresse As Range

Nom = ActiveSheet.Name

Num = ActiveSheet.Range("C9").Value

Set adresse = Sheets("Recap_dossiers").Range("C:C").Cells.Find(Num)

Sheets("Recap_dossiers").Range("H" & adresse.Row).Value = Sheets(Nom).Range("S2").Value

End If

End Sub

Le problème de cette macro est qu’elle fonctionne si il y a du texte saisi dans S2 mais pas avec la formule.

Merci d'avance si quelqu'un peut m'apporter son aide.

Bonjour,

L'événement Worksheet_Change survient lorsque la valeur de la propriété Value change, que la modification résulte de l'exécution du code ou d'une action de l'utilisateur dans l'interface, mais pas lors d'un re-calcul de la cellule.

il faudrait utiliser l'événement Worksheet_Calculate

re,

est ce que les cellules S5, S6 et S7 contiennent aussi des formules ?

Bonjour Isabelle,

Les cellules S5, S6 et S7 ne contiennent pas de formule. Ce sont des cellules avec Liste de choix : soit vide, soit "En attente", soit "OK".

Juste une précision : la macro fonctionne très bien si il y a du texte dans S2. Le texte de S2 se reporte bien dans la colonne H de l'autre onglet, y compris si je modifie ce texte, ce qui est très pratique.

Bonjour,

une possibilité, tu pourrais utiliser l'événement change des cellules S5:S7

Private Sub Worksheet_Change(ByVal Target As Range)
'permet de remonter les infos de la feuille Client à la feuille Recap
Dim Nom As String, Num As Long, adresse As Range
If Not Intersect(Target, Range("S5:S7")) Is Nothing Then
    Nom = ActiveSheet.Name
    Num = ActiveSheet.Range("C9").Value
    Set adresse = Sheets("Recap_dossiers").Range("C:C").Cells.Find(Num)
    If Not adresse Is Nothing Then
       Sheets("Recap_dossiers").Range("H" & adresse.Row).Value = Sheets(Nom).Range("S2").Value
    Else
        MsgBox "La valeur de la cellule < C9 > n'a pas été trouvée"
    End If
End If
End Sub

Bonjour Isabelle

Ca fonctionne à merveille !

Un immense merci !

Rechercher des sujets similaires à "report donnees contenant formule"