IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Redimensionnent d'un tableau structuré en VBA [XL-365]


Sujet :

Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 112
    Par défaut Redimensionnent d'un tableau structuré en VBA
    Bonjour à tous

    Je possède un tableau structuré composé en 2 parties :
    1. Les premières colonnes contiennent les données
    2. Les colonnes suivantes contiennent les formules


    Mon code VBA fait ceci :
    1. J'efface les données sur la première partie du tableau
    2. Je colle les nouvelles données


    Nous avons 2 cas
    1. Cas 1 : Le nombre de ligne est supérieure à la taille du tableau
    2. Cas 2 : Le nombre de ligne est inférieure à la taille du tableau


    Dans le premier cas, pas de problème, le tableau s'ajuste automatiquement et les formules aussi.
    Dans le deuxième cas, il y a un effet bord puisque mes formules affichent des erreurs en l'absence de donnée (#N/A par exemple) (Voir PJ). Alors oui, on pourrait effacer ces erreurs mais cela introduit un léger biais dans des TCD.

    Je cherche donc à redimensionner en VBA, le tableau en fonction du nombre de ligne contenu. Suis je claire j'espère...

    Mes recherches m'ont fait arriver sur des instructions comme Redim mais je ne suis pas sûr que cela corresponde à mon besoin.

    Si quelqu'un à un bout de code à proposer, je le remercie d'avance, et comme tous ceux qui auront pris le temps de lire ce message.

    Bonne journée à tous
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    A quoi ressemble votre code VBA?

    Cdlt

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour à tous

    Il faut effacer toutes les lignes sauf la 1ère, puis les données de celle-ci

    Les formules se propageront automatiquement quant tu copiera tes nouvelles données
    Prend l'habitude de donner des noms signifiants à tes Tableaux au lieu du nom automatique Tableau1

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 112
    Par défaut
    Bonjour 78chris

    Merci pour ta réponse. Et cela fonction plutôt pas mal. Sur un fichier de démo comme celui, très léger, c'est rapide. Sur mon fichier de travail, faisant quelques Mo , ca risque de prendre un peu plus de temps. Mais je prends !

    Alors l'étape suivante est comment je code ça?
    J'ai essayé avec l'enregistrement automatique et cela donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.ListObject.ListRows(1).Delete
    Si je comprends bien cette ligne, cela supprime la ligne 1 du tableau. D'ailleurs, c'est ce que réalise la macro.

    Ce qui voudrait dire que je dois faire cette opération de manière itérative, autant de fois qu'il y a de ligne. Ca peut le faire, c'est un peu bourrin mais ça marche .
    Y'a pas un moyen pour indiquer le nombre de ligne du tableau à sélectionner et à supprimer l'ensemble en 1 fois?

    PS : Bien sûr que oui, je renomme mes tableaux avec un nom précis. Ici, pour le fichier démo, j'ai laissé tel quel

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 112
    Par défaut
    Après quelques tests, ca ne peut pas marcher.

    Pourquoi? et bien si je supprime toutes les lignes, je supprime aussi les formules associées en bout de colonne.
    Mon objectif est de supprimer uniquement les lignes vides.

    J'avais en tête de sélectionner simplement la partie vide et de supprimer cette sélection. Ca doit être possible, j'imagine.
    Je laisse les spécialistes se prononcer éventuellement.

    En attendant, je vais essayer de bidouiller un p'tit script pour que ca marche, ou en tout cas que ca corresponde à ce que je veux...

    A suivre

  6. #6
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 556
    Par défaut
    Bonjour

    Pierre Fauconnier a répondu magnifiquement et récemment à un post qui avait quasiment le même sujet.
    La réponse se trouve en suivant ce lien.

    Il ne faut pas s'inquiéter pour les formules quand on supprime toutes les lignes d'un tableau structuré. Elles sont conservées (je ne sais où) et se remettent automatiquement lorsqu'au moins une nouvelle donnée est inscrite.

    En espérant que cela aide

    Bonne journée

    Pierre Dumas

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Après quelques tests, ca ne peut pas marcher.
    Pourquoi? et bien si je supprime toutes les lignes, je supprime aussi les formules associées en bout de colonne.
    Mon objectif est de supprimer uniquement les lignes vides.
    Bien entendu que cela fonctionne.
    Je développe pour un client actuellement où je fais exactement la même chose avec des données de + de 44000 lignes et des dizaines de colonnes

    Pour compléter la réponse de Pierre que je salue au passage, voir ma contribution sur le sujet titrée La méthode AdvancedFilter et l'objet ListObject et en particulier le fil #5 Comment utiliser un objet ListObject comme cible ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 112
    Par défaut
    Bonjour Philippe

    J'avoue que je suis extrêmement impressionné par les articles et les différents sujets présents autour des tableaux structurés.

    Bon, le problème est que
    1. J'ai trouvé comment vider un tableau strcturé. Serais je faire ? Ca c'est moins sûr
    2. Je ne souhaite pas vider la totalité du tableau mais je souhaite garder la première ligne qui contient toutes les formules

    Donc si je supprime tout, je perds mes formules. Sachant que je dois avoir 50 colonnes de formules, même pas en rêve que je les ressaisie quelque soit la méthode.

    C'est sûrement évidement pour vous, mais, là, j'attends mes limites de connaissance. La manipulation des objets devient une zone obscure pour moi.
    Je vais essayer de faire un mixte de l'ensemble des réponses.

    A suivre si d'autres idées surgissent

  9. #9
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 556
    Par défaut
    Bonjour François

    On vous assure que vous pouvez supprimer toutes les lignes de votre tableau structuré (sauf la ligne d'entête), celui-ci gardera quand même les formules.

    Vous pouvez simplement l'essayer "à la main". Voici comment.
    1/ Faites une copie de votre fichier Excel (au cas où vous n'auriez pas confiance)
    2/ Sélectionnez toutes les cellules d'une colonne de votre tableau structuré (par la petite flèche noire qui vient juste au dessus du titre de la colonne), puis clic droit > Supprimer > Lignes de tableau
    En conséquence toutes les lignes du tableau sont supprimées. Une seule ligne est située en dessous des titres et elle ne contient pas de formule.
    3/ Enregistrez et fermez votre classeur
    4/ Rouvrez votre classeur et saisissez des données dans votre tableau. Vous constaterez que les formules réapparaissent et fonctionnent parfaitement.

    C'est exactement la même chose ce que fait le code de Pierre Fauconnier que je vous ai indiqué.

    En espérant que cela aide

    Bonne soirée

    Pierre Dumas

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 112
    Par défaut
    Alors là, les bras m'en tombent

    Depuis quand on supprime des lignes et quand on remet les données, les formules réapparaissent


    J'ai suivi ton conseil Pierre, et là oh surprise, en supprimant les lignes, et en ajoutant les données, les calculs reviennent avec tous les résultats qui vont bien !
    Cela dit, ca fait un peu flipper de voir tout disparaitre.

    Merci de ton instance Pierre , car je n'avais pas bien saisi (ou dirais je plutôt j'ai lu en diagonale) et là ça, ça ouvre des perspectives top !

    A bientôt

    PS : j'en reviens toujours pas

  11. #11
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Re
    Citation Envoyé par Pierre Dumas Voir le message
    Il ne faut pas s'inquiéter pour les formules quand on supprime toutes les lignes d'un tableau structuré. Elles sont conservées (je ne sais où) et se remettent automatiquement lorsqu'au moins une nouvelle donnée est inscrite.
    Citation Envoyé par francois78 Voir le message
    Donc si je supprime tout, je perds mes formules.
    Lis-tu bien les réponses ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        [NomTableau].ListObject.DataBodyRange.Delete
    puis remplissage par coller des colonnes non formulées marche très bien

    Edit : bon les esprits se sont rencontrés !

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut,

    En complément de ce qui a été dit ici (au passage, merci Pierre Dumas pour le lien vers ma réponse )...

    Pour bien maîtriser les tableaux structurés en VBA, il faut bien les maitriser en Excel. Mon tuto sur le sujet pourrait t'être utile...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplissage tableau structuré VBA via un Userform
    Par Jeremy.fuego dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/01/2020, 10h47
  2. [XL-365] références de tableau structuré en VBA
    Par fabrice57100 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2019, 14h31
  3. Réponses: 25
    Dernier message: 19/09/2018, 14h03
  4. [Toutes versions] Tableau structuré & VBA
    Par triumphk dans le forum Excel
    Réponses: 4
    Dernier message: 09/01/2015, 16h29
  5. [XL-2010] Redimensionnement d'un tableau dynamique et perte de données VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/08/2014, 22h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo