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

Macros et VBA Excel Discussion :

Auto resize d'un tableau [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'affaires
    Inscrit en
    Mai 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'affaires
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2016
    Messages : 34
    Par défaut Auto resize d'un tableau
    Bonjour à tous,

    J'essaie présentement de resize un tableau lorsque de nouvelles données sont entrées dans celui-ci.
    Voici ce que j'ai pour le moment, ça ne semble pas fonctionner puisque ça bloque à la ligne #6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '---------------Resize the TM1 table to fit the new amount of data---------------------------------------------------------------------------------------
        Dim Bottom As Long
     
        Worksheets("dataTM1").Activate
        Bottom = Range("A1048576").End(xlUp).Row
        ActiveSheet.ListObjects("tbTM1").Resize Range("$A$1:Bottom")
    Est-ce que quelqu'un peut m'aider à trouver ce qui bogue et à le corriger?
    Ou simplement m'indiquer une meilleure façon de procéder?

    Merci d'avance
    Nomorerulz

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Bottom est une variable représentant un nombre de type Long
    Ton Range, tel que tu l'écris, attend une chaine de caractère commençant par l'adresse de la première cellule de la plage, finissant par l'adresse de la dernière cellule, les deux séparés par le double point ":"

    Cette portion de code est donc bourrée de fautes, dans tous les sens possibles

    tu mets une variables dans une chaine de caractères
    cette variable, de toute façon, est un nombre et pas une addresse de type "Colonne-Ligne"
    il manque la référence à la dernière colonne de la plage


    Bref, sans se prendre la tête, utilises la propriété .CurrentRegion si tu veux trouver la plage rectangulaire des données qui commence en A1 ... plus besoin de calculer tes lignes

    Et on notera la nouvelle manière de gérer ta feuille : pas besoin de l'activer, pour ensuite travailler sur "la feuille active"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("dataTM1")
        .ListObjects("tbTM1").Resize .Range("A1").CurrentRegion
    End With

  3. #3
    Membre averti
    Homme Profil pro
    Analyste d'affaires
    Inscrit en
    Mai 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'affaires
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2016
    Messages : 34
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("dataTM1")
        .ListObjects("tbTM1").Resize .Range("A1").CurrentRegion
    End With
    Merci pour ta réponse joe.levrai,

    Je viens de faire la modification et le tout cèsse de fonctionner à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .ListObjects("tbTM1").Resize.Range("A1").CurrentRegion
    Une idée?

    Merci,
    Nomorerulz

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    As-tu testé ma proposition telle que je l'ai fournie, avant de la modifier ... enfin de la massacrer ?

    T'as accolé les deux morceaux de la ligne de code, alors que ce sont deux parties indépendantes et qui doivent nécessairement être dans le bloc With/End With

    teste ces trois lignes dans une procédure écrite dans ton classeur (uniquement ces trois lignes dans la procédure) et là si ça marche pas tu indiques le message d'erreur, car sans avoir testé je ne vois pas ce qui ne fonctionnerait pas

  5. #5
    Membre averti
    Homme Profil pro
    Analyste d'affaires
    Inscrit en
    Mai 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'affaires
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2016
    Messages : 34
    Par défaut
    Bonjour joe.levrai,

    J'ai testé votre proposition tel qu'indiqué au départ, mais une erreur est survenue.
    J'ai donc tenté d'effacer l'espace (ne connaissant pas ce type de code) afin de vérifier si l'erreur était à cet endroit.
    J'ai probablement oublié de le remettre avant de coller l'information ici.

    Merci de tenir compte du fait que je ne suis pas un utilisateur avancé de VBA.
    Votre indulgence est très appréciée et je vous suis reconnaissant de me faire profiter de votre expérience.

    Voici le message d'erreur:
    Nom : 2016-07-04 11-00-53.jpg
Affichages : 2377
Taille : 37,8 Ko

    Le code que j'ai inscris pour l'instant est ce qui suit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With Worksheets("dataTM1")
            .ListObjects("tbTM1").Resize .Range("A11").CurrentRegion
        End With
    Les titres de mon tableau sont aux positions A11:L11.
    J'ai également essayé de débuter à la première ligne de donnée (ligne 12), mais ça ne semblait pas faire de sens.

    Si vous avez une idée pour m'aider à régler ceci, vous êtes la bienvenue!
    Dans le cas contraire, je vous suis reconnaissant de l'aide que vous m'avez apporté jusqu'à maintenant.

    Merci encore,
    Nomorerulz

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Bottom As Long
     
        Worksheets("dataTM1").Activate
        Bottom = Range("A1048576").End(xlUp).Row
        ActiveSheet.ListObjects("tbTM1").Resize Range("$A$1:Bottom")
    1. erreur :Dim Bottom As Long
    2. correction =Dim Bottom As range
    3. erreur:Bottom = Range("A1048576").End(xlUp).Row
    4. correction=Bottom = Range("A1048576").End(xlUp)
    5. erreur:activeSheet.ListObjects("tbTM1").Resize Range("$A$1:Bottom")
    6. correction=


    et meme qu'il serait preférable d'englober le tout dans le with

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with activeSheet.ListObjects("tbTM1")
     set Bottom = Range("A1048576").End(xlUp)
    .Resize .Range(cells(1,"A"),Bottom)
     end with 
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Comment faire l'auto-resize d'un sous formulaire
    Par malingue dans le forum Access
    Réponses: 17
    Dernier message: 30/03/2019, 14h16
  2. Auto resize d'un controle TabControl
    Par marwaa dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/03/2009, 12h22
  3. Bug IE7 (encore) auto-resize de <select>
    Par daajack dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/05/2008, 15h20
  4. [MATISSE] Auto resizing impossible, pourquoi ?
    Par spekal dans le forum NetBeans
    Réponses: 8
    Dernier message: 16/10/2006, 10h39
  5. retour à la ligne auto dans un bête tableau
    Par junty dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 13/10/2005, 18h15

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