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 :

Copier coller et supprimer des lignes filtrées Erreur 1004 [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut Copier coller et supprimer des lignes filtrées Erreur 1004
    Bonjour,

    Je coince sur une fonction toute simple
    Je souhaite déplacer une plage de lignes en fin de tableau sans toucher au tri complexe existant.
    actuellement je copie colle les lignes une à une, c'est très long !

    J'aissaie de filtrer copier coller supprimer meis ça ne marche pas.
    en fait je n'arrive pas à coller plage, j'ai une erreur 1004 car le format n'est pas compatible

    ActiveSheet.Paste
    merci de votre aide
    Denis

    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
     
     Sub Macro2()
     Dim Ma_Plage
     Dim Plage As Range
     
    'recherche derniere ligne
         Cells(65000, 1).Select
         Selection.End(xlUp).Select:   der_lig_trt = Selection.Row
     
    ' mise en place d'un filtre
        Range("A1").Select
        Selection.AutoFilter
     
    'filtrage
    Selection.AutoFilter Field:=7, Criteria1:="QUANTITE"
    Set Plage = Selection.SpecialCells(xlCellTypeVisible)
    If Not Plage Is Nothing Then
    Plage.Copy
    Range("A" & der_lig_trt + 1).Select
    ActiveSheet.Paste
    Plage.EntireRow.Delete
    Ma_Plage = ""
    'Plage = ""
        ActiveSheet.ShowAllData
    End If
    End Sub

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    en utilisant xlCellTypeVisible veux dire toute les cellules visibles, même les lignes vides
    qui apparaît à la fin de votre filtres.

    pour être plus clair,
    vous voulez copier votre filtre + toute les autre ligne après le filtre à la première cellule vide.
    Cela est impossible car vous voulez copier plus de lignes qu'il en reste

    C'est là que vient l'erreur 1004 à cause de xlCellTypeVisible

  3. #3
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir le fil, bonsoir le forum,

    Peut-être comme ça :

    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 Macro1()
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim PLV As Range 'déclare la variable PLV (PLage Visible)
     
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
    DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 de l'onglet O
    Set PL = O.Range("A2:A" & DL).EntireRow 'définit la plage PL (sans la ligne de titre, la ligne 1)
    O.Range("A1").AutoFilter Field:=7, Criteria1:="QUANTITE" 'filtre la colonne 7 (=G)  de l'onglet O avec "QUANTITE" comme critère
    On Error Resume Next 'gestion des erreurs (en cas d'erreur pase à la ligne suivante)
    Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV (génère une erreur si aucune cellule visible)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'efface l'erreur
        GoTo suite 'va à l'étiquette "suite"
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    PLV.Copy O.Cells(DL + 1, 1) 'copie la plage visible PLV à partir de la cellule ligne DL + 1 colonne 1
    PLV.Delete 'supprime la plage visible
    suite: 'étiquette
    O.Range("A1").AutoFilter 'supprime le filtre automatique
    End Sub

  4. #4
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Merci à GNAIN pour m'avoir expliqué pourquoi ça ne marchait pas.

    Merci à THAUTHEME pour la solution.

    Bonne journée à tous.
    Denis

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

Discussions similaires

  1. VB6 - copier/coller entre 2 appli ayant VBA - erreur 1004
    Par thomaz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/10/2012, 16h47
  2. Copier des lignes filtrées
    Par Liam12 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2010, 19h01
  3. Copier des lignes filtrées
    Par sunstrike69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2009, 18h05
  4. Filtre qui supprime des lignes
    Par bibi5883 dans le forum Débuter
    Réponses: 4
    Dernier message: 29/05/2007, 14h23
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

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