Copier ligne d'une feuille a une autre selon une condition sur la ligne

PEX

XLDnaute Occasionnel
bonjour,

je suis entrain de codé une macro de mise en forme afin d'automatiser le traitement des données.
J'aurai voulu savoir quel manipulation est a effecuté afin que si la condition est remplie la ligne soit copier vers une nouvelle Feuille Excel.

Code:
Dim ws As Worksheet
Dim i As Long
    Set ws = Worksheets(Response)   'nom de la feuille où le contrôle doit se faire
    With ws
        i = 1      'Numéro de la première ligne à tester

        While .Range("L" & i).Value <> "" And .Range("M" & i).Value <> "" And .Range("N" & i).Value <> "" And .Range("O" & i).Value <> "" And .Range("P" & i).Value <> "" And .Range("X" & i).Value <> ""
           
 ' condition pour les clients Factures M-2
           
 If .Range("L" & i).Value <> 0 Then
    .Rows(i).Interior.ColorIndex = 8
      .Rows(i).Font.ColorIndex = 1

               - ici je souhaite le code de copie vers la nouvelle feuille

 End If

        i = i + 1
        Wend
J'aurai voulu que quand la condition est remplie il me recupere la ligne et l'ajoute dans une nouvelle Feuille.

En esperant que vous pouvez m'aider cordialement

Pex
 

PEX

XLDnaute Occasionnel

Pierrot93

XLDnaute Barbatruc
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

le mieux eût été que tu places en pièce jointe un fichier avec un tout petit extrait de tes données (non confidentielles) ainsi que le code, plus facile pour t'aider...
 

PEX

XLDnaute Occasionnel
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

le mieux eût été que tu places en pièce jointe un fichier avec un tout petit extrait de tes données (non confidentielles) ainsi que le code, plus facile pour t'aider...

je vous joints les fichiers.
le fichier balance est un "morceau" des fichiers source
le fichier programme est le fichier de demarage et ou est situé la macro

en esperant que vous pourrez maider.

sub codecouleurclient !!

merci
 

Pièces jointes

  • Programme .xlsm
    34.2 KB · Affichages: 30
  • Balance.xlsx
    12.8 KB · Affichages: 36
  • Balance.xlsx
    12.8 KB · Affichages: 42
  • Balance.xlsx
    12.8 KB · Affichages: 42

PEX

XLDnaute Occasionnel
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

A noter, tes colonnes O et P sont vides, donc le test ne sera pas vérifié....

je te rejoints un fichier un peu plus complet avec des valeurs dans O et P !! désolé de ne pas pouvoir te donner le fichier complet mais il y a des données confidentiel dedans.

merci de ton aide en tout cas

il faut ouvrir le fichier "balance" a partir de "programme"

Cordialement

pex
 

Pièces jointes

  • Balance.xlsx
    20.2 KB · Affichages: 31
  • Balance.xlsx
    20.2 KB · Affichages: 39
  • Balance.xlsx
    20.2 KB · Affichages: 37

Pierrot93

XLDnaute Barbatruc
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

beaucoup de 0 dans tes cellules.... c'est pourtant ce que tu test.... tu veux copier sur nouvelle feuille mais tu es sur cette dernière et c'est celle ci qui est testée..... pas tout compris, moi...

sinon pour la copie, tu peux peut être t'inspirer de ceci :
Code:
Sheets(reponse).Range("a" & i).Resize(, 29).Copy Destination:=Sheets("NomFeuillX").Range("A65536").End(xlUp)(2)
 

PEX

XLDnaute Occasionnel
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

beaucoup de 0 dans tes cellules.... c'est pourtant ce que tu test.... tu veux copier sur nouvelle feuille mais tu es sur cette dernière et c'est celle ci qui est testée..... pas tout compris, moi...

sinon pour la copie, tu peux peut être t'inspirer de ceci :
Code:
Sheets(reponse).Range("a" & i).Resize(, 29).Copy Destination:=Sheets("NomFeuillX").Range("A65536").End(xlUp)(2)

