Tableaux structurées, copie plages dynamiques

Bonjour à tous,

Je dispose d'un fichier au sein duquel se situe un tableau. => jusque là tout va bien

Ce tableau est créé à l'aide de l'outil mettre sous forme de tableau et porte le nom de TableauAffairesDonnées.

J'ai également créé les plages dynamiques contenant les données des 4 colonnes du tableau par le biais de l'outil Formules Gestionnaire de noms.

  • NomAffaire => "=TableauAffairesDonnées[Nom]"
  • NumAffaire
  • SsSectionAffaire
  • DenominationHeures

Ainsi je dispose de 4 plages dynamiques associées au tableau.

Mon souhait me semblait tout simple : copier les valeurs de ces 4 plages dynamiques vers d'autres tableaux situés à des numéros de lignes différentes des numéros de lignes initiales.

Le but est de réaliser ceci sans macro, juste à l'aide de formules par le biais des plages créées.

J'ai donc copié collé mon cadre de tableau pour créer TableauAffairesDonnées2.

Le but est dans ce nouveau tableau de retrouver les mêmes valeurs que dans le premier tableau sans faire référence directement aux cellules.

Je ne souhaite pas écrire =A5 et étendre au tableau mais bel et bien écrire =NomAffaire sur la première colonne et ainsi faire référence à ma plage dynamique. Ou éventuellement en référence structurée =TableauAffairesDonnées[[#Données];[Nom]]

Comment réaliser le décalage et / ou faire référence au premier élément de la liste dynamique NomAffaire sans avoir à placer le tableau à la même altitude que le précédent sur la feuille ?

Pour expliciter mon propos, je vous joins un fichier support qui matérialise bien mon problème !

Je recherche si possible une solution sans vba. Si ce n'est pas réalisable, pourquoi pas une petite macro qui ferait le job.

Merci d'avance à tous ceux qui passeront du temps à comprendre et chercher une solution à mon problème.

Bien cordialement,

Alexandre

bonjour

1/

il est inutile de nommer les colonnes d'un tableau, Excel les nomme automtiquement

2/

pour ta question essaye un filtre avancé (menu données) avec un zone de critères que tu laisses vide

à chaque Maj il faut relancer le filtre ce que tu peux enregistrer en macro

Bonjour jmd,

Merci beaucoup de ta réponse.

Je pense qu'elle ne répond cependant pas tout à fait à mon besoin initial.

pour le point 1 ; j'ai pris l'habitude de nommer les colonnes du tableau afin d'obtenir la même chose qu'avec l'ancienne fonction DECALER permettant d'obtenir des plages dynamiques. De ce fait ces plages nommées (et dynamiques avec le tableau) sont utilisables dans les listes lorsque tu fais Données / validation des données / liste.

L'autre avantage est tout simple, il est lié à la protection du nom de la colonne du tableau. En effet lorsque le fichier créé est utilisé par plusieurs personnes, certains vont choisir de modifier le nom de la colonne du tableau => et dans ce cas la référence VBA de cette colonne s'en trouve altérée ! (en supposant que je ne veuille pas protéger les données sur les cellules du nom du tableau...)

Pour le point 2 ; Ta solution revient à mon sens ni plus ni moins à réaliser une copie avec liaison.

Le problème est qu'on perd la notion d'étendue dynamique sans intervention externe de l'utilisateur et / ou d'une macro.

Ce que j'entends par dynamique est la possibilité d'ajouter un élément à la suite du tableau. Cet élément fait désormais partie intégrante du tableau initial mais n'est pas copié vers le tableau de destination.

Exemple avec le tableau de mon fichier initial, si j'utilise le tableau situé à la même altitude que le premier, lorsque j'ajoute un élément dans la case A18, cet élément est automatiquement intégré au tableau initial.

Si je vais dans le tableau situé sur G4:J17 et que j'étends le tableau vers le bas d'une ligne par le biais du curseur situé en bas à droite du tableau, ma nouvelle valeur est automatiquement insérée dans le second tableau puisque toutes les colonnes du tableau sont égales à celles du premier tableau.

Une solution en VBA à mon problème serait cette macro toute simple associée à un bouton ActiveX.

Private Sub CopyRange_Click()
Dim cRange As Range

'en utilisant un nom donné à la plage définie par les données de la première colonne du tableau initial ; ici NomAffaire
Set cRange = Range(Range("NomAffaire"), Range("NomAffaire").End(xlToRight))

'mettre en destination la cellule supérieure gauche des données du tableau et non la ligne de titre du tableau
cRange.Copy Range("A23")

End Sub

Je pensais que c'était réalisable sans macro à l'aide des références structurées de tableaux.

Peut-être qu'une solution est réalisable ?

Voici le fichier V2 intégrant ma solution avec macro et bouton.

Merci d'avance à tous ceux qui réfléchiront à mon problème !

Slts

re

juste pour signaler que le filtre avancé effectue une copie sans liaison

et qu'on peut enregistrer la construction du filtre mais que le lancement de la macro associée se fera par l'utilisateur

rem : je déteste VBA (sauf macro simple enregistrée) car en général il n'est pas structuré et devient vite une usine à gaz incompréhensible quand le salarié "programmeur" quitte l'entreprise

mais ce n'est que mon avis

Rechercher des sujets similaires à "tableaux structurees copie plages dynamiques"