Copie de formules

Fermé
caly.mpl Messages postés 3 Date d'inscription samedi 18 avril 2015 Statut Membre Dernière intervention 18 avril 2015 - 18 avril 2015 à 10:23
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 19 avril 2015 à 10:58
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
A voir également:

7 réponses

ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié par ozone_ le 18/04/2015 à 10:27
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
caly.mpl Messages postés 3 Date d'inscription samedi 18 avril 2015 Statut Membre Dernière intervention 18 avril 2015
18 avril 2015 à 13:56
Merci pour votre réponse
Voici le lien du fichier

https://www.cjoint.com/?0DsogrlY4YE
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
18 avril 2015 à 13:28
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
caly.mpl Messages postés 3 Date d'inscription samedi 18 avril 2015 Statut Membre Dernière intervention 18 avril 2015
18 avril 2015 à 13:59
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
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
18 avril 2015 à 17:03
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 18/04/2015 à 17:18
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
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
18 avril 2015 à 17:18
Ou aussi :

Function OngletPrecedent()
OngletPrecedent = Sheets(Sheets.Count - 1).Name
End Function
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023
Modifié par michel_m le 18/04/2015 à 17:20
ca te donne l'avant dernier onglet ?....
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
18 avril 2015 à 17:20
Ah ouais, là c'est l'onglet précédent de la feuille sélectionné !
C'est stylé, à garder sous le coude =o
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023
18 avril 2015 à 17:24
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
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
18 avril 2015 à 17:26
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
18 avril 2015 à 17:26
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
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
18 avril 2015 à 21:59
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
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 19/04/2015 à 08:11
Pourquoi ne pas employer la fonction de JB ???
0
caly.mpl > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
19 avril 2015 à 08:33
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
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
Modifié par Mike-31 le 19/04/2015 à 09:46
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
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
Modifié par Mike-31 le 19/04/2015 à 11:26
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