OVH Cloud OVH Cloud

condition trop longue

4 réponses
Avatar
jeff_toledo
Bonjour à tous,
je vous explique mon pb.
Dans un fichier excel comprenant environ 7000 lignes j'ai des lignes à
enlever.
Elles doivent etre enlevées si dans le champ B... j'ai une valeur
"interdite";
Le probleme est que j'ai 70 valeurs interdites!
Dans mon algo je fais une boucle du genre:
Do While (Range("B" & i).Value = "02060615501" Or Range("B" & i).Value
= "02060817001" Or Range("B" & i).Value = "02070491001" Or Range("B" &
i).Value = "02070511......)
Rows(i).Select
Selection.Delete Shift:=xlUp
Loop

Ayant 70 conditions comment je peux faire? car je suis restreint en nb
de caracteres par ligne apparamment.
J'ai essayé de faire une chaine du genre
condition = Range("B" & i).Value = "02060615501" Or Range... et faire
ensuite
Do While (condition) mais ca ne marche pas non plus.
Merci pour votre aide!!!
A tres vite
Jeff

4 réponses

Avatar
RaMA
Bonjour

Comme ça?

Sub algo()
Dim xx As Integer
Dim mm()
mm = Array("02060615501", "02060817001", "02070491001", "etc....")
For x = 0 To UBound(mm)
'le truc à faire ici
Next
End Sub

Salutations
RaMa
--
.
"Jeff" a écrit dans le message de
news:
Bonjour à tous,
je vous explique mon pb.
Dans un fichier excel comprenant environ 7000 lignes j'ai des lignes à
enlever.
Elles doivent etre enlevées si dans le champ B... j'ai une valeur
"interdite";
Le probleme est que j'ai 70 valeurs interdites!
Dans mon algo je fais une boucle du genre:
Do While (Range("B" & i).Value = "02060615501" Or Range("B" & i).Value
= "02060817001" Or Range("B" & i).Value = "02070491001" Or Range("B" &
i).Value = "02070511......)
Rows(i).Select
Selection.Delete Shift:=xlUp
Loop

Ayant 70 conditions comment je peux faire? car je suis restreint en nb
de caracteres par ligne apparamment.
J'ai essayé de faire une chaine du genre
condition = Range("B" & i).Value = "02060615501" Or Range... et faire
ensuite
Do While (condition) mais ca ne marche pas non plus.
Merci pour votre aide!!!
A tres vite
Jeff


Avatar
Michel Pierron
Bonsoir Jeff,
Faire un array avec 70 valeurs, bonjour la conso mémoire....
Le mieux est de reporter tes 70 valeurs sur une feuille provisoire et d'y
rechercher pour ton tableau de 7000 ligne si la valeur de "B" & i s'y
trouve, auquel cas, tu supprimes la ligne correspondante.
MP

"Jeff" a écrit dans le message de
news:
Bonjour à tous,
je vous explique mon pb.
Dans un fichier excel comprenant environ 7000 lignes j'ai des lignes à
enlever.
Elles doivent etre enlevées si dans le champ B... j'ai une valeur
"interdite";
Le probleme est que j'ai 70 valeurs interdites!
Dans mon algo je fais une boucle du genre:
Do While (Range("B" & i).Value = "02060615501" Or Range("B" & i).Value
= "02060817001" Or Range("B" & i).Value = "02070491001" Or Range("B" &
i).Value = "02070511......)
Rows(i).Select
Selection.Delete Shift:=xlUp
Loop

Ayant 70 conditions comment je peux faire? car je suis restreint en nb
de caracteres par ligne apparamment.
J'ai essayé de faire une chaine du genre
condition = Range("B" & i).Value = "02060615501" Or Range... et faire
ensuite
Do While (condition) mais ca ne marche pas non plus.
Merci pour votre aide!!!
A tres vite
Jeff


Avatar
RaMA
Re à adapter à ton truc

Sub algo()
Dim I, Y As Integer
Dim mm()
mm = Array("02060615501", "02060817001", "02070491001", _
"etc....")
Y = Range("b1:b7000").Row
For I = 1 To ActiveSheet.Range("b1:b7000").Rows.Count
For x = 0 To UBound(mm)
If Range("b" & Y + I) = mm(x) Then Rows(Y + I).EntireRow.Delete
Next
Next I
End Sub

Salutations
RaMa
--
.


Avatar
Daniel.M
Salut Jeff,

En suivant l'idée de Michel, après avoir mis tes valeurs dans une plage nommée
ValProhibées, ça donnerait ça (à condition qu'on puisse écrire en C1:C7000):

Sub EffaceDansColB()
Dim D As Range

With Range("C1:C7000")
.FormulaR1C1 = "=IF(ISNA(MATCH(RC[-1],ValProhibées,0)),"""",NA())"
.Value = .Value
On Error Resume Next
Set D = .SpecialCells(xlCellTypeConstants, 16)
On Error GoTo 0
If Not D Is Nothing Then D.EntireRow.Delete

End With
Set D = Nothing
End Sub


Salutations,

Daniel M.

"Michel Pierron" wrote in message
news:
Bonsoir Jeff,
Faire un array avec 70 valeurs, bonjour la conso mémoire....
Le mieux est de reporter tes 70 valeurs sur une feuille provisoire et d'y
rechercher pour ton tableau de 7000 ligne si la valeur de "B" & i s'y
trouve, auquel cas, tu supprimes la ligne correspondante.
MP

"Jeff" a écrit dans le message de
news:
Bonjour à tous,
je vous explique mon pb.
Dans un fichier excel comprenant environ 7000 lignes j'ai des lignes à
enlever.
Elles doivent etre enlevées si dans le champ B... j'ai une valeur
"interdite";
Le probleme est que j'ai 70 valeurs interdites!
Dans mon algo je fais une boucle du genre:
Do While (Range("B" & i).Value = "02060615501" Or Range("B" & i).Value
= "02060817001" Or Range("B" & i).Value = "02070491001" Or Range("B" &
i).Value = "02070511......)
Rows(i).Select
Selection.Delete Shift:=xlUp
Loop

Ayant 70 conditions comment je peux faire? car je suis restreint en nb
de caracteres par ligne apparamment.
J'ai essayé de faire une chaine du genre
condition = Range("B" & i).Value = "02060615501" Or Range... et faire
ensuite
Do While (condition) mais ca ne marche pas non plus.
Merci pour votre aide!!!
A tres vite
Jeff