VBA Excel : parcours d'une ligne

Résolu
Bonjour,

Je souhaite écrire du code afin de transformer untableau de type

TRUC1 | BIDULE1 | BIDULE2 | BIDULE3

en

TRUC1 | BIDULE1
TRUC1 | BIDULE2
TRUC1 | BIDULE3

J'ai compris qu'il fallair que je parcours ma ligne et que tant que je ne rencontre pas une cellule vide, je dois insérer une nouvelle ligne et couper coller les valeurs qui vont bien.

Question : comment faire la boucle de parcours de la ligne?

Un truc genre FOR i=A TO Z mais comment l'incrémenter quand c'est des lettres?

Merci beaucoup pour l'aide que vous pourrez m'apporter.
--
**Enigmatoile**

3 réponses

  1. Bonjour,

    Suggestion :

    Sub Transpose()
    
        Const FleAjout = "Résultats"
    
        Dim Valeur As Variant, Colonne As Long, Boucle As Long
        Dim Feuille As String
        
        Valeur = ActiveCell.Offset(0, 0).Value
        Colonne = ActiveCell.End(xlToRight).Column
        Feuille = ActiveSheet.Name
        Worksheets.Add.Name = FleAjout
        For Boucle = 2 To Colonne
            ActiveCell.Offset(0, 0).Value = Valeur
            ActiveCell.Offset(0, 1).Value = Sheets(Feuille).Cells(1, Boucle).Value
            ActiveCell.Offset(1, 0).Select
        Next Boucle
        Sheets(Feuille).Select
        MsgBox "Visualiser la feuille [ Résultats ]."
    
    End Sub
    '
    


    Lupin
    0
    1. Merci beaucoup Lupin, ton code fonctionne bien :)

      Plus qu'à l'améliorer poour qu'il soit capable de traiter plusieurs lignes et pas une seume comme dans l'exemple que j'ai donné, et ça sera nickel, mais ça ça devrait etre à ma portée :)
      0
      1. Bonjour,

        Autre suggestion :

        Sub TransposeMultiLignes()
        
            Const FleAjout = "Résultats"
        
            Dim Valeur As Variant, Colonne As Long, Boucle As Long
            Dim Compteur As Long, Ligne As Long
            Dim Feuille As String
            
            Feuille = ActiveSheet.Name
            Ligne = ActiveCell.Offset(0, 0).End(xlDown).Row
            Worksheets.Add.Name = FleAjout
            For Compteur = 1 To Ligne
                Sheets(Feuille).Select
                Valeur = ActiveCell.Offset(Compteur - 1, 0).Value
                Colonne = ActiveCell.Offset(Compteur - 1, 0).End(xlToRight).Column
                Sheets(FleAjout).Select
                For Boucle = 2 To Colonne
                    ActiveCell.Offset(0, 0).Value = Valeur
                    ActiveCell.Offset(0, 1).Value = Sheets(Feuille).Cells(Compteur, Boucle).Value
                    ActiveCell.Offset(1, 0).Select
                Next Boucle
                Sheets(Feuille).Select
            Next Compteur
            Sheets(Feuille).Select
            MsgBox "Visualiser la feuille [ Résultats ]."
        
        End Sub
        '
        

        Lupin
        0