Mettre à jour les lignes d'une feuille selon d'autres feuilles

Bonjour à tous !

Je viens de trouver ce forum très intéressant et très réactif. J'ai quelques bases sur Excel et en macro, mais la je n'ai aucune idée qui me vient.

Ma question est la suivante:

Je possède une bibliothèque de prix avec plusieurs feuilles (selon les types de produit) et j'aimerai regrouper toutes ces feuilles dans une seule.

Mon problème:

La base de prix est souvent mise à jour (ajout de produits… donc de lignes), je voudrai donc créer une macro qui fait une "mise à jour" dans la feuille regroupant les feuilles de bases.

Je vous met ci joint un extrait du document ou je voudrai que tout soit recentralisé dans la feuille "Recueil". De plus, lorsque j'ajoute une ligne à une des feuilles "Panneau", "Isolant" ou "Bois" je voudrai qu'avec un bouton cette ligne s'ajoute au bon endroit dans la feuille "Recueil".

Je vous remercie d'avance

Dans l'attente de vos retours.

Bonne journée

12exemple-forum.xlsm (48.48 Ko)

Bonjour

Inutile d'utiliser VBA : PowerQuery en add ob à partir de 2010, totalement intégré à Excel à partir de 2016, fait cela en quelques clics

Actualiser par Données, Actualiser Tout ou une ligne de VBA

9synthese3-pq.xlsx (54.79 Ko)

Voir ici pour le principe http://www.excel-formations.fr/Trucs_astuces/PQ04.php

Bonjour, Matzic et bonjour Chris

sinon pour une macro il ne faut pas commencer à chercher quelles lignes sont ajoutées ou supprimer.

Un bouton actualiser et la totalité des infos de l'onglet Recueil sont effacées pour être de nouveau collectées intégralement dans les 3 autres onglets.

18exemple-forum.xlsm (34.27 Ko)
Sub Macro1()
'
Dim nbligneF1 As Long
Dim nbligneF2 As Long
Dim nbligneF3 As Long
Dim nblignerecueil As Long

nbligneF1 = Worksheets("Panneaux").Range("A65536").End(xlUp).Row
nbligneF2 = Worksheets("Isolants").Range("A65536").End(xlUp).Row
nbligneF3 = Worksheets("Bois").Range("A65536").End(xlUp).Row

nblignerecueil = Worksheets("Recueil").Range("A65536").End(xlUp).Row
'remise à zéro cellule onglet Recueil
Worksheets("Recueil").Range("A2:K" & nblignerecueil).Value = ""

'Collecte infos onglet Panneaux
nblignerecueil = Worksheets("Recueil").Range("A65536").End(xlUp).Row
Worksheets("Recueil").Range("A" & nblignerecueil + 1 & ":K" & nblignerecueil + nbligneF1 - 1).Value = Worksheets("Panneaux").Range("A2:K" & nbligneF1).Value

'Collecte infos onglet Isolants
nblignerecueil = Worksheets("Recueil").Range("A65536").End(xlUp).Row
Worksheets("Recueil").Range("A" & nblignerecueil + 1 & ":K" & nblignerecueil + nbligneF2 - 1).Value = Worksheets("Isolants").Range("A2:K" & nbligneF2).Value

'Collecte info onglet Bois
nblignerecueil = Worksheets("Recueil").Range("A65536").End(xlUp).Row
Worksheets("Recueil").Range("A" & nblignerecueil + 1 & ":K" & nblignerecueil + nbligneF3 - 1).Value = Worksheets("Bois").Range("A2:K" & nbligneF3).Value

End Sub

Bonjour 78chris,

Merci beaucoup pour ton aide, je ne connaissais pas!

Par contre, avec cette méthode, lorsque j'ajoute une ligne dans "panneau"... et que j'actualise, elle ne s'ajoute pas à "Recueil" car le nom donné au tableau s'arrête a une certaine ligne. As tu une solution à ça ?

Car changer le nom à chaque fois empêche l'automatisation recherchée.

Merci beaucoup en tout cas

