Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Continuer une boucle For Next sur d'autres colonnes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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 😀
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
387
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
965
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…