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 :

suprimer un listobject du sheets avant de le reconstruire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 suprimer un listobject du sheets avant de le reconstruire
    bonjour

    comme le titre l'indique je souhaiterais supprime litéralement un tableau structuré avant de le reconstruire ainsi qu'enlever tout modification couleur ou format dans les cellules

    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
    Sub test()
        entete = Array("toto", "titi", "riri", "fifi", "loulou", "truc", "bidule", "machin", "chose")
        new_nom = "pannel1"
        nbligne = 6
        Themes = "truc bidule" & Date & "/" & "machin"
        With ActiveSheet
            .Cells(Rows.Count, 1).End(xlUp).Offset(1) = Themes
            '************************************************************************************
            'ici je voudrais le supprimer si il existe ainsi que tout mise en couleur ou format sur la plage occupée par le tableau
            ' tout a partir du themes
            '************************************************************************************
            .ListObjects.Add(xlSrcRange, .Cells(Rows.Count, 1).End(xlUp).Offset(2).Resize(6, UBound(entete) + 1), , xlNo).Name = new_nom
            .ListObjects("pannel1").TableStyle = "TableStyleMedium11"
            With Range("pannel1[#Headers]")
                .Value = entete
                .Interior.Color = RGB(0, 100, 0)
                .Font.Color = vbWhite
            End With
            'model d'acces a une colonne :
            'MsgBox Range(new_nom & "[titi]").Address
        End With
    End Sub
    quelqu'un sait faire ca ?
    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

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    D'après l'aide


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub DeList()
     ActiveWorkbook.Worksheets("feuil1").ListObjects(1).Unlist
    End Sub
    Boisgontier

  3. #3
    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 re
    merci jacques
    c'est pas aussi simple
    c'est de ma faute ,j'ai oublié de donner des renseignements

    cette sub est multiplié par X avec new_nom et themes etc.. qui change a chaques fois

    ce que je voudrais au final c'est supprimer carrément les lignes car je ne refait pas toujours les tableaux dans l'ordre et il y en a 8
    en effet quand je fait ce tableau je peux en faire un ou plusieur apres et revenir sur celui la pour le supprimer ligne comprise afin d'eviter d'avoir des plage vides
    en gros il faudrait que je cerne la derniere cellule du tableau et la cellule du themes et cette plage.entirerow doit etre literalement supprimée
    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

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Supprime complétement le tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub DeList()
     Set temp = ActiveWorkbook.Worksheets("feuil1").ListObjects(1).Range
     ActiveWorkbook.Worksheets("feuil1").ListObjects(1).Unlist
     temp.Clear
    End Sub
    Boisgontier

  5. #5
    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 re
    re
    jacques je peux pas chopper les listobject par leur index il sont pas toujours dans le meme ordre du justement a des suppressions anterieurs

    j'ai essayé d'adapter mais ca fonctionne pas avec les noms

    en gros je doit pouvoir lancer la sub tabl1 36 fois et n'avoir q'un tableau sur le sheet
    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
    25
    26
    27
    28
    29
    30
    31
    Sub tab1()
        Dim entete, new_nom$, themes, lignes
        entete = Array("toto", "titi", "riri", "fifi", "loulou", "truc", "bidule", "machin", "chose")
        new_nom = "pannel1"
        lignes = 6
        themes = "truc bidule" & Date & "/" & "machin"
        create_tableau entete, new_nom, themes, lignes
    End Sub
     
    Function create_tableau(entete, new_nom As String, themes As String, lignes As Long)
        With ActiveSheet
            '************************************************************************************
            'ici je voudrais le supprimer si il existe ainsi que tout mise en couleur ou format sur la plage occupée par le tableau
            Set temp = Range(new_nom & "[#All]")
            If Not temp Is Nothing Then
                '.ListObjects(new_nom).Unlist
                Union(temp, temp.Offset(-2)).EntireRow.Delete
            End If
            '************************************************************************************
            .Cells(Rows.Count, 1).End(xlUp).Offset(1) = themes
            .ListObjects.Add(xlSrcRange, .Cells(Rows.Count, 1).End(xlUp).Offset(2).Resize(lignes, UBound(entete) + 1), , xlNo).Name = new_nom
            .ListObjects(new_nom).TableStyle = "TableStyleMedium11"
            With Range(new_nom & "[#Headers]")
                .Value = entete
                .Interior.Color = RGB(0, 100, 0)
                .Font.Color = vbWhite
            End With
            'model d'acces a une colonne :
            'MsgBox Range(new_nom & "[titi]").Address
        End With
    End Function
    [COTE]les lignes doivent etre supprimées et non clear imperativement [/COTE]
    et le tableau doit etre determiné par sont nom et non son index car le panel1 n'aura pas toujours le meme index
    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

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Je suppose que tu connais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub NomsTableauxDynamiques()
      For s = 1 To Sheets.Count
        For Each n In Sheets(s).ListObjects
           tmp = tmp & "/" & n.Name
        Next n
      Next s
      MsgBox tmp
    End Sub
    Boisgontier

  7. #7
    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,

    je te laisse gérer la suppression de ton "themes"

    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
    25
    26
    27
    28
    29
    30
    31
    Sub tab1()
        Dim entete, new_nom$, themes, lignes
        entete = Array("toto", "titi", "riri", "fifi", "loulou", "truc", "bidule", "machin", "chose")
        new_nom = "Tableaeu1"
        lignes = 6
        themes = "truc bidule" & Date & "/" & "machin"
        create_tableau entete, new_nom, themes, lignes
    End Sub
     
    Function create_tableau(entete, new_nom As String, ByVal themes As String, ByVal lignes As Long)
    Dim Temp As ListObject
        With ActiveSheet
            '************************************************************************************
            'ici je voudrais le supprimer si il existe ainsi que tout mise en couleur ou format sur la plage occupée par le tableau
            On Error Resume Next
                Set Temp = .ListObjects(new_nom).Range
            On Error GoTo 0
            If Not Temp Is Nothing Then Temp.EntireRow.Delete
            '************************************************************************************
            .Cells(Rows.Count, 1).End(xlUp).Offset(1) = themes
            With .ListObjects.Add(xlSrcRange, .Cells(Rows.Count, 1).End(xlUp).Offset(2).Resize(lignes, UBound(entete) + 1), , xlNo)
                .Name = new_nom
                .TableStyle = "TableStyleMedium11"
                With .HeaderRowRange
                    .Value = entete
                    .Interior.Color = RGB(0, 100, 0)
                    .Font.Color = vbWhite
                End With
            End With
        End With
    End Function

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

Discussions similaires

  1. [XL-2010] suprime ligne avant un tableau
    Par Naoned005 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/06/2012, 19h04
  2. [AC-2003] suprimer caracteres avant enregistrement
    Par chuspyto dans le forum VBA Access
    Réponses: 11
    Dernier message: 20/09/2009, 20h15
  3. À lire OBLIGATOIREMENT avant de poster sur ce forum
    Par ok.Idriss dans le forum Débats sur le développement - Le Best Of
    Réponses: 2
    Dernier message: 24/09/2006, 23h21
  4. A lire impérativement avant de poster un message
    Par ok.Idriss dans le forum Demandes
    Réponses: 0
    Dernier message: 01/05/2002, 18h57
  5. IMPORTANT! A lire avant tout chose
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 0
    Dernier message: 01/05/2002, 16h55

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