Bonjour Xmenpl,

Merci beaucoup pour ta réponse, je te fais un retour quand j'aurai testé ça avec l'intégralité des données que j'ai à classer.

Je te remercie pour ton aide.

Bonne soirée!

RE

Par contre, avec cette méthode, lorsque j'ajoute une ligne dans "panneau"... et que j'actualise, elle ne s'ajoute pas à "Recueil" car le nom donné au tableau s'arrête a une certaine ligne. As tu une solution à ça ?

Les tableau structuré intègrent automatiquement les nouvelles lignes et donc la requête en tient compte

Si ce n'est pas le cas tu as du faire une mauvaise manip et saisir ou coller ailleurs que sur la ligne immédiatement sous le tableau

As-tu ajouté sur l'exemple que j'ai renvoyé ou dans un autre classeur ?

Re,

Oui, j'ai essayé avec le tableau que tu m'as transmis.

Lorsque j'utilise copier + coller et ceux même avec "insérer les cellules copiées" en dessous des lignes existantes, après actualisation, la ligne n'est pas ajoutée au tableau "recueil".

Cependant, si j'insère une ligne au sein du tableau existant, la, ça marche.

Je vais jeter un œil au lien que tu m'as donné.

Merci

RE

Si je copie colle des données en ligne 65 de Panneaux, le tableau Panneaux s'agrandit bien

SI j'actualise (Données, Actualiser Tout), je les trouve bien dans Recueil en fin de groupe des panneaux et ce sur 2 PC et 2 versions Excel différentes...

Bonjour 78chris,

Oui en effet, je viens de trouver. Plus qu'à trouver mon erreur dans mon tableur.

Merci beaucoup bonne journée à toi.

Bonjour Xmenpl,

Merci beaucoup pour la macro que tu m'as envoyé hier, elle fonctionne très bien, c'est TOP!

Maintenant, je souhaiterai créer un nouveau tableau à droite du premier (colonne O à Y) dans "recueil" qui réuni cette fois les feuilles "Parements" et "MEX"

Peux-tu m'aider à adapter la macro stp ?

(fichier exemple ci-joint)

Merci d'avance, bonne journée!

Bonjour il suffit de duppliquer la macro et de changer les variables ( noms de feuille et plage d'arrivée dans Recueil de A à K à remplacer par de O à Y )

Merci beaucoup, c'est bien ce que je pensais mais je n'y étais pas parvenu

Je vais essayer de prendre le temps de décoder ce que tu m'as envoyé, ça m'entrainera!

Merci beaucoup pour ton temps!

Bonne journée.

Bonjour Xmenpl,

Quelques temps après la solution que tu m'as proposé, j'aimerai améliorer encore le code (qui va parfaitement !)

En fait, dans mes feuilles "Etanchéité", "panneaux"... je souhaiterai mettre certain produits en police texte rouge et que dans le "Recueil" la police rouge soit conservée aux même lignes (pour les mêmes produits).

Pourrais-tu modifier le code existant afin que ça se fasse ? ça serait vraiment super!

Merci beaucoup d'avance !

Je mets un fichier ci-joint

Bonjour, Hélas mon code n'est pas un copié collé d'une cellule donc le format est les couleurs ne sont pas repris.

Le code indique seulement que la valeur de telle cellule est égale à la valeur d'une autre cellule.

Vous devriez vous orienter vers une mise en forme conditionnelle de vos onglets si les conditions de couleur ont une logique particulière ?

Oui c'est bien ce que je pensais, je m'étais renseigné et j'ai remarqué qu'il aurait fallu utiliser "Paste.Copy".

En fait, je souhaite mettre en rouge les produits dont on se sert le + pour les extraire dans un autre tableau. Je vais voir pour les MFC si je peux y parvenir.

Peux tu m'aider sur un autre code qui n'aboutit pas stp ?

Merci infiniment pour tes réponses

EDIT: Il n'y a pas d'autres solutions que les MFC ?

Rechercher des sujets similaires à "mettre jour lignes feuille feuilles"