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 Insérer des Lignes


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Technicien R&D
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut VBA Insérer des Lignes
    Bonjour à tous,

    Je débute débute sur les macros excel.
    Mais j'aimerai vraiment progresser.

    Voici le problème qui se présente à moi aujourd'hui:
    J'ai un tableau excel de 900 lignes et 4 colonnes.
    1-J'aimerai sélectionner la première ligne et insérer 2 lignes en dessous.
    Idem avec la deuxième ligne (qui du coup devient la quatrième après insertion des 2 lignes).
    Et ce jusqu'à la dernière ligne qui n'est pas toujours la 900ème.
    2-En plus j'aimerais que le contenu de la ligne 1 se copie dans les 2 lignes insérées.
    Idem pour la ligne 2, (devenue la 4).
    Et ce jusqu'à la dernière ligne.

    Merci pour votre aide et vraiment heureuse de faire partie du forum

  2. #2
    Membre averti

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 318
    Points
    318
    Billets dans le blog
    1
    Par défaut Code pour insérer des lignes
    Salut,

    l'instruction Rows(10).Insert devrait être ton ami maintenant. C'est le code VBA pour insérer des lignes. A toi de voir où l'implémenter dans ton code.

    Bon courage

    Cordialement
    xela57

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Technicien R&D
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut VBA Insérer des Lignes
    Merci Xela57 pour cette information.
    Cependant, je suis tellement débutante que je n'ai même pas de code.
    Si ce n'est celui enregistré quand je clique sur "Enregistrer macro".
    Dans ce cas j'obtiens cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Rows("3:4").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A2:D2").Select
        Selection.Copy
        Range("A3:D4").Select
        ActiveSheet.Paste
    End Sub
    Le souci c'est que les numéros de lignes ne s'incrémentent pas jusqu'en bas du tableau.

    Pouvez-vous me la corriger?

    Merci beaucoup pour votre aide.

  4. #4
    Membre averti

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 318
    Points
    318
    Billets dans le blog
    1
    Par défaut Code macro
    Tout d'abord première étape importante quand tu veux programmer du VBA, ajoute le menu développeur dans ton ruban Excel

    Sinon voici une solution pour incrémenter tes lignes dans un code VBA

    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
     
    'Procédure sur l'insertion de ligne dans un tableau
    Sub Inserer()
        'Déclaration des variables
        Dim i, j As Integer
        'Pour parcourir les lignes de ton tableau, on utlise une boucle for (elle va de 1 à 900)
        'L'instruction "Step 3" permet ici de passer le compteur de 3 en 3 vu que tu veux insérer 2 lignes
        For i = 1 To 900 Step 3
        'Insertion des 2 lignes
            Rows(i + 1).Insert
            Rows(i + 2).Insert
            'Nouvelle boucle For qui est "imbriquée" qui va parcourir les colonnes de ton tableau
            For j = 1 To 4
            'Ajout des valeurs de ta ligne dans les cellules de tes nouvelles lignes'
                Cells(i + 1, j) = Cells(i, j)
                Cells(i + 2, j) = Cells(i, j)
            Next j
        Next i
    End Sub
    Voilà voici ton premier code VBA

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Technicien R&D
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Code macro
    Merci beaucoup xela57
    C'est génial.
    Connais-tu également le code pour non pas aller jusque la ligne 900 mais jusque la dernière ligne non vide.

    Merci, Merci

  6. #6
    Membre averti

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 318
    Points
    318
    Billets dans le blog
    1
    Par défaut Instruction
    Oui il y a une commande excel qui peux tester si une cellule est vide.
    Elle s'appelle "IsEmpty"

    ce qui nous donnerait le code suivant :
    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
    'Procédure sur l'insertion de ligne dans un tableau
    Sub Inserer()
        'Déclaration des variables
        Dim i, j As Integer
        'Pour parcourir les lignes de ton tableau, on utlise une boucle for (elle va de 1 à 900)
        'L'instruction "Step 3" permet ici de passer le compteur de 3 en 3 vu que tu veux insérer 2 lignes
        For i = 1 To 900 Step 3
        'Insertion des 2 lignes
            Rows(i + 1).Insert
            Rows(i + 2).Insert
            'Nouvelle boucle For qui est "imbriquée" qui va parcourir les colonnes de ton tableau
            For j = 1 To 4
            'Ajout des valeurs de ta ligne dans les cellules de tes nouvelles lignes'
                Cells(i + 1, j) = Cells(i, j)
                Cells(i + 2, j) = Cells(i, j)
                If Cells(i,j) Is Empty Then Exit Sub
            Next j
        Next i
    End Sub

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Technicien R&D
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien R&D

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Instruction
    Merci Xela57

    Merci pour votre aide.
    Je me demandai si on ne pouvais pas remplacer le chiffre 900 par un code donnant l'ordre d'aller jusqu'à la dernière ligne non vide.
    L'instruction que vous m'avez donnée arrête rapidement la macro, dès que les 2 1ères lignes sont insérées, car le tableau se retrouve temporairement avec des cases vides, juste avant l'action de copier/coller.

    Déjà la première mouture a permis de me débloquer et je vous en remercie.
    A bientôt.

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par ilemoigne Voir le message
    Merci Xela57

    Merci pour votre aide.
    Je me demandai si on ne pouvais pas remplacer le chiffre 900 par un code donnant l'ordre d'aller jusqu'à la dernière ligne non vide.
    Bonjour,

    En complétant le code de Xela57 que je n'ai pas le temps de tester, je pense que c'est ce que vous voulez ...

    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 Inserer()
        'Déclaration des variables
        Dim i, j As Integer, Nbl as Integer
        Dim Ws as worksheet
     
         Set Ws = ThisWorkbook.Worksheets("nom_de_la_feuille_ici")   
         Nbl = Ws.Range("A1").CurrentRegion.Rows.Count 
     
        'Pour parcourir les lignes de ton tableau, on utlise une boucle for (elle va de 1 à 900)
        'L'instruction "Step 3" permet ici de passer le compteur de 3 en 3 vu que tu veux insérer 2 lignes
        For i = 1 To Nbl Step 3
        'Insertion des 2 lignes
            Rows(i + 1).Insert
            Rows(i + 2).Insert
            'Nouvelle boucle For qui est "imbriquée" qui va parcourir les colonnes de ton tableau
            For j = 1 To 4
            'Ajout des valeurs de ta ligne dans les cellules de tes nouvelles lignes'
                Cells(i + 1, j) = Cells(i, j)
                Cells(i + 2, j) = Cells(i, j)
            Next j
        Next i
    End Sub
    Cordialement
    Lorsque vous avez obtenu une réponse satisfaisante à votre discussion, N'oubliez pas de cliquer sur

    L'erreur n'annule pas la valeur de l'effort accompli.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Insérer 2 lignes sous une condition
    Bo

    J'aimerai parcourir un tableau et lorsque la valeur de la colonne 4 et celle de la colonne 10 sont toutes les 2 égales à 0, colorier la ligne et insérer deux ligne en dessous. J'ai essayé de modifier votre code sans succès. pouvez-vous m'aider.

    A cause du "step 3" de la boucle for, le programme saute certaine lignes.

    Dans l'attente, merci d'avance..

    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
    Private Sub CommandButton1_Click()
     
        'Déclaration des variables
        Dim i, j As Integer
        'Pour parcourir les lignes de ton tableau, on utlise une boucle for (elle va de 1 à 900)
        'L'instruction "Step 3" permet ici de passer le compteur de 3 en 3 vu que tu veux insérer 2 lignes
        For i = 7 To 1500 Step 3
     
        'Insertion des 2 lignes
            If Cells(i, 4).Value = Cells(i, 11).Value Then
     
                Rows(i).Interior.Color = RGB(100, 100, 100)
                Rows(i + 1).Insert
                Rows(i + 2).Insert
     
            'Nouvelle boucle For qui est "imbriquée" qui va parcourir les colonnes de ton tableau
            For j = 1 To 4
            'Ajout des valeurs de ta ligne dans les cellules de tes nouvelles lignes'
                Cells(i + 1, j) = Cells(i, j)
                Cells(i + 2, j) = Cells(i, j)
                'If Cells(i, j) Is Empty Then Exit Sub
            Next j
     
            End If
     
        Next i
     
    End Sub

Discussions similaires

  1. [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
  2. [SQL-VBA]fusionner des lignes
    Par shagun dans le forum Requêtes et SQL.
    Réponses: 42
    Dernier message: 13/04/2007, 13h37
  3. [VBA] Supprimer des lignes dans une table
    Par shadockgreg dans le forum Access
    Réponses: 6
    Dernier message: 22/11/2006, 09h58
  4. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45
  5. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52

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