Boucle remplissage interlignes

Résolu/Fermé
Yoakim - 12 nov. 2013 à 13:19
 Yoakim - 12 nov. 2013 à 13:58
Bonjour,

Je me tord l'esprit depuis ce matin sur une boucle qui ne me semble pas si compliquée que cela...

Je souhaite copier la valeur de la précédente cellule supérieure renseignée dans un ou des interlignes vides. J'ai comme repère de fin de boucle une valeur spécifiée dans autre colonne.

Exemple :

A1 = Toto
A2 = vide
A3 = Tutu
A4 = vide
A5 = vide
A6 = Tata
A7 = Vide
B7 = Valeur spécifiée

Je souhaiterai alors que jusqu'à ce la valeur spécifiée soit atteinte, A2 = Toto, A4 & A5 = Tutu, A7 = Tata.

Merci d'avance pour votre aide !

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 nov. 2013 à 13:30
Bonjour,

A adapter au besoin.

Sub CompleteCelVide()

Dim ws As Worksheet
Dim lig As Long

Set ws = Worksheets(1)
lig = 1

While ws.Range("A" & lig).Value <> ws.Range("B7").Value
If ws.Range("A" & lig + 1) = "" Then
ws.Range("A" & lig + 1) = ws.Range("A" & lig)
End If
lig = lig + 1
Wend

End Sub

:0)
0
Super ! Merci Polux31,

Après des heures de torture, cela fonctionne nicquel en sachant que j'ai adapaté, car en fait, sur ma feuille "A" et en fait "B" et "B" est en fait "C", et que je ne sais pas à l'avance sur quelle ligne de la colonne "C" sera située la valeur spécifiée déclanchant la fin de ma boucle.

Sub CompleteCelVide()

Dim ws As Worksheet
Dim lig As Long

Set ws = Worksheets(1)
lig = 1
Range("b3").Select
Do While ws.Range("B" & lig).Offset(0, 1).Value <> "Pages 1/1"
If ws.Range("B" & lig + 1) = "" Then
ws.Range("B" & lig + 1) = ws.Range("B" & lig)
End If
lig = lig + 1
Loop

End Sub
0