Copier et coller par VBA valeur feuille précédente de la dernière feuille

Albatros86

XLDnaute Nouveau
Bonjour,
comment ca va la compagnie ? ;)

Je cherche désespérément une solution concernant un collage avec liaison de plusieurs cellules dans un classeur excel. Sur ma feuille B (peu importe le nom), dans des cellules nommées, j'aimerai un collage avec liaison des données de certaines cellules nommées de la feuille précédente (peu importe le nom), ainsi qu'un collage avec liaison des données de certaines cellules nommées de vers des cellules nommées de la feuille suivante (peu importe le nom).

Ma question est, peut-on créer une formule dans telle ou telle cellule de la feuille B pour copier les valeurs de telle ou telle cellule de la feuille A ? Ou dois-je réaliser un script VBA, au quel cas, je ne sais absolument pas comment m'y prendre. Aie aie aie.

Je ne sais pas si je suis clair... Est-ce que l'un d'entre vous aurait un début de réponse, je cherche en vain depuis des semaines, à tester toute sorte de solutions, bien que à force de chercher mes lacunes en excel s'amenuisent.

Toute belle soirée étoilées à vous...
 
Dernière édition:

Xwprft

XLDnaute Junior
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Bonsoir Albatros86,

Je ne suis pas sur de vraiment avoir compris.
c'est pour ça qu'on conseille très très très fortement de toujours joindre un fichier qui permet de présenter son besoin.
Même si on ne sait pas comment faire marcher son truc (et c'est pour ça que le forum existe) on peut mettre des données et du texte pour expliquer.

Je te propose donc quelque chose en fonction de ce que j'ai compris.
Si ça ne répond pas à ton besoin, essaye de préciser ce que tu veux.

A+
 

Pièces jointes

  • collage avec liaison.xlsx
    16.8 KB · Affichages: 76

Albatros86

XLDnaute Nouveau
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Hello Xw
Merci pour ta rapide réponse. Effectivement, avec un fichier il sera plus simple d'exposer mon problème.
La solution de collage par liaison, que je connais, n'est aps adaptée à ce que je recherche. Je m'explique :
Dans le fichier excel annexe, tu trouvera deux feuilles : Ancrage, Structuration. Chaque feuille est composée de 3 pages. C'est la dernière page de chacune de ces feuilles qui m'intéresse. Sur cette dernière page il y a un premier tableau "Objectifs du précédents bilan" et un deuxième tableau "Objectifs à réaliser pour le prochain bilan. Par exemple, sur la feuille structuration, j'aimerai 1) faire une liaison dans le tableau "objectifs du précédents bilan" avec le tableau "Objectifs à réaliser pour le prochain bilan" de la feuille précédente. 2) toujours sur structuration, j'aimerai faire une liaison dans le tableau "Objectifs à réaliser pour le prochain bilan" avec le tableau "Objectifs du précédent bilan" de la feuille suivante.

Le problème est que au cours de l'année viennent s'ajouter à la suite d'autre bilan (feuille modèle prédéfinie.) Donc je ne peux faire de liaisons avec le nom de la feuille précédente ou suivante, car la feuille suivante peut être soit ancrage (2), soit structuration (2), etc... . Mon problème réside dans ce point.

Je cherche donc un moyen de réaliser des liaisons avec non pas le nom de la feuille précédente/suivante.

Comme début de piste non concluante, j'ai défini un nom avec une formule qui permet de lister les feuilles dès le changement de place ou dès la création avec le code suivant ListeFeuille
Code:
=DROITE(LIRE.CLASSEUR(1+0*MAINTENANT());NBCAR(LIRE.CLASSEUR(1+0*MAINTENANT()))-TROUVE("]"; LIRE.CLASSEUR(1+0*MAINTENANT())))
Malheureusement, la formule ne capte pas si je crée une nouvelle feuille via l'option insérer feuille du clique droite sur un onglet. La formule capte la nouvelle feuille uniquement si je bouge cette dernière de place dans la barre des onglets. Si cette formule avait fonctionné, j'avais dans l'idée de récupérer les nom des onglets nouvellement ajouté via une formule INDIRECTE
Code:
=INDIRECT(nom_de_cellule_où_se_situe_le_nom_de_l'_onglet_précédent&"!cellule_où_je_veux_le_collage_avec_liaison")

par exemple =INDIERCT(A2&"!B7")

et j'aurai pu faire des liaison, peu importe le nouveau modèle intégré.

Suis-je plus clair dans mes propos ? Quelqu'un à t'il une idée pour résoudre ce problème qui persiste depuis quelques mois ?
 

Pièces jointes

  • version test.xlsm
    74.9 KB · Affichages: 40
  • version test.xlsm
    74.9 KB · Affichages: 49
  • version test.xlsm
    74.9 KB · Affichages: 57

Xwprft

XLDnaute Junior
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Re,

Je comprend mieux, mais pas tout...
j'ai rajouté dans ton fichier une macro qui liste les feuilles
Ca peut te servir dans tes formules
Mais j'ai l'impression que la meilleure solution serait tout en macro

A+
 

Pièces jointes

  • collage-avec-liaison.xlsm
    84.8 KB · Affichages: 63

Xwprft

XLDnaute Junior
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Re Re,

J'ai relu en essayant de comprendre.
Dans le fichier test il y a une feuille structuration qui présente un bilan à un moment donné.
L'objectif est de relier ce bilan avec des infos qui viennent d'une autre feuille structuration établie à une autre date.
Question : où sont ces feuilles ?
Elles viendront tôt ou tard dans le même fichier ?
Ou elles sont dans un autre fichier, de même composition (mêmes feuilles) qui est stocké au même endroit, avec un nom qui contient soit un indice soit une date ?

A+
 

Xwprft

XLDnaute Junior
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Re,

J'ai créé un fichier N et un fichier N+1
Le fichier N+1 va chercher les infos dans le fichier N

A essayer

A +
 

Pièces jointes

  • collage-avec-liaison version N.xlsm
    76.9 KB · Affichages: 40
  • collage-avec-liaison version N+1.xlsm
    77.8 KB · Affichages: 56

Albatros86

XLDnaute Nouveau
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Difficile à expliquer :(

en gros, je veux copier le contenu d'une cellule de la feuille précédente à une cellule de la feuille suivante. Sauf que de base, le fichier Excel ne comportera que la feuille ancrage. Je rajouterai au fil des mois, avec clique droit sur onglet pour insérer, une nouvelle feuille modèle. Sauf que cette feuille sera soit ancrage soit structuration soit un autre bilan. Ces modeles sont entreposé dans un dossier sur le serveur de l'entreprise.

Pour résumé le fichier excel concerne un résident. Il comporte que ancrage au début. Puis nous rajouteront, via la fonction insérer, une nouvelle feuille prédéfinie (soit ancrage, soit structuration soit récapitulatif, etc).

Suis-je plus clair ?

J'ai par contre avancé dans mon problème. Sans nommer la feuille précédente, avec la formule INDIRECT, j'arrive à copier les données d'une cellule de la feuille précédente. Par exemple

Code:
=INDIRECT(FeuillePrécédente &"!$A$33")
Feuille précédente est une fonction que j'ai définie dans définir un nom. Cette formule me permet de récupérer et de coller le contenu de A33 de la feuille précédente. ;) C'est ce que je cherchais. Ouf ;););)

