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 :

Macro copier/coller avec supression des lignes vers autre feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Macro copier/coller avec supression des lignes vers autre feuille Excel
    Bonjour à vous tous !

    J’ai besoin de votre aide, svp

    J’ai deux feuille d’Excel « BD » et « Extract », je voudrais créer une macro qui va permettre à l'utilisateur de:
    * Copier-coller les lignes qui ont la colonne D "vide" de la liste BD vers Extract. "Ex: ligne 5" (c'est fait)
    * Supprimer ces lignes copiées de la feuille source "BD"
    * détecter les lignes vides et les coller au-dessus. Erreur: j'ajoute une personne directement dans "Extract" et lorsque j'ajoute une autre personne dans la liste principale "BD" et je lance ma macro, il la copie sur la dernière ligne ajoutée dans "Extract"
    J''espère que vous allez pouvoir m'aider.
    Je vous remercie d'avance pour vos réponses
    Vous trouvez en PJ mon fichier Excel.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Voici une proposition de code pour faire ce que tu demandes.

    Je ne suis pas sûr d'avoir compris le point N° 3 ...

    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
    Sub Extract()
    'pour info, j'ai utilisé les noms de code des feuilles. Les feuilles peuvent ainsi être déplacées ou renommées
    'sans que le code ne soit impacté
      Dim NbrLigBD  As Long
      Dim NumLigEX  As Long
     
      'on détermine la dernière ligne dans la feuille BD (j'utilise ici la fonction Excel NBVAL)
      NbrLigBD = Application.CountA(Feuil1.Range("A:A"))
      'on determine la dernière ligne de la feuille Extract (Autre méthode pour déterminer la dernière ligne
      NumLigEX = Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1
      'on parcourt le tableau BD de bas en haut
      'ceci à cause de la suppression de ligne qui peut devenir génante
      For Lig = NbrLigBD To 2 Step -1
        'si la colonne D (N°4) de la ligne en cours de traitement est vide
        If Feuil1.Cells(Lig, 4).Value = "" Then
            'on transfert dans la feuille Extract les données sur la dernière ligne
            Feuil2.Cells(NumLigEX, 1).Value = Feuil1.Cells(Lig, 1).Value
            Feuil2.Cells(NumLigEX, 2).Value = Feuil1.Cells(Lig, 2).Value
            Feuil2.Cells(NumLigEX, 3).Value = Feuil1.Cells(Lig, 3).Value
            Feuil2.Cells(NumLigEX, 4).Value = Feuil1.Cells(Lig, 4).Value
            'Le tablleau à 1 ligne de Plus
            NumLigEX = NumLigEX + 1
            'suppression de la ligne dans la feuille BD
            Feuil1.Cells(Lig, 4).EntireRow.Delete
        End If
      Next
    End Sub
    Le tout est commenté au cas où ...

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci Jérôme pour votre réponse rapide.
    J'ai remplacé feuille1 par BD et feuille2 par Extract mais ça marche pas, il m'a fait ERREUR DE COMPILATION.
    Voilà le 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
    Sub Extract()
    'pour info, j'ai utilisé les noms de code des feuilles. Les feuilles peuvent ainsi être déplacées ou renommées
    'sans que le code ne soit impacté
      Dim NbrLigBD  As Long
      Dim NumLigEX  As Long
     
      'on détermine la dernière ligne dans la feuille BD (j'utilise ici la fonction Excel NBVAL)
      NbrLigBD = Application.CountA(Feuil1.Range("A:A"))
      'on determine la dernière ligne de la feuille Extract (Autre méthode pour déterminer la dernière ligne
      NumLigEX = Extract.Range("A" & Rows.Count).End(xlUp).Row + 1
      'on parcourt le tableau BD de bas en haut
      'ceci à cause de la suppression de ligne qui peut devenir génante
      For Lig = NbrLigBD To 2 Step -1
        'si la colonne D (N°4) de la ligne en cours de traitement est vide
        If BD.Cells(Lig, 4).Value = "" Then
            'on transfert dans la feuille Extract les données sur la dernière ligne
            Extract.Cells(NumLigEX, 1).Value = Feuil1.Cells(Lig, 1).Value
            Extract.Cells(NumLigEX, 2).Value = Feuil1.Cells(Lig, 2).Value
            Extract.Cells(NumLigEX, 3).Value = Feuil1.Cells(Lig, 3).Value
            Extract.Cells(NumLigEX, 4).Value = Feuil1.Cells(Lig, 4).Value
            'Le tablleau à 1 ligne de Plus
            NumLigEX = NumLigEX + 1
            'suppression de la ligne dans la feuille BD
            BD.Cells(Lig, 4).EntireRow.Delete
        End If
      Next
    End Sub

Discussions similaires

  1. [XL-2003] Macro Copier Coller Avec CheckBox et Conditions
    Par HoLbOrN dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/11/2017, 13h09
  2. Macro Copier/ coller avec des écarts non réguliers
    Par Guim's dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/05/2017, 20h20
  3. Couper coller des lignes vers autre feuille
    Par CLAUDE19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2012, 17h30
  4. [XL-2000] macro copier coller avec condition ne marche pas
    Par antfo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/03/2010, 10h54
  5. Macro copier/coller avec tri
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2008, 12h44

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