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("A3071").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
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("A3071").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