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. 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
    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, 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,
          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. 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. 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. 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. SALUT MERCI POUR LA REPONSE MAIS CELA NE MARCHE PAS CHEZ MOI<code>
                  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