Formules non recalculées

simraill

XLDnaute Occasionnel
Bonjour tout le monde,

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 :D!

Merci,
Simon
 

simraill

XLDnaute Occasionnel
Re : Formules non recalculées

RE :

La solution de Papou-Net est peut être un peu trop complexe à modifier pour mon niveau :mad:!!

Du coup je vais rester sur celle de Pascal !

Mais je ne m'en sort pas avec les formats de date :

Comment faire en VBA pour que à chaque nouvelle feuille la macro la renomme par le mois suivant au format "Octobre 2012"
Et pour incrémenter la cellule contenant la date du mois d'un mois? (J'arrive à incrémenter uniquement les jours).

Sinon j'avais pensé passer une autre cellule qui contiendrais la date du mois suivant que je j'utiliserais pour connaitre le mois suivant et la convertirais pour avoir le nom du mois.
Mais je pense qu'il doit bien y avoir une solution en vba non?

Simon
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Formules non recalculées

RE

Modif de ta création de feuille pour que cela soit en automatique
 

Pièces jointes

  • Copie de Copie de exemple simraill.xlsm
    44.2 KB · Affichages: 34
  • Copie de Copie de exemple simraill.xlsm
    44.2 KB · Affichages: 29
  • Copie de Copie de exemple simraill.xlsm
    44.2 KB · Affichages: 30

Papou-net

XLDnaute Barbatruc
Re : Formules non recalculées

Pour Papou-Net il faut aussi que le recalcul se fasse en cas de modif de la colonne E de la première feuille

RE Pascal,

Voilà qui est réparé.

Amicalement.

PS : je te remercie pour ton compliment, venant de toi, il me touche tout particulièrement.
 

Pièces jointes

  • Copie 01 de exemple simraill.xlsm
    31.5 KB · Affichages: 20

simraill

XLDnaute Occasionnel
Re : Formules non recalculées

:eek:Comment arrivez vous à faire ça en si peu de temps ?!! L'expérience j'imagine ^^!

Bon tout marche au poil, plus rien à retoucher.
J'aurais juste deux question pour ma comprehension personnelle :

-Comment faites vous pour vider le contenue des cellules de la colonne F?
Code:
 .Range("M7:M500,P7:P500,S7:S500").ClearContents
Il n'y a rien dans cette ligne de code concernant la plage F7:F500 :confused:

-A quoi sert cette ligne suivante :
Code:
For Each c In .Range("D7:D500").SpecialCells(xlCellTypeConstants)
        c.Offset(0, 2).Value = ""
      Next
 

Papou-net

XLDnaute Barbatruc
Re : Formules non recalculées

:eek:Comment arrivez vous à faire ça en si peu de temps ?!! L'expérience j'imagine ^^!

Bon tout marche au poil, plus rien à retoucher.
J'aurais juste deux question pour ma comprehension personnelle :

-Comment faites vous pour vider le contenue des cellules de la colonne F?
Code:
 .Range("M7:M500,P7:P500,S7:S500").ClearContents
Il n'y a rien dans cette ligne de code concernant la plage F7:F500 :confused:

-A quoi sert cette ligne suivante :
Code:
For Each c In .Range("D7:D500").SpecialCells(xlCellTypeConstants)
        c.Offset(0, 2).Value = ""
      Next

RE simraill,

C'est justement la deuxième ligne citée qui efface la colonne F.

Explication :
Code:
c.offset(0,2).value=""
dit au code d'effacer la cellule décalée (offset=décalage) de 0 ligne (0) et de 2 colonnes (2).

(c appartient à la colonne D, donc décalage de 2 colonnes = F).

Si tu sélectionnes Offset et que tu cliques sur F1, tu auras toutes les explications nécessaires.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Formules non recalculées

D'accord,
Qu'elle en est l'utilité? Pourquoi ne pas tout simplement rajouter .Range("F7:F500,M7:M500,P7:p500,S7:S500").ClearContents ??

J'ai dû séparer le traitement de la colonne D car l'effacement global de la colonne génère une erreur dans la procédure MaJFeuilles. On transmet effectivement la référence de la cellule à traiter et si c'est une plage de cellules ça conduit au plantage. Tu auras d'ailleurs remarqué que la colonne D est traitée au moyen d'une boucle pour chaque cellule individuelle, contrairement aux autres colonnes que j'ai traitées globalement pour diminuer le temps d'exécution.

Tu peux, pour t'amuser ou pour t'aider à comprendre, intégrer cette colonne aux autres et tu constateras toi-même l'anomalie. C'est toujours utile de faire sa propre expérience, notamment pour répondre à ta question précédente : "comment faites-vous...?"

Cordialement.
 

Discussions similaires

Réponses
1
Affichages
170
Réponses
0
Affichages
155

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop