Liaison entre ligne et feuille

Bonjour,

Une fois de plus je reviens sur ce forum qui m'a bien aidé la dernière fois.

Cette fois, je voudrais écrire une macro qui:

Dans la feuille1 appelée "Synthèse":

--> Lorsque tu cliques sur le bouton de la macro :

- une ligne est créee à la fin du tableau de la feuille "Synthèse" ( entre l'avant dernière et la dernière ligne) avec les formules

de la ligne précédentes (voir fichier joint)

--> lorsque la cellule Ai de la ligne créee est remplie dans le tableau de la feuille "Synthèse":

- une nouvelle feuille est créee (du même type que la feuille 2 ou AFFAIRE) dans le même classeur avec comme nom,

la valeur de la cellule Ai (un copier coller de la feuille " AFFAIRE" avec les formules uniquement)

- les formules de la ligne créee dans le tableau de la feuille "Synthèse" sont mises à jour ( à savoir : les valeurs de certaines

cellules de la ligne créee sont celles de la feuille créee).

Toute aide sera la bienvenue.

Ci-joint le fichier excell avec un code que j'ai testé, mais qui n'est pas du tout ce que j'attends.

Salut,

J'ai une solution à te proposer, mais avec quelques contraintes.

Tout d'abord il faudrait laisser une ligne vide avant la ligne "Total".

Ensuite comme tu le demandes, une nouvelle ligne est créée si tu cliques sur le bouton "Nouvelle ligne", avec déjà une première formule comme exemple dans la colonne E. A voir ce qu'il devrait y avoir de plus.

Puis si tu complètes la cellule de la colonne A de cette nouvelle ligne, une feuille est créée - sur la base d'un nouveau modèle vierge (nommé justement Modèle) - et renommée selon le texte de cette cellule. Ce modèle devrait être préparé en fonction de tes besoins et pourrait être caché. Pour l'instant il n'y a qu'une seule formule en C1 comme exemple.

Après la création de cette feuille, toujours comme exemple de ce qui est réalisable, une formule y faisant référence est placée dans la colonne R de la ligne concernée de la feuille SYNTHESE.

Merci de me dire si ce début va dans le sens souhaité.

Cordialement.

Bonjour,

Je commencerai par te remercier de m'avoir donné un début de solution et de m'excuser de mon abscence.

Le code que tu 'as donné marche super bien, c'est vraiment un bon début à ma solution, mais quelques imperfections liées à mon utilisation se posent:

- Il faudrait que la ligne qui se créee dans le tableau de la feuille "Synthèse" respecte la mise en forme et les formules de la ligne précédente mais appliquées à la nouvelle feuille créee (Voir la feuille Synthèse pour formule).

- Que le ligne "TOTAL" soit mise à jour après insertion d'une nouvelle ligne dans le tableau de la feuille "Synthèse"

- Que le nom entré dans la ligne créee dans la feuille "Synthèse" soit celui de l'entête de la nouvelle feuille créee (voir P.J, le modèle est AFFAIRE).

- Pourquoi est il indispensable laisser une ligne vide avant la ligne total ?

Ma dernière question est de savoir comment manipuler une feuille excell en gardant les formules de celles-ci (par exemple, la feuille AFFAIRE mon modèle).

Merci de tous précieux élements de réponse.

Salut,

A lire tes commentaires, je me demande si tu as bien lu mes informations et si tu as bien compris le fonctionnement de mon fichier.

Comme je trouvais que ça ne gênait assurément pas d’avoir une ligne vide au fond et que ça simplifiait absolument mon code, je me suis permis de te proposer cette solution de facilité. Si cette ligne vide te gêne absolument, je peux trouver une autre solution.

Tu dis qu’il faudrait que la ligne créée par le bouton respecte absolument la mise en forme de la ligne précédente. D’après moi la mise en forme est absolument respectée (même grandeur de ligne, mêmes bordure, etc.).

Par contre c’est vrai que je n’ai inscrit qu’une seule formule dans cette nouvelle ligne, comme simple exemple. J’avais cependant indiqué « A voir ce qu'il devrait y avoir de plus ».

Tu dis également que cette nouvelle ligne devrait contenir les formules appliquées à la nouvelle feuille créée, mais cette nouvelle feuille n’est pas encore créée à ce moment-là

Par contre je t’ai indiqué qu’en inscrivant un texte dans la colonne A de la nouvelle ligne créée, ça créait en plus une nouvelle feuille - sur la base de ma feuille « Modèle » et renommée selon le texte inscrit ci-dessus - et que ça plaçait une formule dans la colonne R de la ligne correspondante de la feuille « Synthèse », faisant référence à la nouvelle feuille.

Peux-tu me confirmer que tout ça fonctionne correctement ? Soit

1) que tu as cliqué sur le bouton « Nouvelle ligne » et qu’une nouvelle ligne a été créée avec une formule dans la colonne E ?

2) Que tu as placé un texte dans la colonne A de la nouvelle ligne créée et que ça a créé une nouvelle feuille avec ce texte comme nom d’onglet ?

3) Qu’une nouvelle formule a été inscrite sur la feuille « Synthèse », au niveau de la dernière ligne créée, dans la colonne R, formule qui fait bien référence à la nouvelle feuille créée ?

Ensuite tu voudrais apparemment utiliser ta feuille « Affaire » en remplacement de mon modèle, la feuille nommée « Modèle ». C’est relativement simple à réaliser ; tu renommes une copie de ta feuille « Affaire xxxx » et tu vides toutes les données de base, en n’y laissant que les formules utiles à toutes les futures feuilles. Un peu comme j’avais placé une formule de base dans ma feuille « Modèle », de manière à ce que cette formule soit à disposition sur toutes les nouvelles feuilles créées automatiquement par la suite par la macro en place. Lorsque tu m’auras fourni ta feuille modèle, je modifierai la macro en conséquence (à moins que tu t’en sortes tout seul).

A te relire.

Salut

J'ai bien lu ton message et je peux te dire que j'ai bien regardé ce qe tu m'as envoyé.

Je te confirme que:

1)- Lorsque je clique sur le bouton "Nouvelle ligne", une ligne est créee dans le tableau de la feuille "Synthèse" avec une formule dans la colonne R (Mais la mise en forme ne suit pas du tout).

2)- Lorsque je place du texte dans la colonne A de la nouvelle ligne créee, une nouvelle feuille est créee avec ce texte comme nom de l'onglet.

3)- Une nouvelle formule est créee sur la feuille "Synthèse" au niveau de la dernière ligne créee dans la colonne R et fait référence à la nouvelle feuille créee.

Voici mes préoccupations:

1)- La nouvelle ligne créee dans le tableau de la feuille "Synthèse" est est le récapitulatif de la nouvelle feuille qui sera créee. Donc les formules de la ligne précédente dans le tableau de la feuille "Synthèse" doivent se retrouver sur la nouvelle ligne avec comme référence la nouvelle feuille créee.

2)- Les formules de la ligne"TOTAL" de la feuille "Synthèse" doivent prendre en compte les valeurs de la nouvelle ligne créee

3)- Y'a il une façon d'éffacer mon modèle pour garder les formule sur la feuille? Quand j'efface, toutes les formules s'effacent.

4)- Il doit avoir une liaison entre le nom entré dans la colonne A du tableu de la feuille "Synthèse" et le nom de l'affaire sur la nouvelle feuille créee. (Voir modèle "AFFAIRE").

Pourrais tu me commenterton code suivant:

If Not Application.Intersect(Target, Range("A2:A" & ActiveCell.Row - 1)) Is Nothing Then

Sheets("AFFAIREl120").Copy After:=Sheets(1)

ActiveSheet.Name = Target

Sheets("SYNTHESE").Select

Cells(ActiveCell.Row - 1, 18).FormulaR1C1 = "=" & Target & "!R1C3"

Merci d'avance pour tes réponses et je suis disponible si tu as des interrogations.

Salut,

Concernant ta feuille modèle :

Rolony a écrit :

3)- Y'a il une façon d'éffacer mon modèle pour garder les formule sur la feuille? Quand j'efface, toutes les formules s'effacent.

J'avais tenté de te montrer comment créer un modèle avec ma feuille "Modèle". J'ai par exemple besoin d'une formule en C1 qui calcule le total des cellules A1 et B1 ; j'ai donc placé la formule =A1 + B1 dans la cellule C1.

Ainsi, sur toutes les feuilles créées à partir de ce modèle, la formule en C1 est déjà en place et si j'indique sur les copies de ce modèle des données en A1 et B1, un calcul se fera également.

Apparemment tu as commencé à réaliser un modèle semblable (tu as plein de formules non encore utilisées sur ta feuille "AFFAIREl120" qui ne demandent qu'à être utilisées par la suite. Alors lorsque tu m'écris : "3)- Y'a il une façon d'éffacer mon modèle pour garder les formule sur la feuille? Quand j'efface, toutes les formules s'effacent." je ne comprends pas très bien ce que tu veux dire. Selon l'exemple de ma feuille "Modèle", n'arrives-tu pas à effacer les données en A1 et B1 mais à ne pas effacer la formule en C1 ??

Rolony a écrit :

1)- Lorsque je clique sur le bouton "Nouvelle ligne", une ligne est créee dans le tableau de la feuille "Synthèse" avec une formule dans la colonne R (Mais la mise en forme ne suit pas du tout).

Quoi exactement dans la mise en forme ne suit pas ? Au niveau des bordures ? De la police de caractère ? De la hauteur de la ligne ? De la couleur du fond ? ????
Rolony a écrit :

4)- Il doit avoir une liaison entre le nom entré dans la colonne A du tableu de la feuille "Synthèse" et le nom de l'affaire sur la nouvelle feuille créee. (Voir modèle "AFFAIRE").

Veux-tu dire que si tu inscrits par exemple 133 dans la colonne A de la feuille " SYNTHESE", la nouvelle feuille devrait s'appeler "AFFAIRE 133" ???
Rolony a écrit :

Voici mes préoccupations:

1)- La nouvelle ligne créee dans le tableau de la feuille "Synthèse" est est le récapitulatif de la nouvelle feuille qui sera créee. Donc les formules de la ligne précédente dans le tableau de la feuille "Synthèse" doivent se retrouver sur la nouvelle ligne avec comme référence la nouvelle feuille créee.

Tu dis deux choses contradictoires dans ce texte. Tout d'abord tu dis que la nouvelle ligne est le récapitulatif de la nouvelle feuille QUI SERA CREEE et plus loin tu indiques que les formules de la ligne précédente dans le tableau de la feuille "Synthèse" doivent se retrouver sur la nouvelle ligne avec comme référence la nouvelle feuille CREEE.

Comme il n'est pas possible de faire référence dans des formules à une feuille qui n'est pas encore créée, je t'ai donc - depuis le début - proposé d'inscrire les formules nécessaires en deux étapes : Tout d'abord inscrire les formules déjà possibles lors de la création de la ligne (je ne t'en ai fourni qu'un seul exemple en précisant qu'on pouvait rajouter par la suite tout ce qui était encore nécessaire) puis inscrire après la création de la nouvelle feuille les formules qui ne sont pas possibles avant (là, de nouveau, je n'ai placé qu'une seule formule comme exemple, on verra par la suite tout ce qui manque).

Rolony a écrit :

2)- Les formules de la ligne"TOTAL" de la feuille "Synthèse" doivent prendre en compte les valeurs de la nouvelle ligne créee

C'est le plus petit de tes soucis. Réglons déjà le reste et on verra ça par la suite.

A te relire.

Salut,

Encore merci de prendre du temps pour me faire connaître des choses.

1)- Pour le modèle, je pense avoir compris ce que tu m'expliques. (donc, c'est réglé, je ferai un essai et je te dirai)

2)- Pour la nouvelle ligne qui se créee dans la feuille "Synthèse", c'est la mise en forme (Bordures) qui n'est pas identique à celle précédente.

3)- Le nom de l'affaire se trouve dans la feuille créee en entête et doit être le même que celui entré dans la colonne A du tableau de la feuille "Synthèse" et celui de la feuille créee ( je pense que c'est une formule à entrer entre les deux cellules).

4)- Pour les formules de la nouvelle ligne créee dans le tableau de la feuille "Synthèse" tu as raison (pour la chose et son contraire).

MAIS après avoir crée la nouvelle feuille, comment faire pour :

  • mettre les mêmes formules dans la ligne créee que celle de la ligne précédente mais en liaison avec la nouvelle feuille ?
  • mettre à jour la ligne "TOTAL" de la feuille "Synthèse" ?

