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 de ligne avec VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut Insertion de ligne avec VBA
    Bonjour,

    j'ai un petit souci je voudrais inserer des lignes dans une feuille Excel déjà remplie toutes les 7 lignes....

    je vous explique j'ai deux feuilles excel dans mon classeur et je souhaite rapatrié les données d'une feuille dans mon autre feuille (qui est déjà rempli de donné) mais les insérer dans de nouvelle ligne et cela toutes les 7 lignes

    Par avance merci du coup de main

  2. #2
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    En gros je dois rajouter une ligne de ma feuille 2 dans ma feuille 1 toutes les 7 lignes

    Les lignes de ma feuille 2 que je rapatrie ne sont pas les même à chaque fois

    Exple
    Feuille 2 ligne 1 colonne 3 rapatrié dans feuille 1 ligne 7 colonne 9
    Feuille 2 ligne 2 colonne 3 rapatrié dans feuille 1 ligne 14 colonne 9 (+7 lignes)
    etc...



    Aidez moi svp ......

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Salut

    J'ai solution à ton problème mais va falloir être plus claire.

    Ce sont des lignes entières que tu veux insérer ? ou bien ce sont des cellules entières que tu veux insérer ? ou bien est-ce que ce sont juste les valeurs de ces cellules de la feuil2 que tu veux obtenir dans la feuil1, sans insérer ni cellule ni colonne ni ligne mais juste en récupérant les données?

    Après, ca sera pas difficile mais faut au moins qu'on sache ca.

    a+
    Mél

  4. #4
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    En fait se sont les valeurs des cellules de ma feuille 2 que je dois inserrer dans ma feuille 1 toutes les 7 lignes mais pour se faire je dois rajouter une ligne toute les 7 lignes

    Exple
    Feuille 2 cellule de la ligne 1 colonne 3 rapatrié dans feuille 1 Cellule de nouvelle ligne 7 colonne 9
    Feuille 2 ligne 2 colonne 3 rapatrié dans feuille 1 ligne 14 colonne 9 (+7 lignes)
    etc...

    Pour être plus claire c'est l'ensemble d'une colonne de ma feuille 2 (49 cellules de ma colonne ) que je dois rapatrier dans la colonne de ma feuille 1 sans écraser les données déjà existante donc en insérant des lignes....et ceux toutes les 7 lignes de ma colonne de mon fichier...

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Alors ca ca insère une ligne entière:

    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
    Sub Feuil2VersFeuil1()
     
    Dim i As Integer, j As Integer
     
    j = 7
    i = 1
     
    While Not IsEmpty(Worksheets("Feuil2").Cells(i, 3))
        Worksheets("Feuil1").Rows(j).Insert Shift:=xlDown
        Worksheets("Feuil1").Cells(j, 9) = Worksheets("Feuil2").Cells(i, 3).Value
        j = j + 7
        i = i + 1
    Wend
     
    End Sub
    Après j'ai pas très bien compris si c'est une cellule que tu veux insérer ou une ligne.

    Dis moi ce que ca donne

  6. #6
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    En fait c sa mais la il me rentre toutes les 7 lignes une cellule apres l'autre les cellules de ma colonne de ma feuille 2 alors que je veux que sa soit l'ensemble de ma colonne de ma feuille 2 qui soit insérer toutes les 7 lignes.

    Merci bocoup

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Comprends pas.

    Ca veut dire que tu as 49 cellules les unes en dessous des autres dans te feuil2 et que tu veux que ces 49 cellules soient insérées toutes ensembles a chaque 7ème ligne dans ta feuil1 ?

    T'auras donc les 7 premieres lignes de ta feuil1 colonne 9 les valeurs de la feuil1, puis les 49 lignes suivantes seront celles de la feuil2, puis les 7 suivantes les données originales de la feuil1, puis les 49 lignes suivantes les mm que les 49 précédentes et ainsi de suite ?

  8. #8
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    oui c sa et il faut que sa se répète jusquà la fin de ma feuille 1 (jusquà qu'il nyest plus de données - jusqu'à cellule vide....)

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Fais ca et dis moi:
    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 Feuil2VersFeuil1()
     
    Dim i As Integer, j As Integer
    Dim plage As Range
     
    j = 7
    i = 1
     
    Set plage = Range(Worksheets("Feuil2").Cells(1, 3), Worksheets("Feuil2").Cells(49, 3))
     
     
    While Not IsEmpty(Worksheets("Feuil2").Cells(i, 3))
        Worksheets("Feuil1").Rows(j & ":" & j + 48).Insert Shift:=xlDown
        plage.Copy
        Worksheets("Feuil1").Cells(j, 9).PasteSpecial (xlPasteValues)
        j = j + 56
        i = i + 1
    Wend
     
    End Sub
    Non pardon :

    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 Feuil2VersFeuil1()
     
    Dim i As Integer, j As Integer
    Dim plage As Range
     
    j = 7
    i = 1
     
    Set plage = Range(Worksheets("Feuil2").Cells(1, 3), Worksheets("Feuil2").Cells(49, 3))
     
     
    While Not IsEmpty(Worksheets("Feuil1").Cells(j, 9))
        Worksheets("Feuil1").Rows(j & ":" & j + 48).Insert Shift:=xlDown
        plage.Copy
        Worksheets("Feuil1").Cells(j, 9).PasteSpecial (xlPasteValues)
        j = j + 56
        i = i + 1
    Wend
     
    End Sub

  10. #10
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Ca ne marche pas il met

    La méthode Range de l'objet worksheet a échoué

    Voilà le code que j'utilise :

    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 Feuil2VersFeuil1()
     
    Dim i As Integer, j As Integer
    Dim plage As Range
     
    j = 7
    i = 1
     
    Set plage = Range(Worksheets("autres codes").Cells(1, 3), Worksheets("autres codes").Cells(45, 3))
     
     
    While Not IsEmpty(Worksheets("Sheet 1").Cells(j, 9))
        Worksheets("Sheet 1").Rows(j & ":" & j + 48).Insert Shift:=xlDown
        plage.Copy
        Worksheets("Sheet 1").Cells(j, 9).PasteSpecial (xlPasteValues)
        j = j + 56
        i = i + 1
    Wend
     
    End Sub

    Merci du coup de main

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour ANTMA,
    essaye avec ceci
    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
    Sub InsertLigne7()
    Dim i As Integer, g As Integer
    g = 7
        Sheets("feuil2").Select
    'Si les données nz sont pas dans la colonne A changer la lettre
        For i = 1 To Range("A65536").End(xlUp).Row
            Sheets("feuil1").Select
            Rows(g).Select
            Selection.Insert Shift:=xlDown
            Sheets("feuil2").Select
            Rows(i).Select
            Selection.Copy
            Sheets("feuil1").Select
            Rows(g).Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
            g = g + 7
        Next i
    End Sub
    J'ai pas vraiment tester mais ça devrait faire l'affaire.
    A+

  12. #12
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Bonjour,

    suis désolé d'embêter tout le monde mais cela ne marche pas

    le message d'erreur est "la méthode select de la classe range a échoué "

    Voici le code que j'ai utilisé

    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 InsertLigne7()
    Dim i As Integer, g As Integer
    g = 7
        Sheets("autres codes").Select
        For i = 1 To Range("D65536").End(xlUp).Row
            Sheets("Sheet 1").Select
            Rows(g).Select
            Selection.Insert Shift:=xlDown
            Sheets("autres codes").Select
            Rows(i).Select
            Selection.Copy
            Sheets("Sheet 1").Select
            Rows(g).Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
            g = g + 7
        Next i
    End Sub

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Où est écrit le code que tu nous montres?
    Dans un module de feuille ou dans un module standard?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    J'ai tester et le code que je t'ai passé fonctionne.
    Remarques:
    Le nom de feuille "Sheet1" est en principe le nom par défaut d'une feuille dans Excel Anglais et il ne devrait pas y avoir d'espace entre Sheet et 1.
    Comme précisé par AlainTech le code doit être dans un module.
    Ensuite test en pas à pas , mettre le curseur dans la macro et taper F8 pour avancer d'une ligne, voir la ligne où l'erreur se produit.
    Fait déjà celà et revient avec l'endroit où éventuellement ça plante.
    A+
    Edit:
    En relisant poste 7 et 8, je ne suis pas certain que c'est exactement ce que tu veux, quand le code fonctionne, s'il nest pas conforme dit-le, il y aurra un petit changement à faire, mais il faudrait que l'explication soit plus claire.

  15. #15
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    bonjour,

    Effectivement le code marche mais le problème est qu'il m'insère une seul ligne alors que je dois insérer 45 lignes toutes les 7 lignes dans ma feuille 1 nommé "Sheet 1" (je confirme il y a bien un espace entre sheet et 1).

    mes données à insérer se trouve dans la feuille "autres code" il y 45 lignes à insérer

    je dois donc insérer ces 45 lignes toutes les 7 lignes dans ma feuille 1 et ceux jusquà la ligne 1520 +45

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    bonjour,
    j'ai testé sur plusieurs lignes et le code fonctionne...
    Les données de la feuille "autres code" commence bien en "D" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 To Range("D65536").End(xlUp).Row
    Sinon il faut adapter le "D" de cette ligne
    Pour être certain, fait un pas à pas (F8..F8..F8.. etc..) et vérifie la valeur de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D65536").End(xlUp).Row
    Je ne vois pas d'autre possibilité d'erreur.
    A+

  17. #17
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Merci bocoup pour votre coup de main ça marche ......

    Désolé d'avoir pollué votre forum

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

Discussions similaires

  1. [XL-2003] insertion de ligne en vba avec copie de formules
    Par Adweuz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/05/2011, 08h40
  2. [XL-2003] VBA - Problème d'insertion de ligne avec copie de formules
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2010, 15h22
  3. Gérer les retour à la ligne avec VBA (marge de droite)
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2008, 18h33
  4. Supprimer plusieurs lignes avec VBA
    Par Nounours1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2008, 11h50
  5. INSERT multi-lignes avec valeurs connues
    Par herve91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 23h13

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