Excel copier avec condition

Résolu
Bonjour,

J'ai un petit problème, voilà, J'ai une plage allant de A4 à G50 (A4:G50), Je veux copier dans une autre plage I4:O50, toutes les lignes de la première plage (copier les lignes allant de A à G seulement) ne respectant pas une condition, et ne pas recopier celles respectant la même condition. La condition étant, à chaque fois que je trouve un "X" dans une colonne précise, je ne recopie pas la ligne entière, je la saute et je passe à la prochaine ligne, et quand je ne retrouve pas ce "X", je recopie la ligne mais seulement de A à G. Par exemple, si je dis que la colonne F ne doit pas contenir de "X" et que je ne retrouve pas ce "X" sur la ligne 4, je recopie A4, B4, C4, D4, E4, F4, G4 respectivement dans les cellules I4, J4, K4, L4, M4, N4, O4. Comment faire avec formules ou VBA? Merci pour vos réponses!

11 réponses

  1. Bonjour,

    Sub Tri_Datas1()
    Dim Pointeur As Integer

    'Plage A4:G50, colonne test F4:F50
    Sheets("Feuil1").Select
    Pointeur = 4
    Do While Cells(Pointeur, 1) <> ""
    If Cells(Pointeur, 6) = "X" Then
    'non copie
    Else
    'Ligne a copier
    Range(Cells(Pointeur, 1), Cells(Pointeur, 7)).Select
    'copie Ax:Gx vers Ix:Ox
    Selection.Copy
    Range("I" & Pointeur).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    End If
    Pointeur = Pointeur + 1
    Loop
    End Sub

    a essayer et bonne suite
    1. SALUT MERCI POUR LA REPONSE MAIS CELA NE MARCHE PAS CHEZ MOI<code>
      1. EXCUSE j'ai refait c'est parfait! merci l'ami! Est ce qu'il est possible de recopier sur l'autre plage sans laisser les lignes vides?
        1. Re
          Sub Tri_Datas1()
          Dim Pointeur As Integer, Pointeur_Copie As Integer

          'Plage A4:G50, colonne test F4:F50
          Sheets("Feuil1").Select
          Pointeur = 4
          Pointeur_Copie = 4
          Do While Cells(Pointeur, 1) <> ""
          If Cells(Pointeur, 6) = "X" Then
          'non copie
          Else
          'Ligne a copier
          Range(Cells(Pointeur, 1), Cells(Pointeur, 7)).Select
          'copie Ax:Gx vers Ix:Ox
          Selection.Copy
          Range("I" & Pointeur_Copie).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Pointeur_Copie = Pointeur_Copie + 1
          End If
          Pointeur = Pointeur + 1
          Loop
          End Sub

          A bientot

          Bonne suite
          1. OK MERCI ça marche super bien, j'ai tellement cherché pour cela, comme on dit ce que tu ne connais pas t'es supérieur! Je ne veux pas t'embêter, mais juste une dernière question: "si je veux mettre plusieurs conditions, faut-il juste une modification ou refaire le même code en modifiant la ligne de la conditions?"
            1. Bonjour,
              Il faut modifier le code au niveau du :
              If Cells(Pointeur, 6) = "X" then
              mais, attention en fonction des tests que vous voulez faire, il faudra peut-etre modifier la ligne:
              else

              A bientot

              Bonne suite
              1. Bonsoir, j'ai essayé de juste rajouter une deuxième condition mais cela ne passe pas! voilà comment j'ai fait:

                Sheets("Feuil1").Select
                Pointeur = 4
                Pointeur_Copie = 4
                Do While Cells(Pointeur, 1) <> ""
                If Cells(Pointeur, 6) = "X" & cells(pointeur, 3) = « y » Then
                'non copie
                Else
                'Ligne a copier
                Range(Cells(Pointeur, 1), Cells(Pointeur, 7)).Select
                'copie Ax:Gx vers Ix:Ox
                Selection.Copy
                Range("I" & Pointeur_Copie).Select
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
                Pointeur_Copie = Pointeur_Copie + 1
                End If
                Pointeur = Pointeur + 1
                Loop
                End Sub

                moi je voudrais que dès qu'une de ces conditions est vrai, qu'il ne recopie pas la ligne où la condition se trouve! j'ai essayé avec plein d'autres choses mais ça ne passe pas!
                1. Bonjour,
                  Vous avez un probleme d'operateur logique et de syntaxe.

                  Sheets("Feuil1").Select
                  Pointeur = 4
                  Pointeur_Copie = 4
                  Do While Cells(Pointeur, 1) <> ""
                  If Cells(Pointeur, 6) = "X" Or cells(Pointeur, 3) = "Y" Then
                  'non copie
                  Else
                  'Ligne a copier
                  Range(Cells(Pointeur, 1), Cells(Pointeur, 7)).Select
                  'copie Ax:Gx vers Ix:Ox
                  Selection.Copy
                  Range("I" & Pointeur_Copie).Select
                  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
                  Pointeur_Copie = Pointeur_Copie + 1
                  End If
                  Pointeur = Pointeur + 1
                  Loop
                  End Sub

                  Continuez bien
                  1. bonsoir,

                    puis-je avoir une fois de plus recours à votre aide, pour savoir comment est ce que je peux modifier le code si ma condition n'est pas le contenu des cellules mais leurs couleur? Par exemple au lieu que "X" dans la colonne F, j'ai couleur rouge dans cette même colonne! merci