OVH Cloud OVH Cloud

condition sur et et

3 réponses
Avatar
Maud
bonjour a tous,
j'ai une feuille de donnée avec pleins de champs remplis, et je dois ne
conserver que certains de ces champs ( pour lesquels la company= a ou b c ou
d etc..).
Comme je dois alors supprimer les lignes j'ai voulu faire ma procédure de
cette manière:
si company<>a et <> b et <>c etc... alors suprime moi la ligne sinon va
regarder a la ligne du dessous. Quand company = a ou b ou c il va a la ligne
du dessous mais le problème c'est que quand c'est différent, il ne fait pas
l'action suprimer. Je vous mets mon code, si vous pouvez m'aider merci
beaucoup!

For Each nom In
Workbooks("reporting_V4").Worksheets("baseERM").Range("nom_projet")
t1 = nom.Row
chemin3 = Workbooks("reporting_V4").Worksheets("baseERM").Range("R" &
t1).Value
If chemin3 <> "BDF France (Paris)" And chemin3 <> "BLF (Logistic FR)" And
chemin3 <> "BDF UK" And chemin3 <> "BDF AG Hamburg" _
And chemin3 <> "BDF Belgium" And chemin3 <> "LDE (Eucerin FR)" And
chemin3 = "BDF Italy" And chemin3 <> "BDF Austria" _
And chemin3 <> "BDF Spain Madrid" And chemin3 <> "All Asian Comp
(BASS)" And chemin3 <> "BDF Netherlands" And chemin3 <> "BDF Switzerland" _
And chemin3 <> "BDF Russia" And chemin3 <> "All European companies
(BESS)" And chemin3 <> "BSN Medical Hamburg" And chemin3 <> "Florena
Waldheim" _
And chemin3 <> "RASGE" And chemin3 <> "BDF France" And chemin3 <>
"BSS GmbH" Then
nombreligne =
Workbooks("reporting_V4").Worksheets("baseERM").UsedRange.Rows.Count
For nom3 = nombreligne To 2 Step -1
If Workbooks("reporting_V4").Worksheets("baseERM").Range("A" &
nom3) = nom Then

Workbooks("reporting_V4").Worksheets("baseERM").Rows(nom3).Delete
End If
Next nom3
ElseIf chemin3 = "BSS GmbH" Then
chemin4 =
Workbooks("reporting_V4").Worksheets("baseERM").Range("S" & t1).Value
If chemin4 <> "IAPS - All Groups" And chemin4 <> "IAPS - APO/PP"
And chemin4 <> "IAPS - BW" And chemin4 <> "IAPS - FI/CO/PS" _
And chemin4 <> "IAPS - HCM" And chemin4 <> "IAPS - LE" And chemin4 =
"IAPS - MD (PLM)" And chemin4 <> "IAPS - MM" _
And chemin4 <> "IAPS - Non SAP" And chemin4 <> "IAPS - PP-PI" And
chemin4 <> "IAPS - QM" And chemin4 <> "IAPS - SD / EDI" Then
nombreligne =
Workbooks("reporting_V4").Worksheets("baseERM").UsedRange.Rows.Count
For nom4 = nombreligne To 2 Step -1
If Workbooks("reporting_V4").Worksheets("baseERM").Range("A" &
nom4) = nom Then

Workbooks("reporting_V4").Worksheets("baseERM").Rows(nom4).Delete
End If
Next nom4
End If
End If
Next nom

merci d'avance!

3 réponses

Avatar
Daniel
Bonjour.
Est-ce que tu as essayé de l'exécuter en mode pas à pas pour localiser
l'anomalie ?
Cordialement.
Daniel
"Maud" a écrit dans le message de news:

bonjour a tous,
j'ai une feuille de donnée avec pleins de champs remplis, et je dois ne
conserver que certains de ces champs ( pour lesquels la company= a ou b c
ou
d etc..).
Comme je dois alors supprimer les lignes j'ai voulu faire ma procédure de
cette manière:
si company<>a et <> b et <>c etc... alors suprime moi la ligne sinon va
regarder a la ligne du dessous. Quand company = a ou b ou c il va a la
ligne
du dessous mais le problème c'est que quand c'est différent, il ne fait
pas
l'action suprimer. Je vous mets mon code, si vous pouvez m'aider merci
beaucoup!

