Ajustement automatique des 2 tableaux avec un nombre de lignes variable

Bonjour le forum,

Je reviens vers vous après une longue recherche qui n'aboutie pas

En fait, j'ai un fichier Excel avec 2 feuilles : la première "source" contient la liste des produits avec plusieurs types de prix (le nombre de produit n'est pas fixe et varie entre 5 et 200 ) et c'est là mon gros souci puisque dans la 2ème feuille, j'ai 2 tableaux l'un au dessous de l'autre) avec la liste des produits variables en colonne A et les prix en colonnes (voir fichier ci-joint)

mon problème est que j'ai d'autres données en bas de mes 2 tableaux et je dois garder le format (pour des raisons internes) de cette maquette qui sera utilisé par plusieurs personnes, donc j'ai fait 2 tableaux standards de 5 lignes et je souhaite que les tableaux soient ajustés en automatique en fonction du nombre de lignes dans la feuille source...en plus que mes 2 tableaux contiennent des formules et je souhaite dupliquer les formules sur les nouvelles lignes à insérer dans chaque tableau...

j'ai testé plusieurs macros mais à chaque fois j'ai un problème notamment concernant la duplication des formules puisque la cellule de départ du 2ème tableau change en fonction du nombre de lignes qui seront insérés sur le 1er tableau et qu'il y a des liaisons entre les 2 tableaux

pour plus de détail, veuillez trouver ci-joint un exemple très simplifié de mon fichier (Il y a beaucoup plus de données dans mon vrai fichier avec plusieurs autres onglets) mais mon problème reste le même

pouvez vous m'aider svp ?

D'avance, merci

Bonjour,

tu connais la formule pour la dernière ligne d'un tableau ,

LigneFinTab2 = Sheets(ongletName).cells(rows.count,1).end(xlup).row

LigneDebTab2 = Sheets(ongletName).cells(LigneFinTab2,1).end(xlup).row

LigneFinTab1 = Sheets(ongletName).cells(LigneDebTab2,1).end(xlup).row

LigneDebTab1 = Sheets(ongletName).cells(LigneFinTab1,1).end(xlup).row

@+JP

Bonsoir,

Une solution simple en convertissant vos tableaux en objets tableau

Bonjour à tous

Une variante.

Bye !

Bonjour,

gmb, mjpmjp et Thev : Merci beaucoup pour votre intérêt à mon problème et vos réponses

J'ai essayé d'utiliser la solution proposée par thev car c'est la plus simple à adapter à mes tableaux compliqués mais j'ai un message d'erreur au niveau de la ligne :

Set tableau1 = Me.ListObjects("Tableau1")

il m'affiche le message suivant : Erreur de compilation :Utilisation incorrecte du mot clé Me

je ne sais pas cela est du à quoi

Merci et bonne journée à vos tous

Bonjour,

j'ai pu surmonter ce problème mais l'ajustement des 2 tableaux écrase les lignes au dessous du 2ème tableau (dans mon exemple je n'ai pas mis de données au dessous mais en réalité j'ai beaucoup d'informations au dessous des 2 tableaux et je veux les conserver après l'ajustement des 2 tableaux )...

j'ai testé la solution proposée par gmb (malgré que je n'ai pas trop compris le code ) mais c'est pareil elle écrase tout ce qui est au dessous

comment je peux faire svp pour garder tous ce qui est au dessus et au dessous de mes 2 tableaux à ajuster ?

d'avance, merci

bonne journée

Bonjour,

il m'affiche le message suivant : Erreur de compilation :Utilisation incorrecte du mot clé Me

Le code étant associé à la feuille Données, "Me" représente cette feuille.

Si vous mettez le code ailleurs, il faudra alors remplacer "Me" par "Sheets("Données")"

Si vous avez bien converti vos tableaux en objets Tableau : (Menu --> Insertion --> Cliquer sur bouton Tableau) , les lignes en-dessous du tableau2 ne peuvent pas être effacées.

voir exemple ci-joint

Quand vous basculez d'une feuille à l'autre, les tableaux 1 et 2 sont adaptés au tableau source sans suppression des lignes au-dessous du tableau 2.

Ajout remarques

Tout ce qui serait présent à droite des tableaux et en particulier du tableau 2 est évidemment décalé verticalement lors de leur adaptation au tableau source.

La ligne Total est une option de l'objet Tableau.

Bonjour Thev et merci pour votre réponse rapide,

