Boucle while - Aide pour une débutante

Fermé
Clarinette13006 Messages postés 6 Date d'inscription mardi 15 juillet 2014 Statut Membre Dernière intervention 17 juillet 2014 - 15 juil. 2014 à 15:12
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 15 juil. 2014 à 17:10
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 juil. 2014 à 15:53
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 mardi 15 juillet 2014 Statut Membre Dernière intervention 17 juillet 2014
15 juil. 2014 à 16:36
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 mardi 15 juillet 2014 Statut Membre Dernière intervention 17 juillet 2014
15 juil. 2014 à 16:44
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 mardi 15 juillet 2014 Statut Membre Dernière intervention 17 juillet 2014
15 juil. 2014 à 17:06
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 juil. 2014 à 17:10
.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