Voilà, j'ai créer un petit classeur excel dans lequel j'utilise une fonction perso qui permet d'aller rechercher le contenue d'une cellule de la feuille précédente que voici :
Code:
Function CellFeuillPrec(cell As String)
Dim name As String
If Not ActiveSheet.Index = 1 Then name = Worksheets(ActiveSheet.Index - 1).name
CellFeuillPrec = Sheets(name).Range(cell).Value
End Function
Pour utiliser ma fonction je rentre dans mes cellules je rentre ceci par exemple :
Code:
=CellFeuillPrec("E"&ROW(A10))
J'utilise le "&ROW(A10)" afin de pouvoir "tirer vers le bas" ma formule et que ça s'incrémente. (ROW et non LIGNE car je suis sur la version anglaise).
Alors mon problème c'est que si je change la valeur de la cellule E10 (pour reprendre mon exemple) de la feuille précédente, et bah cellule où ma formule est rentrée ne s'actualise pas, la valeur ne change pas.
J'ai tout essayé (dans mes connaissances) F9, shift+f9, fermer le classeur puis le rouvrir. Le seul moyen est de rentrer dans l'eddition de la formule et de la revalidé. Ce qui est plutôt embêtant.
Si quelqu'un a déjà eu ce problème et qu'il a une solution !
Vous verrez que si vous changez une valeur de la colonne F de la feuille Septembre 2012, celà ne se répercute pas dans la colonne E de la feuille Octobre 2012. Pour "actualiser" la formule, il faut changer la valeur concernée dans la colonne F de cette feuille. (En retapant la même valeur ça ne marche pas).
Je suis déjà en mode de calcul automatique sur mon excel.
Quand tu dis que tu changes en F et que ça modifie E, c'est sur la même feuille non?
Car moi c'est quand je modifie la feuille Septembre 2012 que ça ne se répercute pas sur la feuille Octobre 2012.
Tu te compliques inutilement la vie, il te suffit de transmettre en paramètre le n° de la ligne concernée comme dans l'exemple ci-dessous :
Code:
Function CellFeuillPrec(Ligne As Long) As String
Dim nom As String
If Not ActiveSheet.Index = 1 Then nom = Worksheets(ActiveSheet.Index - 1).name
CellFeuillPrec = Sheets(nom).Range("E" & Ligne).Value
End Function
et de modifier tes appels à la procédure comme suit :
Code:
=SIERREUR(CellFeuillPrec(LIGNE(A7)) +F7;"")
Le "SIERREUR" est là pour empêcher d'afficher l'erreur dans les cellules.
Espérant avoir aidé.
Cordialement.
PS : j'ai également modifié la variable du nom de feuille comme l'a si justement souligné Pascal.
@Papou-Net : Avec ta fonction me pose le même problème, si je modifie une valeur dans la feuille Septembre 2012, cela ne se répercute pas sur la feuille Octobre 2012.
@Pascal : Avec cette aastuce et cette formule, tout fonctionne parfaitement!! Je vais essayer d'appliquer celà à mon fichier original et je vous dis ce qu'il en ai
Merci beaucoup PascalXDL et Papou-Net de m'avoir aidé et permis de faire fonctionner mon programme au poil !!!
Faut juste que je fasse gaffe à bien nommer mes feuilles dans le format "Septembre 2012", je vais donc changer ma macro qui crée mes nouvelles feuilles afin de les nommer automatiquement et que les utilisateurs ne fasse pas d'erreurs de frappe ^^!
Pascal a résolu le problème mais, comme entretemps j'ai continué d'y plancher et comme ma solution est différente, je la joins.
J'ai remplacé la fonction par un procédure nommée "MaJFeuilles" qui se charge de réactualiser toutes les feuilles à chaque modification sur une des cellules de la colonne F.
J'en ai profité pour simplifier la macro de copie des feuilles.