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 :

Copie d'un tableau d'une feuille à une autre et suppression de ligne [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 619
    Par défaut Copie d'un tableau d'une feuille à une autre et suppression de ligne
    Bonjour,

    Dans un même classeur, je souhaite copier un tableau de la feuille 1 à la feuille 2 qui peut déjà contenir des lignes puis supprimer les lignes qui ont la colonne G non renseignée par "x" une fois qu'il est dans la feuille 2.

    Pb: la suppression ne se fait pas. Q

    Je ne vois pas d'où cela provient.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Dim wbo1 As Workbook
    Dim wso1 As Worksheet, wso2 As Worksheet
     
    Dim Sh As Worksheet
    Dim plage1 As Range
    Dim plage2 As Range
     
    Dim dl1 As String
    Dim dld As Long ' dernière ligne
    Dim wbsd As Worksheet
     
     
       Dim I As Integer
       Dim nb_lig As Integer
     
       Set wbsd = Sheets(2)
       Set wso1 = Sheets(1)
     
       dld = wbsd.Cells(wbsd.Rows.Count, 2).End(xlUp).Row + 1
     
       With wso1
            dl1 = wso1.Cells.SpecialCells(xlCellTypeLastCell).Address(0, 0)
            Set plage1 = wso1.Range("a4:" & dl1)
            plage1.Copy
            wbsd.Range("a" & dld).PasteSpecial Paste:=xlPasteValues
       End With
     
       ' Suppression des états non renseignés
     
       Sheets(2).Activate
     
       nb_lig = Sheets(2).Range("E65536").End(xlUp).Row
     
       MsgBox nb_lig
     
          For I = nb_lig To 4 Step -1
             MsgBox I
             If Range("G" & I).Value <> "x" Then Rows(I).Delete
          Next I
    Merci d'avance.
    Julien.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pourquoi transférer toutes les lignes puis supprimer celle non renseignées en colonne G.
    Ci joint proposition qui permet de filtrer la 1ère feuille sur les cellules renseignées de la colonne G et de copier les lignes résultantes du filtre.

    Je suppose que le ligne 3 de la 1ère feuille est celle des titres
    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 Test()
    Dim LastLig As Long, NewLig As Long
    Dim Sh As Worksheet
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set Sh = Worksheets(2)
    NewLig = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Row + 1
    With Worksheets(1)
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range("G3:G" & LastLig).AutoFilter Field:=1, Criteria1:="<>", Criteria2:="<> ", Operator:=xlOr
        If .Range("G3:G" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
            .Range("A4:X" & LastLig).SpecialCells(xlCellTypeVisible).Copy
            Sh.Range("A" & NewLig).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
        End If
        .AutoFilterMode = False
    End With
    Set Sh = Nothing
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Edit
    Pour transférer seulement les lignes avec un x en colonne G, changer la ligne 12 de filtrage par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Range("G3:G" & LastLig).AutoFilter Field:=1, Criteria1:="x"

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 619
    Par défaut
    Merci pour la réponse.

    Je souhaite faire un couper de la feuille 1 vers la feuille 2.
    Le script me permet de faire un copier-coller.
    Que dois-je faire pour supprimer ce que j'ai copié ?

    Merci d'avance.
    Julien.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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 Test()
    Dim LastLig As Long, NewLig As Long
    Dim Sh As Worksheet
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set Sh = Worksheets(2)
    NewLig = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Row + 1
    With Worksheets(1)
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range("G3:G" & LastLig).AutoFilter Field:=1, Criteria1:="x"
        If .Range("G3:G" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
            .Range("A4:X" & LastLig).SpecialCells(xlCellTypeVisible).Copy
            Sh.Range("A" & NewLig).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
            .Range("A4:A" & LastLig).EntireRow.Delete
        End If
        .AutoFilterMode = False
    End With
    Set Sh = Nothing
    Application.Calculation = xlCalculationAutomatic
    End Sub

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 619
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. [XL-2010] Copie d'un tableau d'une feuille à une autre : une cellule ne se recopie pas
    Par mchouv dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/07/2014, 13h47
  2. Code qui marche à moitié (copie d'une feuille à une autre)
    Par thierryakaguy dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 22/07/2009, 17h58
  3. Rafraichir un tableau croisé dynamique dans une feuille
    Par onejock dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/07/2008, 11h18
  4. Réponses: 1
    Dernier message: 19/02/2007, 20h18
  5. [VBA-E] Probleme COPY PASTE d'une feuille à une autre
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 18h56

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