Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Utilisation de Offset dans une boucle

rudolphe

XLDnaute Nouveau
Bonjour
J'ai une plage de cellules ("A1:H1") '
et juste en dessous une autre plage ("A2:H2")
Je voudrai qu'une boucle parcourt la plage ("A2:H2") et lorsqu'elle lorsqu'elle rencontre une cellule vide
elle copie la valeur située juste au dessus et la colle .
dit autrement si A2 est vide alors copier A1 en A2 si A2 n'est pas vide , ne rien faire
et ainsi de suite avec B2, C2...........jusqu'à H2

Mon début de code

Sub boucle()

Dim ruru As Range
For Each ruru In Range("A2:H2")
If ruru.Value = "" Then
ActiveCell.Offset(-1,0).Select
Selection Copy
Active sheet .Paste
End If

Next ruru

End Sub

Et ça marche pas!

Merci à vous
Rudolphe
 

Efgé

XLDnaute Barbatruc
Bonjour rudolphe

Une proposition au plus simple, mais pas au plus rapide pour une grande quantité de cellules.
VB:
Sub ruru_2()
Dim i&, j& 'deux variables type Long pour les boucles
Dim Ligne& ' une variable pour la dernière ligne remplie

With Sheets("Feuil1") 'Nom de feuille à adapter
    'on trouve la ligne de la dernière cellule remplie de la feuille
    'Si tu connais la ligne (X) tu mets Ligne = X
    Ligne = .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), xlValues, , 1, 2, 0).Row
    For i = 2 To Ligne 'pour chaque ligne
        For j = 1 To 8 'pour les colonnes de A à H
            'Si la cellule ligne i colonne J est vide, on la remplie avec la valeur de la cellule au-dessus (ligne i-1
            If Cells(i, j).Value = "" Then Cells(i, j).Value = Cells(i - 1, j).Value
        Next j 'prochaine colonne
    Next i 'Prochaine ligne
End With
End Sub
Cordialement
 

rudolphe

XLDnaute Nouveau

Çà marche du tonner !
Merci Efgé
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…