Excel copier avec condition

Résolu
ptitgars509 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
 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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
ptitgars509 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
SALUT MERCI POUR LA REPONSE MAIS CELA NE MARCHE PAS CHEZ MOI<code>
0
ptitgars509 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
bonjour,
Oui, je fais les modifs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
ptitgars509 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
ptitgars509 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
ptitgars509 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
OK mille mercis! Je vais pouvoir avancer maintenant!
0
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