Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA EXCEL] Boucle while remplir cellules

Sujet résolu
    5 mars 2019 à 19:12:53

    Bonjour à tous ! Je débute en VBA et j'ai besoin d'aide.

    Voilà, sur une feuille j'ai placé un bouton "Organiser". Le bouton Reset n'en tenez pas compte:

    Etape 1

    Les 5 lignes de textes sont censées être des inconnues niveau quantité. En gros là j'en ai 5 mais lors de l'utilisation, le nombre de lignes sera inconnu. Le contenu également hors mis 3 paramètres qui seront toujours la: le premier mot en lettres, l'avant dernier en chiffres et le dernier un pourcentage (la ligne 3 est différente pour tester). Quand je clique sur "Organiser" cela me donne ça pour l'instant:

    Etape 2

    C'est donc là exactement ce que je veux. Voici mon code:

    Sub Organiser_macro()
        Dim Tableau() As String
        'Dim i As Integer
        Tableau = Split(Feuil1.Columns(1).Cells(1), " ")
        Tableau1 = Split(Feuil1.Columns(1).Cells(2), " ")
        Tableau2 = Split(Feuil1.Columns(1).Cells(3), " ")
        Tableau3 = Split(Feuil1.Columns(1).Cells(4), " ")
        Tableau4 = Split(Feuil1.Columns(1).Cells(5), " ")
        
        Feuil1.Columns(9).Cells(1) = UCase(Tableau(0))
        Feuil1.Columns(9).Cells(2) = UCase(Tableau1(0))
        Feuil1.Columns(9).Cells(3) = UCase(Tableau2(0))
        Feuil1.Columns(9).Cells(4) = UCase(Tableau3(0))
        Feuil1.Columns(9).Cells(5) = UCase(Tableau4(0))
        
        Feuil1.Columns(10).Cells(1) = Tableau(UBound(Tableau) - 1)
        Feuil1.Columns(10).Cells(2) = Tableau1(UBound(Tableau1) - 1)
        Feuil1.Columns(10).Cells(3) = Tableau2(UBound(Tableau2) - 1)
        Feuil1.Columns(10).Cells(4) = Tableau3(UBound(Tableau3) - 1)
        Feuil1.Columns(10).Cells(5) = Tableau4(UBound(Tableau4) - 1)
        
        Feuil1.Columns(11).Cells(1) = Tableau(UBound(Tableau))
        Feuil1.Columns(11).Cells(2) = Tableau1(UBound(Tableau1))
        Feuil1.Columns(11).Cells(3) = Tableau2(UBound(Tableau2))
        Feuil1.Columns(11).Cells(4) = Tableau3(UBound(Tableau3))
        Feuil1.Columns(11).Cells(5) = Tableau4(UBound(Tableau4))
    End Sub

    Je pense que vous avez compris le problème, je traite chaque ligne une par une. Or je voudrais que ça s'exécute en prenant en compte toute les lignes de la colonne A (enfin si elles ne sont pas vides cela va de soi)

    Du coup, étant essentiellement codeur PHP j'ai tout de suite pensé à While sauf que je n'arrive pas à trouver comment faire.

    Voilà j'ai fait au mieux pour donner tout les détails, merci d'avance ^^

    EDIT: J'ai eu une illumination ^^

    Sub Organiser_macro()
        Dim Tableau() As String
        Dim i As Integer
        Dim n As Integer
        i = i + 1
        n = Application.WorksheetFunction.CountA(Columns(1))
        
        While (i <= n)
            Tableau = Split(Feuil1.Columns(1).Cells(i), " ")
            Feuil1.Columns(9).Cells(i) = UCase(Tableau(0))
            Feuil1.Columns(10).Cells(i) = Tableau(UBound(Tableau) - 1)
            Feuil1.Columns(11).Cells(i) = Tableau(UBound(Tableau))
            i = i + 1
        Wend
    End Sub



    -
    Edité par julien.jan 5 mars 2019 à 19:48:55

    • Partager sur Facebook
    • Partager sur Twitter
      6 mars 2019 à 17:03:19

      Salut,

      Tu as déjà trouvé une solution mais sinon Excel fait déjà ça tout seul, à la main il faut aller dans l'onglet "Données" -> Convertir.

      Et en VBA c'est Range.TextToColumns.

      • Partager sur Facebook
      • Partager sur Twitter

      [VBA EXCEL] Boucle while remplir cellules

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown