Integration d'une condition for dans le choix d'une page

Bonjour,

Avant tout merci du temps que vous passez sur cette page.

Voici mon problème :

J'ai en colonne "B" des étapes (de 1 à 4 sur mon exemple), je souhaiterai couper coller l'ensemble des colonnes correspondant aux lignes de l'étape 1, de l'étape 2.....

Je souhaiterai que chaque étape soit mise dans une nouvelle feuille.

J'ai actuellement ceci comme code, loin d'être optimal il fonctionne à peu pret, mon problème c'est que je souhaiterai dans ma boucle for sur i pouvoir appeler la sheet( Etape j) avec j un incrément (du nombre d'étape présent).

Voici le code :

Sub Macro3()
'
' Macro3 Macro
'

'
Dim MS As Worksheet, sh As Worksheet
Dim DernLigne As Long
Dim l As Long
Dim DerniereLigne As Long
Dim MaCell As Range
Dim Etape As Range
Dim Etapetrouve As String, PlageDeRecherche As Range
Dim Valeur_Cherchee As String
Dim i As Long
Dim j As Long

Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 1"
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 2"
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 3"
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 4"

Sheets("Essai1.steps.tracking").Select

    DernLigne = Range("B" & Rows.Count).End(xlUp).Row

    Columns("B:D").Select
    Range("B4").Activate
    Selection.Delete Shift:=xlToLeft
    Columns("C").Select
    Range("C4").Activate
    Selection.Delete Shift:=xlToLeft
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=RC[+1]/70.856"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "contrainte(MPa)"
    Range("C2").Select
    Selection.AutoFill Destination:=Range(Cells(2, 3), Cells(DernLigne, 3))
    Range(Cells(2, 3), Cells(DernLigne, 3)).Select
    Columns("F:F").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "def (%)"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=(RC[1]-0.0053)*4"
    Range("F2").Select
    Selection.AutoFill Destination:=Range(Cells(2, 6), Cells(DernLigne, 6))
    Range(Cells(2, 6), Cells(DernLigne, 6)).Select

With ThisWorkbook.Sheets("Essai1.steps.tracking")

For j = 1 To 4

For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row

                        If .Range("B" & i).Value = j Then
                                   .Rows(i).Cut
                    Sheets("Etape j").Select
                    Range("A1").Offset(i, 0).Select
                        ActiveSheet.Paste
                        End If
            Next i
Next j

End With

End Sub

Je mets aussi en pièce jointe le fichier excel pour plus de facilité.

Encore Merci, hésitez pas à poser des questions.

Cordialement

Bonsoir,

sans trop réfléchir, vous voulez pouvoir sélectionner les onglets Etape 1, Etape 2, Etape 3 et Etape 4 ?

Vous avez écrit ceci :

 If .Range("B" & i).Value = j Then

La solution est là...

Sheets("Etape"& j).Select

@ bientôt

LouReeD

Bonjour

Je souhaite, envoyer les lignes ayant pour indice Etape 1, Etape 2.... dans la première feuille, vers des nouvelles feuilles nominatif, c'est à dire une feuille Etape 1, avec juste les données (lignes) correspondant à celles ayant l'indice Etape 1

En gros c'est scinder la première feuille en 4 feuilles distinctes.

Si je rentre le code suivant :

Sub Macro3()
'
' Macro3 Macro
'

'
Dim MS As Worksheet, sh As Worksheet
Dim DernLigne As Long
Dim l As Long
Dim DerniereLigne As Long
Dim MaCell As Range
Dim Etape As Range
Dim Etapetrouve As String, PlageDeRecherche As Range
Dim Valeur_Cherchee As String
Dim i As Long
Dim j As Long

Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 1"
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 2"
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 3"
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Etape 4"

Sheets("Essai1.steps.Tracking").Select

    DernLigne = Range("B" & Rows.Count).End(xlUp).Row

    Columns("B:D").Select
    Range("B4").Activate
    Selection.Delete Shift:=xlToLeft
    Columns("C").Select
    Range("C4").Activate
    Selection.Delete Shift:=xlToLeft
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=RC[+1]/70.856"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "contrainte(MPa)"
    Range("C2").Select
    Selection.AutoFill Destination:=Range(Cells(2, 3), Cells(DernLigne, 3))
    Range(Cells(2, 3), Cells(DernLigne, 3)).Select
    Columns("F:F").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "def (%)"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=(RC[1]-0.0053)*4"
    Range("F2").Select
    Selection.AutoFill Destination:=Range(Cells(2, 6), Cells(DernLigne, 6))
    Range(Cells(2, 6), Cells(DernLigne, 6)).Select
With ThisWorkbook.Sheets("Essai1.steps.tracking")

For j = 1 To 4

For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row

                        If .Range("B" & i).Value = j Then
                                   .Rows(i).Cut
                    Sheets("Etape" & j).Select
                    Range("A1").Offset(i, 0).Select
                        ActiveSheet.Paste
                        End If
            Next i
Next j

End With

End Sub

Ca me retourne que l'indice j dans la partie Sheets("Etape"& j) n'appartient pas à la sélection......

Bonjour, bonjour !

Comme le VBA se trompe jamais, c'est donc une erreur humaine !

Et pour preuve, "Etape1" n'est pas "Etape 1" …

Bonjour,

Merci de la réponse

mais je ne vois pas ou est l'erreur....je ne peux pas taper Sheets("Etape"& j), l'espace entre " et & est automatique.... j'ai testé d'autre configuration ca ne fonctionne pas non plus.

Comme pourtant déjà indiqué, il manque l'espace dans la chaîne de caractères ‼ (entre guillemets)

Sinon renommer les feuilles sans espace, c'est juste un problème d'orthographe …

C'est parfait

Merci beaucoup

Bonsoir et oui, veuillez m'excuser pour cette erreur...

au lieu de lire

Sheets("Etape" & j).Select

lire

Sheets("Etape " & j).Select

c'est bien mieux. Dans la précipitation....

@ bientôt

LouReeD

Désolé Rémy, je n'avais pas vu que cela venait de Lou …

Au moins cela a été formateur !

@ bientôt

LouReeD

Rechercher des sujets similaires à "integration condition choix page"