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 :

boucle (supprimer une ligne et la copier sur une autre feuille)


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut boucle (supprimer une ligne et la copier sur une autre feuille)
    Bonjour, j'ai un souci dans ma boucle. Le but de ma macro est d'éliminer les lignes de la "feuil1" qui ne répondent pas aux conditions et de les copier sur une autre feuille (feuil 2).Voici ma macro:

    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 macro()
    derniereLigne = ActiveSheet.UsedRange.Rows.Count
    For r = derniereLigne To 1 Step -1
    Sheets("feuil1").Select
    If Sheets("feuil1").Range("P" & r).Value = "Vrai" Then
        If Sheets("feuil1").Range("Q" & r).Value = "Vrai" Then
            If Sheets("feuil1").Range("R" & r).Value = "Vrai" Then
                If Sheets("feuil1").Range("S" & r).Value = "Vrai" Then
                    Cells(r, "A").EntireRow.Copy
                    Rows(r).Delete
                    Lign = Worksheets("feuil2").Cells(Cells.Rows.Count, "A").End(xlUp).Row
                    Worksheets("feuil2").Select
                    Cells(Lign + 1, 1).Paste
                End If
            End If
        End If
    End If
    Next r
    End Sub
    Merci, Bonne soirée et Joyeux noel.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Plutôt 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
    23
    24
    25
    26
    27
    Sub macro()
        Dim r As Long
        Dim derniereLigne As Long
        Dim wks1 As Worksheet
        Dim rng As Range
     
        Set wks1 = Worksheets("Feuil1")
        derniereLigne = wks1.UsedRange.Rows.Count
        For r = derniereLigne To 1 Step -1
            If wks1.Range("P" & r).Value = "Vrai" Then
                If wks1.Range("Q" & r).Value = "Vrai" Then
                    If wks1.Range("R" & r).Value = "Vrai" Then
                        If wks1.Range("S" & r).Value = "Vrai" Then
                            wks1.Cells(r, 1).Resize(1, wks1.UsedRange.Columns.Count).Copy
                            Set rng = Worksheets("Feuil2").UsedRange
                            If rng.Cells.Count = 1 Then
                                rng.PasteSpecial
                            Else
                                rng.Offset(1, 0).PasteSpecial
                            End If
                            wks1.Cells(r, 1).EntireRow.Delete
                        End If
                    End If
                End If
            End If
        Next r
    End Sub

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

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Merci singular, çà me copie bien des lignes le souci c'est que c'est la même ligne qui est copiée et non celle qui est supprimée.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    J'avais mal lu le problème, désolé.

    Voilà:

    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
    Sub macro()
        Dim r As Long
        Dim derniereLigne As Long
        Dim wks1 As Worksheet
        Dim rng As Range
     
        Set wks1 = Worksheets("Feuil1")
        derniereLigne = wks1.UsedRange.Rows.Count
        For r = derniereLigne To 1 Step -1
            If wks1.Range("P" & r).Value = "Faux" Or _
                        wks1.Range("Q" & r).Value = "Faux" Or _
                        wks1.Range("R" & r).Value = "Faux" Or _
                        wks1.Range("S" & r).Value = "Faux" Then
                wks1.Cells(r, 1).Resize(1, wks1.UsedRange.Columns.Count).Copy
                Set rng = Worksheets("Feuil2").UsedRange
                If rng.Cells.Count = 1 Then
                    rng.PasteSpecial
                Else
                    rng.Cells(rng.Rows.Count + 1, 1).PasteSpecial
                End If
                wks1.Cells(r, 1).EntireRow.Delete
            End If
        Next r
    End Sub
    À+

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

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Effectivement çà marche. Merci beaucoup et bonne soirée

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

Discussions similaires

  1. macro copier coller une ligne d'un tableau dans une autre feuille
    Par sonichou dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/07/2011, 22h13
  2. Réponses: 3
    Dernier message: 08/03/2010, 05h29
  3. [DisplayTag] suppression d'une ligne avec un lien sur une autre Servlet
    Par luffy2mars dans le forum Taglibs
    Réponses: 1
    Dernier message: 12/01/2010, 11h36
  4. Réponses: 3
    Dernier message: 14/10/2009, 11h55
  5. Réponses: 10
    Dernier message: 11/04/2008, 13h37

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