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 :

VBA - Mettre sous forme de tableau avec variation des lignes [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut VBA - Mettre sous forme de tableau avec variation des lignes
    Bonjour,

    Je viens de me créer un compte après n'avoir malheureusement pas trouvé au sein du forum (en espérant avoir bien cherché ) la réponse à ma question, question que je vous pose donc :

    J'aimerais mettre des informations, suite à l'extraction d'un fichier texte, sous forme de tableau structuré.

    Le nombre de colonne au sein du tableau ne varie pas, mais le nombre de ligne oui.

    Or quand j'utilise l'enregistreur de macro j'obtiens ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:CC2098"), , xlYes).Name "" _
        = "Tableau1"
        Range("Tableau1[#All]").Select
        ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleLight9"
    Le fait est que j'essaye de créer un tableau réutilisable, et je voudrais "variabiliser" la partie en rouge. En insérant un fichier texte de seulement 1000~ lignes je me retrouves avec autant de lignes inutiles dans mon tableau.

    J'ai essayé de mettre des variables et suis arrivé au code suivant (qui bien sûr ne marche pas ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        V = Range("CC1").End(xlDown).Row
        W = Range("CC1").End(xlDown).Column
        Range("A1").Select
        Selection.CurrentRegion.Select
        ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:WV"), , xlYes).Name "" _
        = "BD"
        Range("BD[#All]").Select
        ActiveSheet.ListObjects("BD").TableStyle = "TableStyleLight9"
    J'ai essayé des variantes avec des "&", en remplaçant le raccourci des colonnes "W" par sa dénomination "CC" vu que cela ne varie pas mais rien n'y fait...

    J'aimerai donc savoir si ce que j'entreprend est réalisable et si oui comment y parvenir.


    Cordialement,

    PPB

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Pti-Perso-Bonus Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        W = Range("CC1").End(xlDown).Column
    Pour avoir la dernière colonne, il faut utiliser la constante xlToRight et non xlDown (qui recherche vers le bas).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:WV"), , xlYes).Name "" = "BD"
    Le paramètre d'un Range est une chaîne de caractère (en simplifiant).
    Dans ta notation, tu mélanges texte et référence de variable.
    Il faut écrire des choses comme :
    Mais comme tu as mis une valeur numérique dans W et non une lettre de colonne, ça ne marchera pas.
    Il faut donc utiliser une syntaxe comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Range("A1"), Cells(V, W))
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    perso, j'aurai fait ça, entre autres solutions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim V As Range
        Set V = Range("A1").CurrentRegion
        ActiveSheet.ListObjects.Add(xlSrcRange, V, , xlYes).Name _
        = "BD"
        ActiveSheet.ListObjects("BD").TableStyle = "TableStyleLight9"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci à vous 2 pour vos réponses rapide ^^

    Dans les faits les 2 marches, sauf que ta méthode Menhir me donne certes le bon tableau, mais m'affiche l'erreur 406 (il me semble), qui précise que l'utilisation d'un double Range n'est pas possible. Résultat j'ai certes mon tableau mais le reste de la macro (de la mise en gras, format monétaire etc) ne s'effectue pas. J'avoue ne pas trop comprendre pourquoi

    Du coup j'ai pris la méthode de casefayere, qui elle marche au poil... D'ailleurs ça me parait tellement plus évident de faire comme ça maintenant que je le vois... Tout ce temps perdu à lutter sur une "usine à gaz" (en comparaison hein)


    Du coup problème résolu et merci à vous deux


    PPB

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

Discussions similaires

  1. [XL-2013] VBA - Importer un csv et mettre sous forme de tableau
    Par hakkio dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/06/2016, 14h56
  2. [XL-2010] Mettre sous forme de tableau
    Par Ginette54 dans le forum Excel
    Réponses: 4
    Dernier message: 02/03/2014, 18h22
  3. [XL-2007] Code vba :Mettre sous forme de tableau style de tableau clair 1
    Par aiglevb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2013, 12h57
  4. Réponses: 0
    Dernier message: 20/03/2013, 09h38
  5. [Smarty] Afficher les données d'une BDD sous forme de tableau avec options
    Par student_php dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/10/2010, 16h29

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