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 :

Insertion d'une ligne sur deux dans un listobject - Erreur n° 9 [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Travailleur social
    Inscrit en
    Février 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Travailleur social
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 134
    Par défaut Insertion d'une ligne sur deux dans un listobject - Erreur n° 9
    Hello le forum

    J'ai créé une petite macro me permettant d'insérer une ligne vide entre deux lignes de données

    Le style n'est peut-être pas trop académique mais le résultat est conforme à mes attente.

    Le seul problème est que j'ai une erreur N° 9 à la fin de ma macro, lorsque je sors de la boucle.

    Un grand merci pour votre aide


    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 Ins_Lign_1Sur2()
    'Macro permettant d'insérer une ligne vide entre chaque ligne de données
     
    Dim i As Integer 'Boucle
    Dim Ligne_Tab As Long 'Nombre de ligne dans le tableau
    Dim Tableau As ListObject 'Définition du tableau
    Dim Ligne_Vide As Long 'Lignes vides insérées entre chaque ligne
     
    Set Tableau = ActiveSheet.ListObjects(1)
     
    Ligne_Tab = Tableau.Range.Rows.Count 'Les lignes du tableau sont comptées
     
    Ligne_Vide = (Ligne_Tab + Ligne_Tab)
     
    For i = 2 To Ligne_Vide Step 2
     
       Tableau.ListRows(i).Range.Insert Shift:=xlDown
     
    Next i
     
    End Sub
    Fichiers attachés Fichiers attachés

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

    Les insertions et suppressions en chaine, il vaut mieux les commencer par le bas du tableau pour éviter de se mêler les pinceaux avec le comptage des lignes.

    Voici pour ajouter une ligne vide entre les lignes de données. Avec .Count+1, on ajoute aussi une ligne après la dernière ligne. Si on ne veut ajouter que entre les lignes existantes, il faut supprimer le -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
      Dim l As ListObject
      Dim i As Long
     
      Set l = Range("tableau1").ListObject
      For i = l.ListRows.Count + 1 To 2 Step -1
        l.ListRows.Add i
      Next
    End Sub

    Au delà de cette précision, je suis curieux de savoir à quoi ça sert. Normalement, dans un tableau structuré, on n'a pas de lignes entièrement vides et l'ordre des lignes, à de rares exceptions près, ne devrait pas avoir d'importance. Insérer des lignes vides puis trier va bien foutre la pagaille dans le tableau. Quelle est la finalité de l'opération?
    "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...
    ---------------

  3. #3
    Membre confirmé
    Homme Profil pro
    Travailleur social
    Inscrit en
    Février 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Travailleur social
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 134
    Par défaut
    Merci Pierre d'avoir éclairé ma lanterne.

    L'insertion a pour but d'insérer des infos complémentaires à la ligne précédente.

    Très bonne fin de journée

  4. #4
    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
    Citation Envoyé par olivepao Voir le message
    [...]
    L'insertion a pour but d'insérer des infos complémentaires à la ligne précédente.[...]
    Et donc, comme je le disais, bonjour le chaos en cas de tri des lignes

    La raison d'être des tableaux structurés est de stocker TOUTE l'information relative à une donnée sur LA ligne de cette donnée, et pas sur plusieurs lignes pour UNE donnée. De plus, dans un TS, une colonne ne contient que des données d'une seule nature (prénom, ID, ...). En ajoutant des lignes pour "compléter" l'info, tu vas casser la structure de ton tableau, tant pour les lignes que pour les colonnes.

    Ca n'a pas de sens. Il serait plus intéressant d'ajouter des colonnes pour permettre l'ajout d'infos.
    "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...
    ---------------

  5. #5
    Membre confirmé
    Homme Profil pro
    Travailleur social
    Inscrit en
    Février 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Travailleur social
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 134
    Par défaut
    Merci Pierre pour ces précisions
    Je vais y penser
    Bonne soirée

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

Discussions similaires

  1. colorer une ligne sur deux dans une listbox
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/08/2010, 13h59
  2. [XL-2007] Filtrage d'une ligne sur deux dans un tableau
    Par Flo Flo dans le forum Excel
    Réponses: 5
    Dernier message: 29/06/2010, 15h51
  3. Réponses: 1
    Dernier message: 11/11/2009, 11h55
  4. Colorer une ligne sur deux dans plage de cellules
    Par JML62400 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2009, 19h48
  5. Colorer une ligne sur deux dans un tableau croisé
    Par markoBasa dans le forum iReport
    Réponses: 1
    Dernier message: 25/09/2008, 11h15

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