Continuer une boucle For Next sur d'autres colonnes

fredoalex

XLDnaute Nouveau
Bonjour à tous,

Mon fichier va chercher des informations d'un onglet ( FSR) pour les coller dans un onglet (Presort saisie) en colonnes A24 à S63 puis doit continuer en colonne T24 à T63

j'arrives a coller mes infos jusqu'a S63 mais ensuite comment changer de colonnes ?

Voici mon Code et je vous joint l'onglet "presort saisie" (pour des raison de confidentialite je ne peux pas joindre l'onglet FSR sorry)

Sub coller()

On Error Resume Next

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

bz = Sheets("FSR").Range("A65536").End(xlUp).Row

test1 = "y"
test2 = "z"
test3 = "w"


c = 24
d = 68

For i = 2 To bz

If Left(Sheets("FSR").Range("C" & i), 1) <> test1 And Left(Sheets("FSR").Range("C" & i), 1) <> test2 And Left(Sheets("FSR").Range("C" & i), 1) <> test3 And Sheets("FSR").Range("M" & i) <= Sheets("presort saisie").Range("ac3") And Sheets("FSR").Range("E" & i) = Sheets("presort saisie").Range("E3") And Right(Sheets("FSR").Range("G" & i), 1) = Sheets("presort saisie").Range("H3") And Sheets("FSR").Range("M" & i) >= Sheets("presort saisie").Range("B3") Then

ORGLOAD = "A"
ORGSLIC = "B"
ORGSORT = "C"
DESTSORT = "E"
JOB = "F"



Sheets("presort saisie").Range(ORGLOAD & c) = Sheets("FSR").Range("D" & i)

Sheets("Presort saisie").Range(ORGSLIC & c).Value = Left(Sheets("FSR").Range("F" & i), 5)

Sheets("Presort saisie").Range(ORGSORT & c).Value = Right(Sheets("FSR").Range("F" & i), 1)

Sheets("Presort saisie").Range(DESTSORT & c).Value = Right(Sheets("FSR").Range("G" & i), 1)

Sheets("presort saisie").Range(JOB & c) = Sheets("FSR").Range("C" & i)

c = c + 1

If Sheets("presort saisie").Range("a63") <> "" Then


c = c - 39
ORGLOAD = "T"
ORGSLIC = "U"
ORGSORT = "V"
DESTSORT = "X"
JOB = "Y"

Else: End If

Else: End If


 

Pièces jointes

  • exemple pour Excel download.xlsx
    66.3 KB · Affichages: 29

fredoalex

XLDnaute Nouveau
Re : Continuer une boucle For Next sur d'autres colonnes

Bonjour,

