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 :

Insérer des lignes [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Par défaut Insérer des lignes
    Bonjour,

    J'aimerais insérer une ligne uniquement sous les lignes comportant une référence (voir le fichier exemple).
    Le problème est que mon classeur dispose de plusieurs tableaux (trois) et que pour chacun le nombre de lignes "réf" est variable.

    J'ai commencé à travailler sur ce code, mais je n'arrive pas à ce que je veux.
    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
     
    Sub InserLigne()
    '
    ' InserLigne Macro
    '
        Dim c As Range
        Dim lig As Long
     
        lastrow = Cells(65536, 1).End(xlUp).Row
     
     
        For Each c In Range(Cells(1, 1), Cells(lastrow, 1))
            If c.Value = "Titre 2" Then
                For lig = Cells(c.Row, 1).End(xlUp).Row To 1 Step -1
                    Rows(lig + 1).Insert
                Next lig
     
            End If
     
        Next c
     
     
    End Sub
    Un peu d'aide serait vraiment la bienvenue!
    Merci!!

    Bib00
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut
    bonjour,

    peut-être ceci sans garantie du gouvernement.
    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
    Sub InserLigne()
    '
    Dim plage As range
     
    i = 1
    For i = 1 To 3
        If i = 1 Then Set plage = Sheets("feuil1").range("titre1")
     
        If i = 2 Then Set plage = Sheets("feuil1").range("titre2")
     
        If i = 3 Then Set plage = Sheets("feuil1").range("titre3")
     
        plage.Select
        lastrow = ActiveCell.End(xlDown).Offset(1, 0).Select
        ActiveCell.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Next i
     
    End Sub
    cordialement.

    re...,
    ma précédente réponse a été faite dans l'urgence car je devais sortir.

    petites précisions :
    titres1 titre2 et titre3 sont les noms donnés aux tableaux.
    chaque tableau comprend les entêtes de colonne et impérativement une dernière ligne vide.
    je suppose que tu sais donner un nom à une plage de cellules.

    cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Par défaut
    Bonjour nibledispo,

    Merci pour ta réponse. Mais je ne suis pas sûr d'avoir parfaitement compris.

    titre1, titre2 et titre3 sont les noms que je dois donner aux 3 plages de cellules de mes 3 tableaux?

    Etant donné que les ces plages sont de taille variable, comment faire pour selectionner/nommer?

    Cordialement

  4. #4
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut
    bonjour,

    As-tu testé l'exemple que je t'ai joint sur ma seconde réponse ?

    Cet exemple est le fichier que tu as remis sur lequel j'ai collé la macro en feuil1. Tu peux mettre la macro dans un module si tu préfères.

    les trois noms sont déjà définis. en cliquant sur la case nom de la barre de formulle tu pourras voir la plage.

    la dernière ligne vide que j'ai mentionnée a précisément pour objet de garantir l'incrémentation du nom de la plage tableau (si tu ajoutes une ou plusieurs ligne, elles feront également parties du nom.)

    cordialement.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Par défaut
    Re,

    Très bien, je n'avais pas vu la définition des noms de plages.

    Par contre, concernant les dernières lignes du code, nous avons:

    qui selectionne la plage concernée par l'incrémentation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastrow = ActiveCell.End(xlDown).Offset(1, 0).Select
    qui selectionne la première cellule vide à la suite de la plage concernée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    qui insère une ligne au dessus de la cellule selectionnée.

    Tout cela permet seulement d'insérer une ligne à la fin de chaque plage, et non d'insérer une ligne vide entre chaque ligne de la plage.

    Il est également fort possible que quelque chose m'échappe ...

    Cordialement

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour à tou(te)s,

    essayes comme ça, si ça te convient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub insertion_lignes()
    Dim derlgTab As Integer, x As Integer
    With Sheets("Feuil1")
      derlgTab = .Range("a" & .Rows.Count).End(xlUp).Row
      For x = derlgTab To 4 Step -1
        If .Range("A" & x) Like "ref*" And Not UCase(.Range("A" & x - 1)) Like "TITRE*" Then
          .Rows(x).Insert
        End If
      Next x
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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...)

  7. #7
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut inserer une ligne
    Bonsoir,

    Je n'avais pas compris ta demande. tu aurais dû écrire "intercaler une ligne live entre deux lignes de ref.".

    Regarde si la pièce jointe répond à ton attente.

    J'ai essayé sans succès la version de casefayere. sans doute y a t-il un paramétrage que je néglige. examine la de plus près.

    Cordialement.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/04/2008, 13h58
  2. comparer 2 nombre pour insérer des lignes
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/04/2008, 22h52
  3. Insérer des lignes dans une table efficacement
    Par newbie82 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/07/2007, 17h01
  4. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  5. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45

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