Boucle while - Aide pour une débutante

Bonjour à tous,

Je suis débutant sur VBA, je me forme en partie grâce à internet et en enregistrant des macros pour les comprendre et les reproduire... c'est assez lent comme méthode :)

Ce que je cherche a faire est très simple et pourtant je ne trouve pas la solution, voila pourquoi je sollicite votre aimable secours...

J'ai des données dans ma colonne B et un numéro de serie dans une cellule R10.
Je voudrais créer une boucle WHILE qui TANT QUE B n'est pas vide, la macro recopie R10 dans A....

C'est simple, mais sans les réflexes VBA c'est très très compliqué :)
Merci pour votre aide

5 réponses

  1. Bonjour

    Un exemple

    Option Explicit

    Const NF = "Feuil1"
    Const lideb = 4
    Const celns = "R10"

    Public Sub Kopie()
    Dim li As Long, noserie
    With Sheets(NF)
    noserie = .Range(celns).Value
    li = lideb
    While .Range("B" & li) <> ""
    .Range("A" & li).Value = noserie
    li = li + 1
    Wend
    End With
    End Sub

    Cdlmnt
    1. Super ! Merci bcp :)

      J'ai exactement la meme manip a faire mais a la place d'un num de série, je voudrais mettre une formule

      ce que j'ai essayé de faire en remplaçant :

      While .Range("B" & li) <> ""
      .Range("A" & li).FormulaR1C1 = "=+IF(OR(RC[-1]=20,RC[-1]=40),IF(RC[-1]=20,1,2),0)"
      li = li + 1

      Wend
      End With
      End Sub

      C'est correct ?
      1. Voici mon code et qd je le lance il me surligne le RANGE de ma deuxieme boucle alors qu'avant de mettre les deux boucles d'affilé ca marché bien

        Sub TEUformule()
        '
        ' FORMULE TEU

        ' Définition des constantes pour n*VOYAGE

        Const NF = "DATABASE"
        Const lideb = 2

        Const celns = "S10"
        Dim li As Long, noserie
        With Sheets(NF)
        noserie = .Range(celns).Value
        li = lideb

        ' Définition des constantes pour formule TEU

        Const lidebteu = 2
        lit = lidebteu

        'Creation de la colonne TEU
        Columns("G").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("G1").Select
        ActiveCell.FormulaR1C1 = "TEU"

        'Début de la boucle - jusqua vide

        While .Range("F" & lit) <> ""
        .Range("G" & lit).FormulaR1C1 = "=+IF(OR(RC[-1]=20,RC[-1]=40),IF(RC[-1]=20,1,2),0)"

        'ligne +1
        lit = lit + 1
        Wend
        End With

        ' NUMERO DE VOYAGE

        'Debut de la boucle - jusqua cells vide

        While .Range("B" & li) <> ""
        .Range("A" & li).Value = noserie

        'ligne +1
        li = li + 1
        Wend

        End With

        End Sub
        1. C'est bon j'ai trouvé il y avait plein d'erreur mais ca marche :)
          Merci en tout cas
          1. .Range("A" & li).FormulaR1C1 = "=+IF(OR(RC[-1]=20,RC[-1]=40),IF(RC[-1]=20,1,2),0)"

            Tu es en colonne A et RC[-1] fait appel à la colonne précédente, soit la colonne avant A, et là il n'y en a pas
            Pour tester la colonne B le mettrai plutôt RC[+1]

            Cdlmnt