vba: Fontion or et and dans fonction IF

fredoalex

XLDnaute Nouveau
Bonjour à tous,

j'ai un petit soucis avec mon code VBA ci dessous.

En effet, dans un premier temps, nous code dois remprendre les lignes sous conditions et nottament si les cellules ne sont pas egale à "LICFR" ou "CHAFR" ou "FONNL" ou "CMCFR" ou "BOCFR" (lignes de code en bleu)


Puis le code faire remprend à un autre endroit les ligne dans lequels ces conditions sont respectes (lignes de code en rouge)

Le problème et que dans le premier cas mon code me met quand meme les lignes pour lesquels il y a les valeurs non souhaitees mais la deuxieme partie elle fonctionne bien.

Merci d'avance pour votre aide

Sub coller2()


On Error Resume Next



Dim wbMyWb As Workbook
Dim Nom_Fichier As Variant



Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
If Nom_Fichier <> False Then
Set wbMyWb = Workbooks.Open(Nom_Fichier)
wbMyWb.Activate
t = Dir(Nom_Fichier)
Else: End If


'tri de la colonne M feuille FSR

Workbooks(t).Sheets("FSR").Columns("m:m").Select
Selection.Sort Key1:=Range("M1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal


Sheets("Presort saisie").Range("A30:D71").ClearContents
Sheets("Presort saisie").Range("F30:Aj71").ClearContents
Sheets("Presort saisie").Range("Al30:BN71").ClearContents

Sheets("Presort saisie").Range("AH75:aK94").ClearContents
Sheets("Presort saisie").Range("aM75:BN75").ClearContents

'nombre de lignes dans feuille FSR
bz = Workbooks(t).Sheets("FSR").Range("A65536").End(xlUp).Row

test1 = "LICFR"
test2 = "CHAFR"
test3 = "FONNL"
test4 = "CMCFR"
test5 = "BOCFR"
'première ligne du tableau feuille PRESORT SAISIE
c = 30
D = 75

'boolean pour signaler qu'on doit se placer sur la première série de colonnes (A--F)
PremièreSérie = True
'pour toutes les lignes de la feuille FSR
For i = 2 To bz
'si test...


If (Workbooks(t).Sheets("FSR").Range("d" & i) <> test1 Or Workbooks(t).Sheets("FSR").Range("d" & i) <> test2 Or Workbooks(t).Sheets("FSR").Range("d" & i) <> test3 Or Workbooks(t).Sheets("FSR").Range("d" & i) <> test4 Or Workbooks(t).Sheets("FSR").Range("d" & i) <> test5) And Workbooks(t).Sheets("FSR").Range("M" & i) <= Sheets("presort saisie").Range("AI3") And Workbooks(t).Sheets("FSR").Range("E" & i) = Sheets("presort saisie").Range("f3") And Right(Workbooks(t).Sheets("FSR").Range("G" & i), 1) = Sheets("presort saisie").Range("J3") And Workbooks(t).Sheets("FSR").Range("M" & i) >= Sheets("presort saisie").Range("B3") Then


If PremièreSérie Then
'nom des colonnes destination
ORGLOAD = "A"
ORGSLIC = "C"
ORGSORT = "B"
DESTSORT = "F"
JOB = "G"
SCHEDHOURS = "h"
TYPEQ = "D"
Else
'changement des colonnes destination
ORGLOAD = "AH"
ORGSLIC = "AJ"
ORGSORT = "AI"
DESTSORT = "AM"
JOB = "AN"
SCHEDHOURS = "AO"
TYPEQ = "AK"

End If

'copie des infos
Sheets("presort saisie").Range(ORGLOAD & c) = Workbooks(t).Sheets("FSR").Range("D" & i)
Sheets("Presort saisie").Range(ORGSLIC & c).Value = Left(Workbooks(t).Sheets("FSR").Range("F" & i), 5)
Sheets("Presort saisie").Range(ORGSORT & c).Value = Right(Workbooks(t).Sheets("FSR").Range("F" & i), 1)
Sheets("Presort saisie").Range(DESTSORT & c).Value = Right(Workbooks(t).Sheets("FSR").Range("G" & i), 1)
Sheets("presort saisie").Range(JOB & c) = Workbooks(t).Sheets("FSR").Range("C" & i)
Sheets("Presort saisie").Range(SCHEDHOURS & c).Value = Right(Workbooks(t).Sheets("FSR").Range("m" & i), 11)
Sheets("Presort saisie").Range(TYPEQ & c).Value = Workbooks(t).Sheets("FSR").Range("I" & i)


'au premier passage.. c passe à 25
c = c + 1
'on vient de remplir la ligne 63 on passe donc à la deuxième série = les colonnes de T--T
If c = 71 Then
PremièreSérie = False
c = 30

End If
End If
If (Workbooks(t).Sheets("FSR").Range("d" & i) = test1 Or Workbooks(t).Sheets("FSR").Range("d" & i) = test2 Or Workbooks(t).Sheets("FSR").Range("d" & i) = test3 Or Workbooks(t).Sheets("FSR").Range("d" & i) = test4 Or Workbooks(t).Sheets("FSR").Range("d" & i) = test5) And Workbooks(t).Sheets("FSR").Range("M" & i) <= Sheets("presort saisie").Range("AI3") And Workbooks(t).Sheets("FSR").Range("E" & i) = Sheets("presort saisie").Range("f3") And Right(Workbooks(t).Sheets("FSR").Range("G" & i), 1) = Sheets("presort saisie").Range("J3") And Workbooks(t).Sheets("FSR").Range("M" & i) >= Sheets("presort saisie").Range("B3") Then

Sheets("presort saisie").Range("AH" & D) = Workbooks(t).Sheets("FSR").Range("D" & i)

Sheets("Presort saisie").Range("AJ" & D).Value = Left(Workbooks(t).Sheets("FSR").Range("F" & i), 5)

Sheets("Presort saisie").Range("AI" & D).Value = Right(Workbooks(t).Sheets("FSR").Range("F" & i), 1)

Sheets("Presort saisie").Range("AM" & D).Value = Right(Workbooks(t).Sheets("FSR").Range("G" & i), 1)

Sheets("presort saisie").Range("AN" & D) = Workbooks(t).Sheets("FSR").Range("C" & i)

Sheets("Presort saisie").Range("AO" & D).Value = Right(Workbooks(t).Sheets("FSR").Range("m" & i), 11)

Sheets("Presort saisie").Range("AK" & D).Value = Workbooks(t).Sheets("FSR").Range("I" & i)

D = D + 1

Else: End If
Next i

Workbooks(t).Close False



End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : vba: Fontion or et and dans fonction IF

Bonjour fredoalex,

dans un premier temps, il serait bien de joindre le fichier. Pour une meilleure vue du code, vas dans le mode avancé clic sur # - CODE=VBA ton code /CODE. Ensuite quel est le texte différent de ceux que tu as mis. Sinon je prend un exemple.

Code:
Dim texte as String

texte = Array("LICFR","CHAFR", "FONNL","CMCFR", "BOCFR")

If "DMBGX" <> texte Then
'La suite du code
else
'Suite du code
End If

EDIT: bonjour Paf :)