Par contre aurais-tu une idée pour que dans la fonction ci-dessus, je n'écrive pas le numéro de la cellule que je veux copier (A33), mais son nom de référence que j'ai mis, soit OBJECTIF1. C'est le dernier obstacle qui me reste... j'y crois
 

targa

XLDnaute Junior
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Salut Albatros86,

Pour répondre à ta dernière question:
Par contre aurais-tu une idée pour que dans la fonction ci-dessus, je n'écrive pas le numéro de la cellule que je veux copier (A33), mais son nom de référence que j'ai mis, soit OBJECTIF1. C'est le dernier obstacle qui me reste... j'y crois

Il te suffit de sélectionner ta case A33 puis de la nommer en y mettant le nom souhaité dans la "Zone Nom" qui se trouve en haut à gauche à côté de la barre de formule.

1.jpg => 2.jpg

Et ensuite de modifier ta formule comme tel:
Code:
=INDIRECT(FeuillePrécédente &OBJECTIF1)
Enjoy
 

Pièces jointes

  • 1.jpg
    1.jpg
    35.6 KB · Affichages: 81
  • 1.jpg
    1.jpg
    35.6 KB · Affichages: 80
  • 2.jpg
    2.jpg
    253.5 KB · Affichages: 81
  • 2.jpg
    2.jpg
    253.5 KB · Affichages: 73

Albatros86

XLDnaute Nouveau
Re : Collage avec liaison de la feuille précédente et de la feuille suivante

Re à toutes et à tous,

Depuis mes derniers messages, j'ai trouvé une solution non pas avec des formules mais avec du code VBA. J'ai néanmoins un problème qui, malheureusement, ralenti considérablement l'exécution de mes diverses macro. Voici la situation :

Avec le code ci-dessous, depuis une feuille active, qui est toujours la dernière du classeur, je tente de copier les valeurs de plusieurs cellules de la feuille précédente pour les coller dans la feuille active. Je ne désire par nommer mes feuilles dans le code VBA, car les noms varient. Le code VBA ci-dessous, fonctionnel, ne copie pas uniquement les valeur de la feuille qui précède la dernière, mais les valeurs de toutes les feuilles du classeur qui précèdent la suivante. Ce qui, vous en conviendrez, n'est absolument pas utile et augmente drastiquement le temps d'exécution de ma macro lorsque le classeur comporte une multitude de feuille.

Code:
Dim feuille
            Set Actuel = ActiveWorkbook
            For feuille = 2 To ActiveWorkbook.Worksheets.Count
    
            'Déprotéger les feuilles du classeur
            ActiveWorkbook.Sheets(feuille).Unprotect "Goliath"
            
            'Copier l'objectif 1 à réaliser dans le bilan suivant pour évaluation
            ActiveWorkbook.Sheets(feuille).Range("A56").Value = ActiveWorkbook.Sheets(feuille - 1).Range("A62").Value
    
            'Copier l'objectif 2 à réaliser dans le bilan suivant pour évaluation
            ActiveWorkbook.Sheets(feuille).Range("A57").Value = ActiveWorkbook.Sheets(feuille - 1).Range("A63").Value
    
            'Copier l'objectif 3 à réaliser dans le bilan suivant pour évaluation
            ActiveWorkbook.Sheets(feuille).Range("A58").Value = ActiveWorkbook.Sheets(feuille - 1).Range("A64").Value
    
            'Copier l'objectif 4 à réaliser dans le bilan suivant pour évaluation
            ActiveWorkbook.Sheets(feuille).Range("A59").Value = ActiveWorkbook.Sheets(feuille - 1).Range("A65").Value
    
            'Protection des feuilles du classeur
            ActiveWorkbook.Sheets(feuille).Protect "Goliath"

Question : Avec le code ci-dessus, est-ce que quelqu'un à une idée pour que le code activé depuis la dernière feuille du classeur copie les valeurs de cellules de la feuille précédente et les collent sur cette dernière feuille ? Ou est-ce que quelqu'un connaîtrait un code vba plus simple ?

Bien à vous
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
183
Réponses
56
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 378
dernier inscrit
phdrouart