Excel copier avec condition

Résolu
ptitgars509 Messages postés 9 Statut Membre -  
 ptitgars509 -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. ptitgars509 Messages postés 9 Statut Membre
     
    SALUT MERCI POUR LA REPONSE MAIS CELA NE MARCHE PAS CHEZ MOI<code>
    0
  3. ptitgars509 Messages postés 9 Statut Membre
     
    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?
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    bonjour,
    Oui, je fais les modifs.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  7. ptitgars509 Messages postés 9 Statut Membre
     
    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?"
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  9. ptitgars509 Messages postés 9 Statut Membre
     
    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!
    0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  11. ptitgars509 Messages postés 9 Statut Membre
     
    OK mille mercis! Je vais pouvoir avancer maintenant!
    0
  12. ptitgars509
     
    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
    0