Copier cellule de la page précédente

Bonjour,

Malgré mes longues recherches, je n'arrive pas à trouver chaussure à mon pied. Je poste donc ma demande.

J'ai un document de 52 pages (1 année divisée en semaines) où ma case "Solde début de semaine" (F15) doit récupérer le contenu de la case "Solde fin de semaine" (F16) de la page précédente. Il en va de même pour la case A4 qui doit reprendre A10+1 de la feuille précédente, et pour la case E1 qui doit juste s'incrémenter de 1 par page.

J'aimerai faire ceci pour créer un modèle que je peux utiliser chaque année, en ne mettant en "dur" les cases E1, B4 et F15 que la première semaine.

J'ai bien trouvé la formule "=('Sem (1)'!F16)" mais il faudrait modifier 153 formules manuellement pour arriver au résultat voulu :/

Pour vous aider à conceptualiser tout ça, je joins mon document source.

https://drive.google.com/file/d/0BxJG3Ke4ATBYSk9IdkVTczhSTHM/edit?usp=sharing.

Merci d'avance !

Bonjour,

Proposition avec une fonction personnalisée :

Function indirectOffset(offsetFeuille As Long, Optional offsetLigne As Variant, Optional offsetColonne As Variant) As Variant
    'Est-on dans le classeur de la fonction ?
    If Application.Caller.Parent.Parent.Name <> ActiveWorkbook.Name Then Exit Function

    Application.Volatile
    If ActiveWorkbook.Name = ThisWorkbook.Name Then
        If Not IsMissing(offsetLigne) And IsMissing(offsetColonne) Then
            indirectOffset = Sheets(Application.Caller.Worksheet.Index + offsetFeuille).Range(offsetLigne)
        Else
            indirectOffset = Sheets(Application.Caller.Worksheet.Index + offsetFeuille).Range(Application.Caller.Address).Offset(offsetLigne, offsetColonne)
        End If
    End If
End Function

Ex syntaxe :

=indirectOffset(-1)

fournir la donnée située sur la feuille précédente, même ligne, même colonne.

=indirectOffset(-2;"$B$4")

fournir la donnée située 2 feuilles à gauche, cellule $B$4

=indirectOffset(1;0;3)

fournir la donnée située sur la feuille suivante, même ligne, 3 colonnes à droite.

Voir PJ

eric

Bonjour Eriic,

Il semblerait que ce soit très exactement ce dont j'ai besoin. Par contre, je n'ai encore jamais joué avec les macros dans Excel, je vais regarder ça de plus près et reviendrai vers toi si je ne m'en sors pas. Merci beaucoup dans tous les cas !

Il faut coller la fonction personnalisée dans un module Standard de ton classeur.

Alt+F11 pour ouvrir l'éditeur VBE.

Clic-droit sur le projet à gauche pour ajouter un module.

Si tu dois être amené à déplacer les feuilles n'oublie pas d'ajouter le code présent dans le module Feuil3 dans tous les modules feuille ayant la fonction (ou bien, plus simple mais il ne faudra pas oublier dans 6 mois, tu fais F9 pour forcer la mise à jour).

eric

C'est exactement ce que je recherchais, merci mille fois ! Explications très claires et réponse rapide, tu es formidable :p

Petit oubli :

Vu que la fonction est volatile, ajoute tout au début :

'Est-on dans le classeur de la fonction ?
If Application.Caller.Parent.Parent.Name <> ActiveWorkbook.Name Then Exit Function

sinon excel se mélange les pinceaux si tu travailles dans un autre classeur ouvert.

eric

Rechercher des sujets similaires à "copier page precedente"