Boucle while - Aide pour une débutante

Clarinette13006 Messages postés 6 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  2. Clarinette13006 Messages postés 6 Statut Membre
     
    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 ?
    0
  3. Clarinette13006 Messages postés 6 Statut Membre
     
    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
    0
  4. Clarinette13006 Messages postés 6 Statut Membre
     
    C'est bon j'ai trouvé il y avait plein d'erreur mais ca marche :)
    Merci en tout cas
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    .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
    0