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 :

resize un tableau en fonction du nombre de colonnes. [XL-2010]


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
    Apprenti ingénieur
    Inscrit en
    Septembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 12
    Par défaut resize un tableau en fonction du nombre de colonnes.
    Bonjour,

    Je travaille actuellement sur un tableau avec des boutons pour ajouter et retirer des lignes, et des boutons pour ajouter et retirer des colonnes.

    Je n'ai jamais programmé avant, je ne savais faire que des enregistrements de macro assez basique. Du coup un collègue m'aide a faire ce tableau, mais j'essaye de ne pas trop me reposer sur lui et a avancer moi même.

    Cependant je bloque sur quelque chose : je démarre mon tableau avec 5 colonnes, je peux jouer sur le nombre de lignes avec ces 5 colonnes. Cependant quand j'augmente le nombre de colonnes et qu'ensuite j'augmente le nombre de lignes, je retombe à 5 colonnes.
    Je vois ou est le problème mais je ne sais pas du tout comment le résoudre !


    code ajout de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ZoneTexte3_Cliquer()
     
        Dim nbr As Integer 'number of the row
        Dim lastr As Integer 'last row of the range
     
        Sheets("Critères").Range("Tableau1").Select
        nbr = Selection.Rows.Count
        lastr = 5 + nbr + 1
        Sheets("Critères").ListObjects("Tableau1").Resize Range("C5:G" & lastr)
        Sheets("Critères").Range("C" & lastr) = "C" & lastr - 5
        Sheets("Critères").Range("C" & lastr).Select
     
    End Sub
    Comment fait-on pour ajuster le tableau en fonction du nombre de colonne qui est variable ?

    Merci à vous.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme tu utilises un tableau structuré (ListObject en VBA) je te conseille d'utiliser les propriétés et méthodes dédiées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Sub Test()
     
        Dim Tbl As ListObject
        Dim Lig As ListRow
        Dim Col As ListColumn
        Dim I As Integer
     
        Set Tbl = Sheets("Critères").ListObjects("Tableau1")
     
        'ajoute une ligne au tableau
        Set Lig = Tbl.ListRows.Add
     
        For I = 1 To Tbl.DataBodyRange.Columns.Count
            Lig.Range(I).Value = "Valeur " & I 'rempli la ligne avec des données factices
        Next I
     
        'ajoute une colonne au tableau
        Set Col = Tbl.ListColumns.Add
     
        'à la sortie de la boucle, I vaut 6
        Lig.Range(I).Value = "Valeur " & I 'ajoute une valeur dans la colonne nouvellement créée et dans la ligne précédemment ajoutée
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Septembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 12
    Par défaut
    Bonjour,

    Merci, je teste ça demain et je reviens vers vous.

    Je vais me renseigner sur ces propriétés !

  4. #4
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Septembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 12
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Comme tu utilises un tableau structuré (ListObject en VBA) je te conseille d'utiliser les propriétés et méthodes dédiées :

    Bonjour,

    j'ai repris un bonne partie de votre code, et j'ai fait un mélange de votre code avec mon ancien, et ça donne exactement ce que je souhaite avoir !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub ZoneTexte3_Cliquer()
     
        Dim Tbl As ListObject
        Dim Lig As ListRow
        Dim nbr As Integer
        Dim lastr As Integer
     
        Range("Tableau1").Select
     
        nbr = Selection.Rows.Count
        lastr = 5 + nbr + 1
     
        Set Tbl = Sheets("Critères").ListObjects("Tableau1")
     
        Set Lig = Tbl.ListRows.Add
     
        Sheets("Critères").Range("C" & lastr) = "C" & lastr - 5
        Sheets("Critères").Range("C" & lastr).Select
     
    End Sub
    je ne redimensionne pas mon tableau en largeur et j'incrémente bien les nouvelles lignes créées.

    Un grand merci !

    Ma prochaine étape est la suppression des colonnes sélectionnées avec boite de message pour demander confirmation... Je vais tenter de m'y pencher seul

    SALUT !

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

Discussions similaires

  1. Tableau avec un grand nombre de colonnes
    Par Invité dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 25/03/2014, 08h19
  2. Réponses: 1
    Dernier message: 11/10/2013, 13h56
  3. Réponses: 7
    Dernier message: 21/07/2010, 15h47
  4. Erreur vbscript en fonction du nombre de colonnes du csv
    Par matimat2k4 dans le forum VBScript
    Réponses: 4
    Dernier message: 18/03/2010, 20h40
  5. Réponses: 11
    Dernier message: 27/06/2007, 15h06

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