For Each nom In
Workbooks("reporting_V4").Worksheets("baseERM").Range("nom_projet")
t1 = nom.Row
chemin3 = Workbooks("reporting_V4").Worksheets("baseERM").Range("R" &
t1).Value
If chemin3 <> "BDF France (Paris)" And chemin3 <> "BLF (Logistic FR)"
And
chemin3 <> "BDF UK" And chemin3 <> "BDF AG Hamburg" _
And chemin3 <> "BDF Belgium" And chemin3 <> "LDE (Eucerin FR)" And
chemin3 = "BDF Italy" And chemin3 <> "BDF Austria" _
And chemin3 <> "BDF Spain Madrid" And chemin3 <> "All Asian Comp
(BASS)" And chemin3 <> "BDF Netherlands" And chemin3 <> "BDF Switzerland"
_
And chemin3 <> "BDF Russia" And chemin3 <> "All European companies
(BESS)" And chemin3 <> "BSN Medical Hamburg" And chemin3 <> "Florena
Waldheim" _
And chemin3 <> "RASGE" And chemin3 <> "BDF France" And chemin3 <>
"BSS GmbH" Then
nombreligne > Workbooks("reporting_V4").Worksheets("baseERM").UsedRange.Rows.Count
For nom3 = nombreligne To 2 Step -1
If Workbooks("reporting_V4").Worksheets("baseERM").Range("A" &
nom3) = nom Then

Workbooks("reporting_V4").Worksheets("baseERM").Rows(nom3).Delete
End If
Next nom3
ElseIf chemin3 = "BSS GmbH" Then
chemin4 > Workbooks("reporting_V4").Worksheets("baseERM").Range("S" & t1).Value
If chemin4 <> "IAPS - All Groups" And chemin4 <> "IAPS - APO/PP"
And chemin4 <> "IAPS - BW" And chemin4 <> "IAPS - FI/CO/PS" _
And chemin4 <> "IAPS - HCM" And chemin4 <> "IAPS - LE" And chemin4
"IAPS - MD (PLM)" And chemin4 <> "IAPS - MM" _
And chemin4 <> "IAPS - Non SAP" And chemin4 <> "IAPS - PP-PI" And

chemin4 <> "IAPS - QM" And chemin4 <> "IAPS - SD / EDI" Then
nombreligne > Workbooks("reporting_V4").Worksheets("baseERM").UsedRange.Rows.Count
For nom4 = nombreligne To 2 Step -1
If Workbooks("reporting_V4").Worksheets("baseERM").Range("A" &
nom4) = nom Then

Workbooks("reporting_V4").Worksheets("baseERM").Rows(nom4).Delete
End If
Next nom4
End If
End If
Next nom

merci d'avance!



Avatar
JLuc
Tu devrais deja simplifier l'ecriture pour une meilleur lecture :

Set Wks = Workbooks("reporting_V4").Worksheets("baseERM")
For Each nom In Wks.Range("nom_projet")
t1 = nom.Row
chemin3 = Wks.Range("R" & t1).Value
...
...

--
JLuc
Avatar
JLuc
Et simplifier la lecture de ton test :
LesCompagnies = Array( _
"BDF France (Paris)", _
"BLF (Logistic FR)", _
"BDF UK", _
"BDF AG Hamburg", _
"BDF Belgium", _
"LDE (Eucerin FR)", _
"BDF Italy", _
"BDF Austria", _
"BDF Spain Madrid", _
"All Asian Comp (BASS)", _
"BDF Netherlands", _
"BDF Switzerland", _
"BDF Russia", _
"All European companies (BESS)", _
"BSN Medical Hamburg", _
"Florena Waldheim", _
"RASGE", _
"BDF France", _
"BSS GmbH")

Flag = False
For x = LBound(LesCompagnies) To Ubound(LesCompagnies)
If chemin3 = LesCompagnies(x) Then
'Cette compagnie est dans la liste
Flag = True
End If
Next

If Not Flag Then
'Detruire la ligne
End If
...

--
JLuc