Copie de formules

caly.mpl Messages postés 3 Statut Membre -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour

Dans une cellule de la feuille nommée 02 (pour février) j'ai cette formule : = 'feuil 01'!$A$2 (la feuille 01 comportant des données à transférer sur la feuille 02)
Si je copie cette formule dans une feuille 04 reprenant les données de la feuille 03
, elle va garder rester la même et donc me transférer les données de la feuille 01.

comment changer automatiquement la référence de la feuille

passer de ='feuill01'!$A$2 à 'feuill03'!$A$2 pour 1 cellule c'est pas compliqué mais pour des dizaines c 'est fastidieux surtout que j'ai 12 feuilles

Merci

7 réponses

  1. ozone_ Messages postés 1823 Statut Membre 511
     
    Salut,

    Peut on avoir un exemple (avec des données fictives) de ton classeur ?
    Joint le sur : https://www.cjoint.com/

    Merci.

    1f u c4n r34d th1s u r34lly n33d t0 g37 l41d !
    0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    l'idée pour la cellule A2 feuille 1 serait
    =INDIRECT(STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)&"!A2")

    si cette formule doit être incrémentée depuis la deuxième ligne, la formule serait
    =INDIRECT(STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)&"!A"&LIGNE())

    et copiée sur la feuille 2 le numéro de l'onglet s'actualisera
    pour avoir une formule adaptée, commence par répondre à Ozone et poste un exemple de fichier
    0
    1. caly.mpl Messages postés 3 Statut Membre
       
      ouahou !
      Je vais etudier cette réponse mais il va me falloir du temps car je me suis toujours débrouillée seule pour en arriver à ce que je sais faire avec excel et là c'est un cran plus haut
      Voici le lien que j'ai envoyé à ozone
      https://www.cjoint.com/?0DsogrlY4YE
      0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    A mon tour OUAHOU! ma formule ne peut s'appliquer parce que changement de nom d'onglet PRESENCE avec mois et pas de progression linéaire exemple en E4 on a ='PRESENCE 01'!$C$3 et en E5 on passe en H ='PRESENCE 01'!$H$3.

    Enfin cela n'est pas insurmontable mais bonsoir le formule. Enfin de mon coté je regarde ce qui peut être fait
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    excusez l'incrute (bonjour Mike, ca va ?)
    Il existe une fonction personnalisée crée par jacques boisgontier pour donner le nom de l'onglet précédent
    Dans un module

    Function OngletPrecedent()
    OngletPrecedent = Sheets(Application.Caller.Parent.Name).Previous.Name
    End Function


    et la formule devient
    =INDIRECT(ongletprecedent()&"!A2")
    Le site de jacques
    http://boisgontierjacques.free.fr/
    site incontournable à mettre dans ses favoris

    Michel
    0
    1. ozone_ Messages postés 1823 Statut Membre 511
       
      Ou aussi :

      Function OngletPrecedent()
      OngletPrecedent = Sheets(Sheets.Count - 1).Name
      End Function
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > ozone_ Messages postés 1823 Statut Membre
       
      ca te donne l'avant dernier onglet ?....
      0
    3. ozone_ Messages postés 1823 Statut Membre 511
       
      Ah ouais, là c'est l'onglet précédent de la feuille sélectionné !
      C'est stylé, à garder sous le coude =o
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > ozone_ Messages postés 1823 Statut Membre
       
      Que veux tu dire par
      Ah ouais, là c'est l'onglet précédent de la feuille sélectionné !
      C'est stylé, à garder sous le coude =o
      ?
      0
    5. ozone_ Messages postés 1823 Statut Membre 511
       
      Moi ma formule donne l'avant dernier onglet du classeur,
      ici, ça donne l'avant dernier onglet par rapport à la feuille où l'on est.

      Si j'ai bien saisie le truc
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,
    Salut Michel, oui ça va merci j'espère pour toi également.
    je viens juste de trouver ce merveilleux code qui fonctionne parfaitement et essaye de l'adapter au fichier de Ozone
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    vu la complexité de ton fichier ou on passe de C3 à H3 puis à M3 etc
    il est difficile de créer une incrémentation alors je te propose de créer dans le module du Visual Basic (Alt et touche de fonction F11)
    Insertion/Module
    coller ce code

    Function OngletPrec(cell As Range) As Variant
    Application.Volatile
    Var = Sheets(ActiveSheet.Index - 1).Range(cell.Address)
    OngletPrec = Sheets(ActiveSheet.Index - 1).Range(cell.Address)
    End Function

    revenir sur ta feuille Janvier et clic en E4 et onglet Formules/module Bibliothèque de Fonctions/Inserer une fonction
    Pointer sur OngletPrec et saisir dans cell C3

    ensuite dans chaque cellule copier cette formule que tu as en E4 =OngletPrec(C3) reste plus qu'a modifier l'adresse dans chaque formule collée, exemple en E5 modifier =OngletPrec(C3) comme ceci =OngletPrec(H3)
    une fois l'onglet JANVIER terminé efface l'onglet FEVRIER et faire un copier de la feuille JANVIER et Coller sur l'onglet FEVRIER, puis sur mars etc ... intercaler les feuilles PRESENCE

    revenir dans le visual Basic, double clic sur Thiswokbook et coller ce code

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Calculate
    End Sub
    0
    1. caly.mpl
       
      Salut

      Petite rectification le fichier est à moi caly.mpl et pas à ozone. Il risque de ne pas comprendre si tu lui réponds.
      Bon à ce ue je vois vous etes 10 0000000000000000000 fois plus calé que moi sur excel.
      Je vais essayer de me dépatouiller avec tout ça à faire mais je crois que cela va me prendre plus de temps que de changer le 01 de ma formule en 02, pu 03 puis ................................
      C'est pas grave j'aurai au moins appris quelque chose de plus sur excel
      Quand vous metttez : colle ce code, il faut coller tout le praragraphe que vous avez notez en dessous?

      Merci
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Pourquoi ne pas employer la fonction de JB ???
      0
      1. caly.mpl > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour
        Vous n'avez peut etre pas vu mon fichier
        Complexe d'après Mike
        J'ai essayé votre formule cela ne fonctionne pas
        Et celle de Mike non plus *Je pense que cela vient du fait que je n'ai pas la fonction "ongletprec"
        Mike me fait faire une copie d' un code dans le Visual Basic mais je pense qu'il a oublié de me dire ce qu'il fallait en faire une fois le code copié (peut etre cela sert-il a créer la fonction ?????)
        Je suis plus que novice par rapport à vous alors c'est un peu du chinois même si j'essaie de comprendre.
        Je suis allée sur le site de boisgontier et il est fait pour des calés en excel.
        Je ne connais pas tout ce langage "english".......
        Merci en tout cas de vos réponse
        0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    C'est bien à toi Caly que je m'adresse et travaille sur ton fichier.

    modifier tes formules est rapide et Excel possède des outils puissants pour travailler simplement et rapidement, j'ai mis à jour l'onglet JANVIER et copié sur l'onglet FEVRIER et créé l'onglet MARS à toi de continuer.
    Pour cela ouvre le Visual Basic (Alt et F11) double clic sur Thiswokbook et tu verras ces codes
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Calculate
    End Sub

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Calculate
    End Sub

    saisir une apostrophe devant chaque Calculate comme cela 'Calculate ce qui aura pour but de neutraliser la fonction et te faciliter l'intervention

    revenir sur Excel et créer tous les onglets PRESENCE et MOIS sans ne mettre aucune données dans les feuilles, les laisser vierge, ensuite pour prendre en compte les formules et mise en page, activer l'onglet PRESENCE 01 et cliquer sur le module juste au dessus de l'en tête de ligne 1 et à gauche de l'en tête de colonne A, tu remarqueras une petite flèche en bas vers la droite, la page se sélectionnera dans son ensemble, clic droit Copier aller sur une feuille PRESENCE vierge clic droit sur A1 et Coller, aller sur un autre onglet PRESENCE vierge clic droit sur A1 et Coller ainsi de suite pour créer toutes les feuilles PRESENCE
    recommencer pour les feuilles MOIS

    revenir dans la Thiswokbook et supprimer les deux apostrophes

    cela doit te prendre une dizaine de minutes max, si les cellules sont hachurées, il suffit de déplacer la cellule active pour que ton fichier s'actualise dès lors que tu auras supprimé l'apostrophe devant les Calculate
    https://www.cjoint.com/c/EDtj1ST3SpT
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      Re,

      Ps: prend plutôt ce fichier, dans le code j'ai laissé trainer une ligne inutile
      ou supprime cette ligne
      Var = Sheets(ActiveSheet.Index - 1).Range(cell.Address)

      https://www.cjoint.com/c/EDtllAVhqUM
      0