Boucle dans une macro

Résolu
dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -  
dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je fais appel à vous, car je ne sais pas comment introduire dans la boucle le remplissage de mes cellules.
Avec en plus, une condition s'il y a 4 ou 5 lignes...

Je traite ce type de données :
A*Z_000000_V0_0
A*Z_000000_V0_0_A
A*Z_000000_V0_0_B
A*Z_000000_(A*Z)_V0_0
A*Z_000000_(A*Z)_V0_0_R
A*Z_000000_(A*Z)_V0_0_V

Mais tout cela fonctionne comme je le souhaite dans le début de la macro.
Peut-être est-il possible de simplifier le post séquençage, mais c'est secondaire.

C'est la fin où je cale...

Sub Séquençage_Cellule_F2()

    Dim Cellule_de_Départ As String
    Dim Post_Séquençage As String
    Dim Valeur_à_Séquencer As String
    Dim Séquence() As String

        Cellule_de_Départ = Cells(2, 6).Value

        Post_Séquençage = Replace(Cellule_de_Départ, "_V", "_")
        Post_Séquençage = Replace(Post_Séquençage, "_R", "_")
        Post_Séquençage = Replace(Post_Séquençage, "_A", "_")
        Post_Séquençage = Replace(Post_Séquençage, "_B", "_")
        Post_Séquençage = Replace(Post_Séquençage, "_", " ")
        Post_Séquençage = Replace(Post_Séquençage, "(", "")
        Post_Séquençage = Replace(Post_Séquençage, ")", "")
        Post_Séquençage = Trim(Post_Séquençage)

        Valeur_à_Séquencer = Post_Séquençage
        Séquence() = Split(Valeur_à_Séquencer)

    For i = LBound(Séquence) To UBound(Séquence)
      Liste = Liste & vbNewLine & "Séquence " & i & " = " & Séquence(i)
    Next i

MsgBox Liste

' Si liste = 4 lignes

    Cells(2, 1) = Liste 'Séquence 0
    Cells(2, 2) = Liste 'Séquence 1
    Cells(2, 3) = Liste 'Séquence 2
    Cells(2, 4) = Liste 'Séquence 3

' Si liste = 5 lignes

    Cells(2, 1) = Liste 'Séquence 0
    Cells(2, 2) = Liste 'Séquence 1
    Cells(2, 3) = Liste 'Séquence 3
    Cells(2, 4) = Liste 'Séquence 4
    Cells(2, 5) = Liste 'Séquence 2

End Sub


Lo.

4 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    pas besoin de boucle:

    Sub Séquençage_Cellule_F2()
        Dim Cellule_de_Départ As String
        Dim Post_Séquençage As String
        Dim Valeur_à_Séquencer As String
        Dim Séquence() As String
    
            Cellule_de_Départ = Worksheets("feuil1").Cells(2, 6).Value
            Post_Séquençage = Replace(Cellule_de_Départ, "_V", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_R", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_A", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_B", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_", " ")
            Post_Séquençage = Replace(Post_Séquençage, "(", "")
            Post_Séquençage = Replace(Post_Séquençage, ")", "")
            Post_Séquençage = Trim(Post_Séquençage)
    
            Valeur_à_Séquencer = Post_Séquençage
            Séquence() = Split(Valeur_à_Séquencer)
    
        For i = LBound(Séquence) To UBound(Séquence)
          Liste = Liste & vbNewLine & "Séquence " & i & " = " & Séquence(i)
        Next i
    
    MsgBox Liste
    
        ' Affichage sequence
        Worksheets("feuil1").Cells(2, 1).Resize(, UBound(Séquence, 1) + 1) = Séquence
    
    End Sub
    0
  2. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci f894009,

    Effectivement, quelle simplicité !
    Pour 4 lignes, c'est parfait.

    Malheureusement pour les cas ou il y a 5 lignes,
    petite subtilité, la troisième valeur passe en dernière :-(

    ' Si liste = 5 lignes
    
        Cells(2, 1) = Liste 'Séquence 0
        Cells(2, 2) = Liste 'Séquence 1
        Cells(2, 3) = Liste 'Séquence 3
        Cells(2, 4) = Liste 'Séquence 4
        Cells(2, 5) = Liste 'Séquence 2 <------ !!!

    Lo.
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ok, pour la subtilite, je rectifie
      0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Sub Séquençage_Cellule_F2()
        Dim Cellule_de_Départ As String
        Dim Post_Séquençage As String
        Dim Valeur_à_Séquencer As String
        Dim Séquence() As String
    
            Cellule_de_Départ = Worksheets("feuil1").Cells(2, 6).Value
            Post_Séquençage = Replace(Cellule_de_Départ, "_V", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_R", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_A", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_B", " ")
            Post_Séquençage = Replace(Post_Séquençage, "_", " ")
            Post_Séquençage = Replace(Post_Séquençage, "(", "")
            Post_Séquençage = Replace(Post_Séquençage, ")", "")
            Post_Séquençage = Trim(Post_Séquençage)
    
            Valeur_à_Séquencer = Post_Séquençage
            Séquence() = Split(Valeur_à_Séquencer)
    
        For i = LBound(Séquence) To UBound(Séquence)
          Liste = Liste & vbNewLine & "Séquence " & i & " = " & Séquence(i)
        Next i
    
    MsgBox Liste
    
        ' Affichage sequence
        With Worksheets("feuil1")
            .Cells(2, 1).Resize(, 5).ClearContents
            If UBound(Séquence, 1) < 4 Then
                .Cells(2, 1).Resize(, UBound(Séquence, 1) + 1) = Séquence
            Else
                .Cells(2, 1) = Séquence(0) 'Séquence 0
                .Cells(2, 2) = Séquence(1) 'Séquence 1
                .Cells(2, 3) = Séquence(3) 'Séquence 3
                .Cells(2, 4) = Séquence(4) 'Séquence 4
                .Cells(2, 5) = Séquence(2) 'Séquence 2 <------ !!!
            End If
        End With
    End Sub
    0
  4. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup, c'est parfait !

    Bon WE
    Lo.
    0