en faite on doit creer une nouvelle feuille, et a l'intérieur de cette nouvelle feuille on insere les lignes avec les conditions. oui il y a beaucoup de 0 car le fichier de sortie est de ce type.
en faite c'est en deux partie :
la première le code couleur pour les clients se met en forme, puis on copie chacune de ces lignes vers une nouvelle feuille, ainsi la nouvelle feuille aura que les lignes ayant ces conditions.
j’espère m expliquer assez clairement pour toi si besoin demande moi plus d'informations j'essaierai d'argumenter au maximum

je ne comprend pas tout dans le code que tu m'a laissé ! genre : .Resize(, 29).Copy .End(xlUp)(2)

merci de ton aide
 

Pierrot93

XLDnaute Barbatruc
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

bah... cette feuille tu la créée bien.... mais à la suite ton code y copie toutes les colonnes de la feuille "nomfeuille" et ce sans test...
Code:
Set ws = Sheets.Add

ws.Name = Response

   Sheets(NomFeuille).Range("H:H").Copy Sheets(Response).Range("A:A")
   Sheets(NomFeuille).Range("I:I").Copy Sheets(Response).Range("B:B")
   Sheets(NomFeuille).Range("P:P").Copy Sheets(Response).Range("C:C")
'etc....

peut être reprendre ton code dès le début....
 

PEX

XLDnaute Occasionnel
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

Re,

bah... cette feuille tu la créée bien.... mais à la suite ton code y copie toutes les colonnes de la feuille "nomfeuille" et ce sans test...
Code:
Set ws = Sheets.Add

ws.Name = Response

   Sheets(NomFeuille).Range("H:H").Copy Sheets(Response).Range("A:A")
   Sheets(NomFeuille).Range("I:I").Copy Sheets(Response).Range("B:B")
   Sheets(NomFeuille).Range("P:P").Copy Sheets(Response).Range("C:C")
'etc....

peut être reprendre ton code dès le début....

je pense que tu as pas tout compris.
en faite j'utilise le fichier balance, jen extrait certaines données qui se copie dans la feuille avec la variable " response"
ensuite je veux recréé une nouvelle feuille et extraire les lignes qui les conditions dans la feuille response vers une nouvelle feuille nommé " Variation "

en esperant mieux mexpliquer

cordialement

pex
 

PEX

XLDnaute Occasionnel
Re : Copier ligne d'une feuille a une autre selon une condition sur la ligne

je pense que tu as pas tout compris.
en faite j'utilise le fichier balance, jen extrait certaines données qui se copie dans la feuille avec la variable " response"
ensuite je veux recréé une nouvelle feuille et extraire les lignes qui les conditions dans la feuille response vers une nouvelle feuille nommé " Variation "

en esperant mieux mexpliquer

cordialement

pex


j'ai trouvé le code me permettant de realiser ce que je demandais je le partage cela pourra toujours servir.
ce code recupere les lignes en fonction de leur code couleur interieur :

Code:
im LigneRecap As Long
Dim i As Long
  
  Sheets("visuel").Range("A2:AC65000").ClearContents ' effacement des tableau de base au cas ou mais pas utile dans notre cas
  
  LigneRecap = 1
  
  For i = 2 To [a65000].End(xlUp).Row ' ligne sur laquel boucle la recherche
  
    If Cells(i, 1).Interior.ColorIndex = 8 Then ' condition : si une ligne avec la couleurindex interieur 8 alors on copie cette ligne
      LigneRecap = LigneRecap + 1
      Cells(i, 1).Resize(1, 29).Copy Sheets("visuel").Cells(LigneRecap, 1)
    End If

next i

en vous remerciant tous

cordialement

pex
 

Discussions similaires

Réponses
7
Affichages
420
Réponses
7
Affichages
485

Statistiques des forums

Discussions
313 270
Messages
2 096 727
Membres
106 733
dernier inscrit
Alain EDZOA