Mon code est complet (j 'ai juste oublie le end Sub à la fin).

l'onglet FSR n'a aucune importance puisque c'est juste une base de donnee dans laquelle je vais chercher des infos.

je souhaiterais juste savoir comment "continuer" ma macro mais sur les colonnes differentes
 

vgendron

XLDnaute Barbatruc
Re : Continuer une boucle For Next sur d'autres colonnes

sans plus d'info de ta part... on va pas pouvoir faire grand chose..
ton fichier exemple peut ne contenir que quelques lignes (10 max) avec des info bidons

j'ai repris ton code ci dessous avec des commentaires/questions

Code:
Sub coller()

On Error Resume Next

'tri de la colonne M feuille FSR
Sheets("FSR").Columns("m:m").Select
Selection.Sort Key1:=Range("M1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

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

'???
test1 = "y"
test2 = "z"
test3 = "w"

'première ligne du tableau feuille PRESORT SAISIE
c = 24
'??
d = 68

'pour toutes les lignes de la feuille FSR
For i = 2 To bz
    'si test...
    If Left(Sheets("FSR").Range("C" & i), 1) <> test1 And Left(Sheets("FSR").Range("C" & i), 1) <> test2 And Left(Sheets("FSR").Range("C" & i), 1) <> test3 And Sheets("FSR").Range("M" & i) <= Sheets("presort saisie").Range("ac3") And Sheets("FSR").Range("E" & i) = Sheets("presort saisie").Range("E3") And Right(Sheets("FSR").Range("G" & i), 1) = Sheets("presort saisie").Range("H3") And Sheets("FSR").Range("M" & i) >= Sheets("presort saisie").Range("B3") Then
        'nom des colonnes destination
        ORGLOAD = "A"
        ORGSLIC = "B"
        ORGSORT = "C"
        DESTSORT = "E"
        JOB = "F"
        'copie des infos
        Sheets("presort saisie").Range(ORGLOAD & c) = Sheets("FSR").Range("D" & i)
        Sheets("Presort saisie").Range(ORGSLIC & c).Value = Left(Sheets("FSR").Range("F" & i), 5)
        Sheets("Presort saisie").Range(ORGSORT & c).Value = Right(Sheets("FSR").Range("F" & i), 1)
        Sheets("Presort saisie").Range(DESTSORT & c).Value = Right(Sheets("FSR").Range("G" & i), 1)
        Sheets("presort saisie").Range(JOB & c) = Sheets("FSR").Range("C" & i)
        
        'au premier passage.. c passe à 25
        c = c + 1
        'si la cellule A63 non vide
        If Sheets("presort saisie").Range("a63") <> "" Then
            'c passe à 25-39 = -14----> ca va surement provoquer une erreur...
            c = c - 39
            'changement des colonnes destination
            ORGLOAD = "T"
            ORGSLIC = "U"
            ORGSORT = "V"
            DESTSORT = "X"
            JOB = "Y"
        End If
    End If
Next i

End Sub

LA question: à partir de quand tu veux changer de colonne??
tu dis que tu remplis de la colonne A à S.. moi je ne vois que A à F

et sinon. après avoir bien astiqué ma boule de cristal. je te propose ca
Code:
Sub coller()

On Error Resume Next

'tri de la colonne M feuille FSR
Sheets("FSR").Columns("m:m").Select
Selection.Sort Key1:=Range("M1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

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

test1 = "y"
test2 = "z"
test3 = "w"

'première ligne du tableau feuille PRESORT SAISIE
c = 24

'??
d = 68 ' ne sert à rien?

'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 Left(Sheets("FSR").Range("C" & i), 1) <> test1 And Left(Sheets("FSR").Range("C" & i), 1) <> test2 And Left(Sheets("FSR").Range("C" & i), 1) <> test3 And Sheets("FSR").Range("M" & i) <= Sheets("presort saisie").Range("ac3") And Sheets("FSR").Range("E" & i) = Sheets("presort saisie").Range("E3") And Right(Sheets("FSR").Range("G" & i), 1) = Sheets("presort saisie").Range("H3") And Sheets("FSR").Range("M" & i) >= Sheets("presort saisie").Range("B3") Then
        If PremièreSérie Then
            'nom des colonnes destination
            ORGLOAD = "A"
            ORGSLIC = "B"
            ORGSORT = "C"
            DESTSORT = "E"
            JOB = "F"
        Else
            'changement des colonnes destination
            ORGLOAD = "T"
            ORGSLIC = "U"
            ORGSORT = "V"
            DESTSORT = "X"
            JOB = "Y"
        End If
        
        'copie des infos
        Sheets("presort saisie").Range(ORGLOAD & c) = Sheets("FSR").Range("D" & i)
        Sheets("Presort saisie").Range(ORGSLIC & c).Value = Left(Sheets("FSR").Range("F" & i), 5)
        Sheets("Presort saisie").Range(ORGSORT & c).Value = Right(Sheets("FSR").Range("F" & i), 1)
        Sheets("Presort saisie").Range(DESTSORT & c).Value = Right(Sheets("FSR").Range("G" & i), 1)
        Sheets("presort saisie").Range(JOB & c) = Sheets("FSR").Range("C" & 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 = 64 Then
            PremièreSérie = False
            c = 24
        End If
    End If
Next i

End Sub
 

fredoalex

XLDnaute Nouveau
Re : Continuer une boucle For Next sur d'autres colonnes

Merci Vgendron ton code fonctionne parfaitement bien. Merci beaucoup :)

Juste pour ma culture comment fontionne la Partie "premièreserie" j'ai un peu de mal à comprendre.

En tout cas merci beaucoup tu me sauve la vie :D
 

vgendron

XLDnaute Barbatruc
Re : Continuer une boucle For Next sur d'autres colonnes

C'est une variable booleene: c'est Vrai ou c'est Faux
If PremièreSérie: est équivalent à If PremièreSérie=Vrai
sinon (bah. ca veut dire que PremièreSérie est faux)

on commence avec PremièreSérie = vrai
dès que tu arrives à la ligne 63, tu le passes à faux, ainsi, tu utilises le deuxième jeu de colones T-V pour la suite de ta boucle
 

Discussions similaires

Réponses
14
Affichages
670

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha