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 :

pb: inserer des lignes ds feuille 1 et d'y copier autres provenant de feuille 2


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut pb: inserer des lignes ds feuille 1 et d'y copier autres provenant de feuille 2
    j ai deux liste de données un sur la feuille 1 et l'autre sur la feuille 2

    je souhaite créer une macro qui me permettra à l'utilisateur de choisir le nombre de lignes a insérer dans la feuille 1 et également de choisir l'emplacement de l'insertion (cad après quelle ligne on va insérer les nouvelles lignes). Ensuite de copier le même nombre de lignes (que le nombre qu on a insérer dans la feuille 1) de la feuille 2 dans les lignes qu'on a insérer dans la feuille 1.
    L'utilisateur choisira le pas d'insertion qui s'incrémente et la copie des lignes de la feuille 2 également s'incrémente.

    (ex: dans la feeuille 1 après les 3 premières ligne j'insère 4 ligne et dans ces 4 lignes je copie les 4 lignes de la feuille 2 , puis je saute 3 ligne dans la feuille 1 et j'insère 4 nouvelles lignes et je copie dedans les 4 lignes suivantes de la feuille 2 et ainsi de suite)

    J'espère que j'entais claire

    Voici le code mais qui ne fais pas ce que je veux:

    voila mon code

    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
    Sub inser_copier()
    Dim i As Integer, j As Integer
    Dim x As Integer, y As Integer
    Dim nbs As Integer, nbi As Integer
    x = 1
    y = 0
    nbs = InputBox("combien de ligne vous voulez sauter?")
    nbi = InputBox("combien de ligne vous voulez insérer?")
     
    For i = 1 To 50 Step nbs
     
    For j = 1 To nbi
    Cells(i + (nbs + y) - 1, 1).Select
    Selection.EntireRow.Insert Shift:=xlDown
    y = y + 1
    Next
     
    For j = 1 To nbi
     
    Sheets("Feuil2").Select
    Sheets("Feuil2").Rows(x & ":" & (x + nbi) - 1).Select
    Selection.Copy
    Sheets("Feuil1").Select
    ActiveSheet.Paste
    Next
     
    x = x + nbi
    Next
    End Sub

    merci pour votre aide

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Bonjour
    A première vue, j'arrive pas à expliquer mais exemple:

    Ligne 25
    Insertion de 3 lignes
    Donc, ta prochaine insertion prévue à 25 + n lignes se trouve en réalité à 25 + n lignes + 3

    si je me fais bien comprendre
    Il faut gérer le pointeur de ligne d'insertion différement du compteur de ta boucle
    Slts

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    exemple :

    après la Ligne 25
    je veux Inser 3 lignes vide

    dans ces 3 lignes je souhaite copier les premières 3 lignes qui se trouvent dans la feuille 2.

    la je suis a 28 lignes.

    a partir dela je saute 25 lignes (après 53) puis j'insere 3 nouvelles lignes.

    dans ces 3 nouvelles lignes je copie les 3 lignes suivanes (4, 5 et 6) provenant de la feuilles 2 et ainsi de suite

    j espere que j ai bien explique

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Oui, mais...
    Je confirme, tu gères ton compteur I sans l'incrémenter après l'insertion des lignes
    Voici le code (testé)
    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 inser_copier()
    Dim I As Integer, J As Integer
    Dim X As Integer
    Dim NBS As Integer, NBI As Integer
    Dim Ligne As Integer
    X = 1
    NBS = InputBox("combien de ligne vous voulez sauter?")
    NBI = InputBox("combien de ligne vous voulez insérer?")
    Ligne = NBS
     
    For I = 1 To 50 Step NBS
     
        For J = 1 To NBI
            Cells(Ligne + J, 1).Select
            Selection.EntireRow.Insert Shift:=xlDown
            Worksheets("Feuil1").Cells(Ligne + J, 1) = Worksheets("Feuil2").Cells(J, 1)
        Next
        Ligne = Ligne + NBS + NBI
    Next
    End Sub
    Slts

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    c'est exact mais
    il me copie toujours les meme cellules de la feuille 2 (cad les n prmierres), alors que je souhaite qu il incrémente d'un pas NBI

    exemple feuille 1:

    ligne 1
    ligne 2
    ligne 3
    4: ligne inserer 1 copier ligne 1 feuille 2
    5: ligne inserer 2 copier ligne 2 feuille 2
    6: ligne inserer 3 copier ligne 3 feuille 2
    7: ligne inserer 4 copier ligne 4 feuille 2

    ligne 8
    ligne 9
    ligne 10
    11: ligne inserer 1 copier ligne 5 feuille 2
    12: ligne inserer 2 copier ligne 6 feuille 2
    13: ligne inserer 3 copier ligne 7 feuille 2
    14: ligne inserer 4 copier ligne 8 feuille 2

    et ainsi de suite
    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    je pense que c'est ok

    j ai rajoute un compteur et je pense c'est comme ca

    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 inser_copier()
    Dim I As Integer, J As Integer
    Dim X As Integer
    Dim NBS As Integer, NBI As Integer
    Dim Ligne As Integer
    Dim LigneNBI As Integer
    X = 1
    NBS = InputBox("combien de ligne vous voulez sauter?")
    NBI = InputBox("combien de ligne vous voulez insérer?")
    Ligne = NBS
    LigneNBI = 0
    For I = 1 To 50 Step NBS
     
        For J = 1 To NBI
            Cells(Ligne + J, 1).Select
            Selection.EntireRow.Insert Shift:=xlDown
            Worksheets("Feuil1").Cells(Ligne + J, 1) = Worksheets("Feuil2").Cells(J + LigneNBI, 1)
        Next
        Ligne = Ligne + NBS + NBI
        LigneNBI = LigneNBI + NBI
    Next
    End Sub

  7. #7
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Désolé, j'avais pas vu ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Cells(Ligne + J, 1) = Worksheets("Feuil2").Cells((Int(I / NBS)) * NBI + J, 1)
    Testé et approuvé
    Slts
    Pour info, pour mettre du code, clique sur le "#" de l'éditeur

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Par défaut Insérer des lignes...
    Avec ce code ça a l'air de marcher:
    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 inser_copier()
        Dim i As Integer, j As Integer
        Dim x As Integer, y As Integer
        Dim nbs As Integer, nbi As Integer
        Dim f1 As Worksheet, f2 As Worksheet
        Set f1 = Worksheets("Feuil1")
        Set f2 = Worksheets("Feuil2")
        nbs = InputBox("combien de ligne vous voulez sauter?")
        nbi = InputBox("combien de ligne vous voulez insérer?")
     
        For i = 1 To 10
     
            Range(f1.Cells(1 + i * nbs + (i - 1) * nbi, 1), f1.Cells(i * nbs + i * nbi, 1)).Select
            Selection.EntireRow.Insert
     
            Range(f2.Rows(1 + (i - 1) * nbi), f2.Rows(i * nbi)).Copy
            f1.Cells(1 + i * nbs + (i - 1) * nbi, 1).Select
            ActiveSheet.Paste
     
        Next i
     
    End Sub
    Bonne chance,
    Gerard123

Discussions similaires

  1. Inserer des lignes avec DOM : rester au bon endroit dans la page
    Par sebhm dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/10/2009, 18h22
  2. [XL-2003] inserer des lignes vide
    Par Philippe76 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/08/2009, 21h09
  3. inserer des lignes
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2008, 10h31
  4. inserer des lignes automatiquement
    Par ANTMA dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/12/2007, 12h42
  5. [Batch] inserer des ligne dans un prog par batch
    Par mirlidas dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 28/04/2007, 11h42

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