A+ :cool:
 
Dernière édition:

fredoalex

XLDnaute Nouveau
Re : vba: Fontion or et and dans fonction IF

Bonjour à tous,

enfaite la difference entre la partie en Bleu et en Rouge c'est uniquement que dans la partie Bleu je met le signe <> et dans le rouge le signe = . Mais lorseque je met "=" VBA me trouve bien les lignes correspondant aux critères mais quand je met "<>" ça ne fonctionne pas et je ne comprends par pourquoi
 

Paf

XLDnaute Barbatruc
Re : vba: Fontion or et and dans fonction IF

Re,

dans la partie rouge , on veut que le test soit vrai si Workbooks(t).Sheets("FSR").Range("d" & i) est égal à test1, ou à test2, ou à test3, ou à test4, ou à test5. OK
Est ce que dans la partie bleue, le test doit être vrai si Workbooks(t).Sheets("FSR").Range("d" & i) n'est égal ni à test1, ni à test2, ni à test3, ni à test4, ni à test5 ?
Si c'est le cas voir post #2, si non précisez ce que vous voulez faire.

A+

Edit : bonjour Lone-wolf
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : vba: Fontion or et and dans fonction IF

Re fredoalex,


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Long, i As Integer

Application.EnableEvents = False
lig = Range("d65536").End(xlUp).Row
For i = 2 To lig
If Range("d" & i) = "a" Or Range("d" & i) = "b" Or Range("d" & i) = "c" _
Or Range("d" & i) = "d" Or Range("d" & i) = "e" Then
Range("f" & i) = "x"
Else
Range("f" & i) = ""
End If
Next
Application.EnableEvents = True
End Sub

'---------------------------------------------------------------------------------

Private Sub CommandButton1_Click()      'Bouton sur la feuille
Dim lig As Long, i As Integer

lig = Range("d65536").End(xlUp).Row 
For i = 2 To lig
If Range("d" & i) = "a" Or Range("d" & i) = "b" Or Range("d" & i) = "c" _
Or Range("d" & i) = "d" Or Range("d" & i) = "e" Then
Range("f" & i) = "x"
Else
Range("f" & i) = ""
End If
Next
End Sub


A+ :cool:
 
Dernière édition:

Statistiques des forums

Discussions
312 183
Messages
2 086 005
Membres
103 087
dernier inscrit
sarah.caneri