J'ai corrigé le problème d'erreur lié au nom de la feuille et ça marche bien

Si non, j'ai bien converti les 3 tableaux mais comme ma feuille contient beaucoup de données en dehors des tableaux au dessous (dans les colonnes c, d, e etc...), l'ajustement des tableaux décale uniquement les colonnes A et B et écrase les autres colonnes

est ce cela peut être corrigé ?

j'ai pensé à ajoute ce bout de code pour insérer des lignes avant d'ajuster les tableaux :

Set ws = ThisWorkbook.Sheets("Donnees")
    Set wsk = ThisWorkbook.Sheets("Source")
    j = wsk.ListRows.Count
    ws.Rows("21:" & 21 + j - 5 & "").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

mais je ne sais si c'est la meilleure solution ou non ?

qu'en pensez vous ?

écrase les autres colonnes

L'ajustement ne peut pas écraser les colonnes autres que A et B. Il ne peut que les décaler verticalement.

Je réfléchis à une solution pour compenser ce décalage.

Re,

Voici un exemple plus près de la réalité de mon fichier

et vous pouvez remarquer que les lignes au dessous des tableaux pour les colonnes c, d, e etc... seront écrasé lors de l'ajustement des tableaux

merci

Essayer cette version qui compense le décalage.

NB: ne pas oublier de remplacer l'objet Me par Sheets("Données") si vous mettez le code ailleurs

Nouvel essai.

Bye !

@Thev,

Merci pour votre retour cependant ce ne marche pas dans tous les coups

parfois, ça marche mais lorsque je réinitialise les tableaux et je recommence, ça ne marche pas (peut être, j'ai fait une bêtise)

ci-joint un exemple du fichier avec le décalage qui ne fonctionne pas et c'est pareil dans mon fichier réel (qui contient beaucoup plus de données et de colonnes)

pouvez vous regarder svp ?

@gmb, je vous remercie pour votre nouvelle proposition mais ce qui m'empêche de l'utiliser est que vous avez intégré les formules dans le code et je n'arrive pas à comprendre comment je peux les adapter à mon exemple réel ou j'utilise des formules beaucoup plus compliqué comme somme.si.ens et Index.equivalent pour alimenter les valeurs de mes 2 tableaux....

du coup pouvez vous commenter votre proposition et surtout m'expliquer si possible ou je doit adapter mes formules ou bien garder la formule dans la 1ère ligne de chaque tableau et l'itérer sur le reste du tableau (seule la colonne A est la même entre 2 tableaux)

merci d'avance

parfois, ça marche mais lorsque je réinitialise les tableaux et je recommence, ça ne marche pas

ça ne marche pas quand l'option de la ligne Total n'est pas activée car pour la compensation du décalage, il se positionne sur la ligne Total du tableau 2.

J'ai intégré dans le code l'affichage systématique des lignes Total pour les 2 tableaux.

Bonsoir,

ci-jointe version sans affichage systématique des lignes Total et gérant les 2 cas : tableau 2 avec ou sans ligne Total.

Bonsoir,

Thev et gmb, merci beaucoup pour tout ce que vous avez fait pour moi , je suis vraiment reconnaissant

mais malheureusement pour moi, je n'ai pas pu exploiter correctement vos efforts

je pense que j'ai mal exposé mon problème dès le départ car j'ai donnée un exemple qui s'éloigne pas mal de mon tableau réel et je n'ai pas donné toutes les contraintes...je m'en excuse

du coup, je vous joints un nouveau fichier avec le format exact de mon fichier (en supprimant les formules et les données)

A partir de la feuille source, je veux juste récupérer la liste des produits et ajuster automatiquement mes 2 tableaux en fonction du nombre de pdts, ensuite l'idée est de prendre la formule dans la 1ère ligne de chaque tableau et faire descendre jusqu'au fin du tableau

voilà tout, j'espère que ce n'est pas trop tard

Mille merci

bon weekend

Bonjour,

c'est carrément un autre problème avec une autre approche

@+JP

c'est carrément un autre problème avec une autre approche

En effet. Aussi, pour ma part, je passe la main.

Bye !

Bonsoir,

La cellule fusionnée en colonne E avec le TOTAL rend votre problème trop complexe. Il faut revoir une disposition plus classique de votre Total en ajoutant par exemple tout simplement une ligne supplémentaire. Alors ma solution s'appliquera sans souci.

Rechercher des sujets similaires à "ajustement automatique tableaux nombre lignes variable"