Boucle while - Aide pour une débutante

Clarinette13006 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
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

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Clarinette13006 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
Clarinette13006 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
Clarinette13006 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
C'est bon j'ai trouvé il y avait plein d'erreur mais ca marche :)
Merci en tout cas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
.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