Pourrais tu me commenter ce bout de code pour que je le comprenne et puisse l'adapter aux formules que je veux utiliser?

If Not Application.Intersect(Target, Range("A2:A" & ActiveCell.Row - 1)) Is Nothing Then

Sheets("AFFAIREl120").Copy After:=Sheets(1)

ActiveSheet.Name = Target

Sheets("SYNTHESE").Select

Cells(ActiveCell.Row - 1, 18).FormulaR1C1 = "=" & Target & "!R1C3"

Merci d'avance pour ton aide aussi précieuse.

Salut,

Je pense que l’on ne travaille pas sur le même fichier

J’ai repris le seul fichier que je t’ai fourni (le 4 septembre) et j’ai fait un essai. La mise en forme de la nouvelle ligne 7 sur l’image ci-dessous est bien exactement la même que celle de la ligne 6 (ou alors dis-moi quelles cellules sont différentes).

21 09
Rolony a écrit :

3)- Le nom de l'affaire se trouve dans la feuille créee en entête et doit être le même que celui entré dans la colonne A du tableau de la feuille "Synthèse" et celui de la feuille créee ( je pense que c'est une formule à entrer entre les deux cellules).

Pour l’instant mon code utilise le texte que tu inscris dans la colonne A de la feuille « Synthèse » afin de renommer la nouvelle feuille créée. Si tu veux rajouter ce même nom dans la cellule A1 de la nouvelle feuille créée sur la base de ton nouveau modèle «AFFAIREl120», il faut modifier la macro en conséquence. Mais je ne vais rien modifier du tout dans le fichier à ma disposition si tu travailles de toute façon sur un autre fichier.

Rolony a écrit :

4)- Pour les formules de la nouvelle ligne créee dans le tableau de la feuille "Synthèse" tu as raison (pour la chose et son contraire).

MAIS après avoir crée la nouvelle feuille, comment faire pour :

- mettre les mêmes formules dans la ligne créee que celle de la ligne précédente mais en liaison avec la nouvelle feuille ?

Exactement de la même manière que ce que j’ai fait dans mon premier exemple. Mais veux-tu que je le fasse ou travailles-tu sur un fichier parallèle ?
Rolony a écrit :

- mettre à jour la ligne "TOTAL" de la feuille "Synthèse" ?

Yvouille a écrit :

C'est le plus petit de tes soucis. Réglons déjà le reste et on verra ça par la suite.

Ou veux-tu le faire toi sur un fichier parallèle ?
Rolony a écrit :

Pourrais tu me commenter ce bout de code pour que je le comprenne et puisse l'adapter aux formules que je veux utiliser?

Grosso modo la ligne If Not Application.Intersect(Target, Range("A2:A" & ActiveCell.Row - 1)) Is Nothing Then indique que si la cellule utilisée n’est pas à l’intersection des cellules indiquées dans ce code, il ne faut pas déclencher la suite du code, autrement oui.

Donc si la cellule utilisée est comprise entre A2 et la cellule avant la cellule active de la colonne A - cellule activée par la partie précédente du code que tu n'as pas reproduite - il faut en plus exécuter :

Sheets("AFFAIREl120").Copy After:=Sheets(1) [copier la feuille AffaireI120 et placer cette copie avant la feuille (1)]

ActiveSheet.Name = Target [Donner à la nouvelle feuille créée - elle a été activée lors de sa création - le nom de la cellule cible

(= Target), donc la cellule dans laquelle tu as inscrit ton texte]

Sheets("SYNTHESE").Select [Sélectionner à nouveau la feuille Synthèse]

Cells(ActiveCell.Row - 1, 18).FormulaR1C1 = "=" & Target & "!R1C3" [Inscrire dans la colonne R de la feuille Synthèse une formule faisant référence à la nouvelle feuille créée. Le nom de la nouvelle feuille étant celui de la cible (ou Target), tu peux utiliser la variable Target afin de créer ta formule.]

CQFD

Salut

Au fait, j'arrive pas à exécuter ton fichier du 04 septembre, je n'ai fait que copier les codes et les coller dans un fichier à ma disposition , c'est peut être pour cela que j'ai ces petites irrégularités. Lorsque j'ouvre ce fichier, il y'a une fenêtre qui s'affiche et marque :"Impossible d'exécuter la macro".

Pourrais tu regarder encore ton fichier ou bien me coller les codes dans cette page?

Pourrais tu aussi faire toutes les préconisations sur le fichier que tu as et tu me l'envoies?

Merci

Bonjour,

Merci pour tes remerciements, mais c’est tout naturel que je le fasse, non ?

Mon fichier du 4 septembre fonctionne parfaitement. N’as-tu pas une option de sécurité au niveau des macros qui empêche d’ouvrir un fichier « étranger » ?

Rolony a écrit :

ou bien me coller les codes dans cette page?

Dans cette page de quoi ? Fais attention, tu es souvent extrêmement imprécis dans tes explications.
Rolony a écrit :

Pourrais tu aussi faire toutes les préconisations sur le fichier que tu as et tu me l'envoies?

De quel fichier parles-tu ? J’ai ton fichier du 4 septembre, mon fichier du 4 septembre et ton fichier du 19 septembre à disposition !!

De toute façon je n’ai pas trop l’envie de continuer à travailler dans le vide. Soit tu me fournis ton fichier réel (dans lequel tu peux remplacer les données sensibles si nécessaire) avec ta "Feuille-modèle" et on travaille là-dessus, soit on laisse tomber, non ?

Cordialement

Salut,

Je te joins le fichier sur lequel je travaille et espère que cela t'aidera. Le modèle à crée est une des feuilles du classeur (2 ou 3).

Merci et A+

23test.xlsm (53.88 Ko)

Salut,

Merci beaucoup pour ta réponse

Je n'ai pas trop l'impression que tu désires t'investir trop pour ton fichier Tu me fournis un fichier sans feuille "Modèle" (je veux dire un vrai modèle, avec des formules là où c'est nécessaire, mais sinon des cellules vides "à remplir") ; tu me laisses choisir "n'importe quelle feuille comme modèle" alors que je t'avais demandé plus de précision dans tes explications ; tu me fournis un fichier sur lequel les formules de la feuille "SYNTHESE" renvoient le résultat #REF! car tu as supprimé les feuilles correspondantes.

Malgré tout j'ai continué à vouloir d'aider et je te fournis le fichier ci-joint dans lequel j'y ai créé une feuille nommée "Modèle". Selon moi il faudrait y supprimer les données inutiles et n'y laisser que les formules utiles, mais bon ......

Je n'y ai laissé qu'une seule feuille "de production", ta feuille "1715 Et frasil".

Lorsque tu cliques sur le bouton "Nouvelle ligne" de la feuille "SYNTHESE", une nouvelle ligne est ajoutée. Pour l'instant, seul une formule dans la colonne E y est inscrite. A toi de dire s'il faut ajouter plus de formule (pour autant qu'elles ne fassent pas référence à la feuille à créer encore).

Lorsque tu inscris le nom de la feuille à créer dans la colonne A (ça devient la variable "Target"), une nouvelle feuille est créée sur la base de la feuille "Modèle", la variable "Target" est inscrit dans la cellule A1 de cette nouvelle feuille qui est elle-même renommée selon la variable "Target", des nouvelles formules sont inscrites dans les colonnes Q, R et S de la feuille "SYNTHESE" de la ligne concernée et des formules "SOMME" sont inscrites dans la ligne des totaux, dans les colonnes B, C, D, E, Q, R et S.

Vu ta participation, je ne pense pas qu'il est possible de faire mieux pour l'instant.

Comment veux-tu continuer ???? Dans tous les cas, si cette discussion t'ennuie, mets-y fin

Amicalement.

19rolony-test-v1.xlsm (54.56 Ko)

Salut,

J'ai testé ton fichier et il fonctionne super bien, exactement ce que j'attendais. Je suis désolé de t'avoir fait un peu poireauter, mais bon j'ai appris assez de choses et je suis content que cet échange ait duré ainsi.

Il ne me reste qu'à cocher que c'est résolu et à te remercier encore pour ta patience.

Je pense que tu ferais un bon prof.

Merci et à bientôt

Rechercher des sujets similaires à "liaison entre ligne feuille"